summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Pritz <bluewind@xinu.at>2014-02-01 12:40:49 +0100
committerFlorian Pritz <bluewind@xinu.at>2015-05-27 15:46:04 +0200
commitba0094839da328a6820ced5fe07e32c9630b6b23 (patch)
tree4848a6f472558bbcbd361661317f6e7190a18534
parentbf9c9f045dbd0f329dc914adc2b5ef9d79870f21 (diff)
downloaddbscripts-ba0094839da328a6820ced5fe07e32c9630b6b23.tar.gz
dbscripts-ba0094839da328a6820ced5fe07e32c9630b6b23.tar.xz
make db-move work with pkgnames
Signed-off-by: Florian Pritz <bluewind@xinu.at>
-rw-r--r--db-functions18
-rwxr-xr-xdb-move25
2 files changed, 34 insertions, 9 deletions
diff --git a/db-functions b/db-functions
index 05ff1b9..47d23ef 100644
--- a/db-functions
+++ b/db-functions
@@ -598,3 +598,21 @@ arch_history_commit() {
popd
}
+pkgentry_from_db() {
+ local repo="$1"
+ local arch="$2"
+ local pkgname="$3"
+
+ local db="$FTP_BASE/$repo/os/$arch/$repo$DBEXT"
+ local line
+
+ for line in $(tar tf "$db" | sed -n 's#^\([^/]*\)/$#\1#p'); do
+ local name=${line##*/}
+ if [[ ${line%-*-*} = $pkgname ]]; then
+ echo $name
+ return 0
+ fi
+ done
+
+ return 1
+}
diff --git a/db-move b/db-move
index 6faadbc..1a69383 100755
--- a/db-move
+++ b/db-move
@@ -12,7 +12,7 @@ args=(${@})
repo_from="${args[0]}"
repo_to="${args[1]}"
arch="${args[2]}"
-pkgs=("${args[@]:3}")
+pkgnames=("${args[@]:3}")
ftppath_from="${FTP_BASE}/${repo_from}/os/"
ftppath_to="${FTP_BASE}/${repo_to}/os/"
@@ -28,16 +28,23 @@ done
msg "Moving packages from [${repo_from}] to [${repo_to}]..."
-# TODO: resolve pkgname to pkgfile for db_add
-# and actually make this script callable
-# with a pkgname rather than a pkgfile
-for pkg in "${pkgs[@]}"; do
- pkgname=$(getpkgname "$FTP_BASE/$PKGPOOL/$pkg")
- arch_db_add "${repo_to}" "$arch" "$pkg"
- arch_db_remove "${repo_from}" "$arch" "$pkgname"
+for pkgname in "${pkgnames[@]}"; do
+ pkgentry=$(pkgentry_from_db "$repo_from" "$arch" "$pkgname")
+ pkgs=($(getpkgfiles "$ftppath_from$arch/$pkgentry"*${PKGEXT}))
+
+ if [[ -z $pkgentry ]]; then
+ warning "Failed to detect pkgentry for $pkgname"
+ continue
+ fi
+
+ for pkg in "${pkgs[@]}"; do
+ pkgname=$(getpkgname "$pkg")
+ arch_db_add "${repo_to}" "$arch" "${pkg##*/}"
+ arch_db_remove "${repo_from}" "$arch" "$pkgname"
+ done
done
-arch_history_commit "db-move: ${pkgs[@]}"
+arch_history_commit "db-move: $repo_from -> $repo_to: ${pkgnames[@]}"
for pkgarch in ${ARCHES[@]}; do
repo_unlock ${repo_from} ${pkgarch}