X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-repo;fp=zpm-repo;h=0000000000000000000000000000000000000000;hb=0419c62f964b259df1c1816f5870ef62eb97ed7c;hp=76359b8e2f6679ae2f80b01ea3779d1acf6a3b30;hpb=0c2216d1e0dc8565a6bf61c9572e47bb1ae1c1fb;p=zpackage diff --git a/zpm-repo b/zpm-repo deleted file mode 100755 index 76359b8..0000000 --- a/zpm-repo +++ /dev/null @@ -1,241 +0,0 @@ -#!/bin/sh - -# control repositories - -# repo ... -# add name -# del name -# pri name -# list [-v ] [ name ... ] -# note name -# url name [url] -# packages [ name ... ] -- like zpm list -# contents [ name ... ] -- like zpm contents -# search [ name ] -- packages -# push name ckagefile ... -# pull name package ... -# extract -- extract metadata from repo -# json - extract metadata as json -# setpkgurl packageid url -# update - pull info from remote -# gc [name] - run zpm gc on repo file - -chroot=1 -pkgroot= - -while getopts :R:d: opt; do - case $opt in - R) pkgroot="$OPTARG" ;; - d) ZPMDB="$OPTARG" ;; - esac -done - -shift $((OPTIND - 1)) - -for cf in /etc/zpmrc ~/.zpmrc ./.zpmrc; do - test -r $cf && . $cf -done - -pkgroot=${pkgroot%/} - -: ${ZPMDB:=$pkgroot/var/lib/zpm/local.db} - -repodir=/var/lib/zpm/repo -mkdir -p $repodir - -export ZPMDB - -warn() { - printf '%s:' "$0" 1>&2 - printf ' %s' $* 1>&2 - printf '\n' 1>&2 - exit 1 -} - -die() { - printf '%s:' "$0" 1>&2 - printf ' %s' $* 1>&2 - printf '\n' 1>&2 - exit 1 -} - -set -e -zpm test -v $ZPMDB - -if [ $# -gt 0 ]; then - action=$1 - shift -else - action=list -fi - -select() ( - name=$(zpm quote "$1") - cols=$2 - if [ -n "$name" ]; then - where="where name = '$name'" - fi - zpm shell -separator ' ' $ZPMDB "select $cols from repository $where order by priority,name" -) - -update() ( - name=$(zpm quote "$1") - col=$2 - val=$(zpm quote "$3") - if [ -n "$name" ]; then - where="where name = '$name'" - fi - zpm shell $ZPMDB "update repository set $col = '$val' $where" -) - -refresh() { - zpm shell $ZPMDB "update repository set refreshed = strftime('%s', 'now') where name = '$1'" -} - -update_info() { - if [ $# -eq 0 ]; then - set $(select '' name) - fi - for repo in "$@"; do - url=$(select "$repo" url) - rf="$repodir/$repo.repo" - if [ -z "$url" ]; then - check_for_repo "$repo" || warn "no url for repo $repo" - return 1 - fi - if [ -f "$rf" ]; then - # TODO merge in so packages aren't deleted - zpm fetchurl -fpn -z "$rf" -o "$rf.tmp" "$url" - rv=$? - else - zpm fetchurl -fpn -o "$rf.tmp" "$url" && refresh "$repo" - rv=$? - fi - if [ $rv -eq 0 ]; then - test -f "$rf.tmp" && - zpm test "$rf.tmp" && - mv "$rf.tmp" "$rf" - refresh "$repo" - fi - done -} - -head_response_code() { - zpm fetchurl -S -z "$2" "$1" -} - -download() { - repo=$1 - shift - url=$(select "$repo" url) - base=${url%/*} - for package in "$@"; do - pkgid=$(zpm findpkg -f $repodir/$repo.repo $package) - if [ -z "$pkgid" ]; then - warn "no package found for $package" - else - mkdir -p "$repodir/$repo" - dest="$repodir/$repo/$pkgid.zpm" - fetch="$base/packages/$pkgid.zpm" - - if [ -f "$dest" ]; then - rc=$(head_response_code $fetch $dest) - if [ $rc = 304 ]; then - echo "have $pkgid" - continue - fi - echo downloading $pkgid - zpm fetchurl -f '-#' -z "$dest" -o "$dest.tmp" $fetch - mv "$dest.tmp" "$dest" - else - echo downloading $pkgid - zpm fetchurl -f '-#' -o "$dest.tmp" $fetch - mv "$dest.tmp" "$dest" - fi - fi - done -} - -purge() { - repo=$1 - shift - url=$(select "$repo" url) - base=${url%/*} - for package in "$@"; do - pkgid=$(zpm findpkg -f $repodir/$repo.repo $package) - if [ -z "$pkgid" ]; then - warn "no package found for $package" - else - mkdir -p "$repodir/$repo" - dest="$repodir/$repo/$pkgid.zpm" - - if [ -f "$dest" ]; then - rm $dest - fi - zpm rmpackage -f $repodir/$repo.repo $pkgid - fi - done -} - -check_for_repo() { - rn=$(select "$1" name) - if [ -z "$rn" ]; then - warn "no repository $1" - return 1 - fi - return 0 -} - -case $action in - list) - select '' priority,name,url,refreshed ;; - add) - name=$(zpm quote "$1") - url=$(zpm quote "$2") - zpm shell $ZPMDB "insert into repository (name,url) values ('$name', '$url')" - ;; - del) - name=$(zpm quote "$1") - zpm shell $ZPMDB "delete from repository where name = '$name'" - rm -f $repodir/$1.repo - test -d "$repodir/$repo" && rm -r "$repodir/$repo" - ;; - url) - if [ -n "$2" ]; then - update "$1" url "$2" - else - select "$1" url - fi - ;; - pri*) - if [ -n "$2" ]; then - update "$1" priority "$2" - else - select "$1" priority - fi - ;; - fetch|download) - download "$@" - ;; - update|pull) - update_info "$@" - ;; - packages) - repo=$1 - shift - zpm list -f $repodir/$repo.repo "$@" - ;; - contents) - repo=$1 - shift - zpm contents -f $repodir/$repo.repo "$@" - ;; - purge) - purge "$@" - ;; - - *) - echo unknown action - exit 1 - ;; -esac