X-Git-Url: https://pd.if.org/git/?a=blobdiff_plain;f=zpm-repo;h=0477952a6a4d17465066d5ced34bad920f533e79;hb=be0c3329afef13f1b9e888e48790bc65bee7439e;hp=a6afe35fba5088260d542d555a58b73ed38c8d39;hpb=4f0360dec786865a87b61b2fa6260082c9d42627;p=zpackage diff --git a/zpm-repo b/zpm-repo index a6afe35..0477952 100755 --- a/zpm-repo +++ b/zpm-repo @@ -45,6 +45,13 @@ 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 @@ -92,13 +99,21 @@ update_info() { 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 - curl -f '-#' -z "$rf" -o "$rf.tmp" "$url" && - mv "$rf.tmp" "$rf" && - refresh "$repo" + curl -f '-#' -z "$rf" -o "$rf.tmp" "$url" + rv=$? else curl -f '-#' -o "$rf" "$url" && refresh "$repo" + rv=$? + fi + if [ $rv -eq 0 ]; then + test -f "$rf.tmp" && mv "$rf.tmp" "$rf" + refresh "$repo" fi done } @@ -142,6 +157,36 @@ download() { 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 ;; @@ -181,6 +226,15 @@ case $action in shift zpm list -f $repodir/$repo.repo "$@" ;; + contents) + repo=$1 + shift + zpm contents -f $repodir/$repo.repo "$@" + ;; + purge) + purge "$@" + ;; + *) echo unknown action exit 1