]> pd.if.org Git - zpackage/blobdiff - zpm-repo
let newpackage set additional fields
[zpackage] / zpm-repo
index a6afe35fba5088260d542d555a58b73ed38c8d39..76359b8e2f6679ae2f80b01ea3779d1acf6a3b30 100755 (executable)
--- 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,22 +99,29 @@ 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"
+                       zpm fetchurl -fpn -z "$rf" -o "$rf.tmp" "$url"
+                       rv=$?
                else
-                       curl -f '-#' -o "$rf" "$url" && refresh "$repo"
+                       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
 }
 
-# response=$(curl --write-out %{http_code} --silent --output /dev/null servername)
-# --head
-
 head_response_code() {
-       curl --write-out '%{http_code}' --silent --output /dev/null -z $2 $1
+       zpm fetchurl -S -z "$2" "$1"
 }
 
 download() {
@@ -131,17 +145,47 @@ download() {
                                        continue
                                fi
                                echo downloading $pkgid
-                               curl -f '-#' -z "$dest" -o "$dest.tmp" $fetch
+                               zpm fetchurl -f '-#' -z "$dest" -o "$dest.tmp" $fetch
                                mv "$dest.tmp" "$dest"
                        else
                                echo downloading $pkgid
-                               curl -f '-#' -o "$dest.tmp" $fetch
+                               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 ;;
@@ -154,7 +198,7 @@ case $action in
                name=$(zpm quote "$1")
                zpm shell $ZPMDB "delete from repository where name = '$name'"
                rm -f $repodir/$1.repo
-               # TODO delete caches
+               test -d "$repodir/$repo" && rm -r "$repodir/$repo"
                ;;
        url)
                if [ -n "$2" ]; then
@@ -181,6 +225,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