diff options
author | Florian Pritz <bluewind@xinu.at> | 2014-02-01 12:40:49 +0100 |
---|---|---|
committer | Florian Pritz <bluewind@xinu.at> | 2015-05-27 15:46:04 +0200 |
commit | ba0094839da328a6820ced5fe07e32c9630b6b23 (patch) | |
tree | 4848a6f472558bbcbd361661317f6e7190a18534 | |
parent | bf9c9f045dbd0f329dc914adc2b5ef9d79870f21 (diff) | |
download | dbscripts-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-functions | 18 | ||||
-rwxr-xr-x | db-move | 25 |
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 +} @@ -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} |