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
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 -f '-#' -z "$rf" -o "$rf.tmp" "$url"
+ rv=$?
else
- curl -f '-#' -o "$rf" "$url" && refresh "$repo"
+ zpm fetchurl -f '-#' -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() {
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 ;;
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
shift
zpm list -f $repodir/$repo.repo "$@"
;;
+ contents)
+ repo=$1
+ shift
+ zpm contents -f $repodir/$repo.repo "$@"
+ ;;
+ purge)
+ purge "$@"
+ ;;
+
*)
echo unknown action
exit 1