---
 db-move |  142 +++++++++++++++++++++++++++++++++------------------------------
 1 files changed, 74 insertions(+), 68 deletions(-)

diff --git a/db-move b/db-move
index d385f12..04ce7ca 100755
--- a/db-move
+++ b/db-move
@@ -8,10 +8,12 @@ fi
 . "$(dirname $0)/db-functions"
 . "$(dirname $0)/config"
 
-packagebase="$1"
-repofrom="$2"
-repoto="$3"
-_arch="$4"
+#Parse off args from the BACK of the list
+# this adds support for multiple package names
+args=($@)
+_arch="${args[${#ar...@]}-1]}" && unset args[${#ar...@]}-1]
+repoto="${args[${#ar...@]}-1]}" && unset args[${#ar...@]}-1]
+repofrom="${args[${#ar...@]}-1]}" && unset args[${#ar...@]}-1]
 
 ftppath_from="$FTP_BASE/$repofrom/os/"
 ftppath_to="$FTP_BASE/$repoto/os/"
@@ -41,85 +43,89 @@ die() {
        cleanup 1
 }
 
-trap ctrl_c 2
-trap cleanup 0
+for pkgbase in ${ar...@]}; do
+       echo "==> Moving package '$pkgbase'"
 
-repo_lock $repoto $_arch
-repo_lock $repofrom $_arch
+       trap ctrl_c 2
+       trap cleanup 0
 
-/bin/mkdir -p "$WORKDIR"
+       repo_lock $repoto $_arch
+       repo_lock $repofrom $_arch
 
-cd "$WORKDIR"
-/usr/bin/svn checkout -N $SVNREPO checkout
-cd checkout
+       /bin/mkdir -p "$WORKDIR"
 
-/usr/bin/svn up -q $packagebase
-if [ -d "$packagebase/repos/$svnrepo_from" ]; then
-       . "$packagebase/repos/$svnrepo_from/$BUILDSCRIPT"
+       cd "$WORKDIR"
+       /usr/bin/svn checkout -N $SVNREPO checkout
+       cd checkout
 
-       for i in ${pkgna...@]}; do
-               _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
-               getpkgfile "$ftppath_from/${_arch}/"$_pkgfile >/dev/null
-       done
+       /usr/bin/svn up -q $packagebase
+       if [ -d "$packagebase/repos/$svnrepo_from" ]; then
+               . "$packagebase/repos/$svnrepo_from/$BUILDSCRIPT"
 
-       if [ -d "$packagebase/repos/$svnrepo_to" ]; then
-               echo '    Removing existing package from subversion'
-               /usr/bin/svn rm --force -q "$packagebase/repos/$svnrepo_to"
-               /usr/bin/svn commit -q -m "$(basename $0): $packagebase removed 
by $(id -un) for move to $repoto"
-       fi
+               for i in ${pkgna...@]}; do
+                       _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
+                       getpkgfile "$ftppath_from/${_arch}/"$_pkgfile >/dev/null
+               done
 
-       echo '    Moving svn entries'
-       /usr/bin/svn mv -r HEAD "$packagebase/repos/$svnrepo_from" 
"$packagebase/repos/$svnrepo_to"
-       /usr/bin/svn commit -m "$(basename $0): moved $packagebase from 
[$repofrom] to [$repoto] ($_arch)"
+               if [ -d "$packagebase/repos/$svnrepo_to" ]; then
+                       echo '    Removing existing package from subversion'
+                       /usr/bin/svn rm --force -q 
"$packagebase/repos/$svnrepo_to"
+                       /usr/bin/svn commit -q -m "$(basename $0): $packagebase 
removed by $(id -un) for move to $repoto"
+               fi
 
-       echo '    Moving package file and updating DBs'
-       cd "$WORKDIR"
-       [ -d build/ ] || mkdir build
-       cd build/
+               echo '    Moving svn entries'
+               /usr/bin/svn mv -r HEAD "$packagebase/repos/$svnrepo_from" 
"$packagebase/repos/$svnrepo_to"
+               /usr/bin/svn commit -m "$(basename $0): moved $packagebase from 
[$repofrom] to [$repoto] ($_arch)"
 
-       if [ "${_arch}" == 'any' ]; then
-               arches='i686 x86_64'
-       else
-               arches="${_arch}"
-       fi
+               echo '    Moving package file and updating DBs'
+               cd "$WORKDIR"
+               [ -d build/ ] || mkdir build
+               cd build/
 
-       for architecture in $arches; do
-               # copy the db file into our working area
-               if [ -f "$ftppath_from/$architecture/$repofrom$DBEXT" ]; then
-                       /bin/cp "$ftppath_from/$architecture/$repofrom$DBEXT" .
-                       /usr/bin/repo-remove -q "$repofrom$DBEXT" ${pkgna...@]} 
|| die "Error in repo-remove"
-                       #use '*' to move the old DB too
-                       mv $repofrom$DBEXT* "$ftppath_from/$architecture"
-                       echo '    Package files will be cleaned up 
automatically'
+               if [ "${_arch}" == 'any' ]; then
+                       arches='i686 x86_64'
+               else
+                       arches="${_arch}"
                fi
 
-               if [ -f "$ftppath_to/$architecture/$repoto$DBEXT" ]; then
-                       /bin/cp "$ftppath_to/$architecture/$repoto$DBEXT" .
-               fi
+               for architecture in $arches; do
+                       # copy the db file into our working area
+                       if [ -f "$ftppath_from/$architecture/$repofrom$DBEXT" 
]; then
+                               /bin/cp 
"$ftppath_from/$architecture/$repofrom$DBEXT" .
+                               /usr/bin/repo-remove -q "$repofrom$DBEXT" 
${pkgna...@]} || die "Error in repo-remove"
+                               #use '*' to move the old DB too
+                               mv $repofrom$DBEXT* 
"$ftppath_from/$architecture"
+                               echo '    Package files will be cleaned up 
automatically'
+                       fi
 
-               for i in ${pkgna...@]}; do
-                       _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
-                       _cpkgfile=$(getpkgfile 
"$ftppath_from/$architecture/"$_pkgfile)
-                       [ $? -gt 0 ] && die
-                       /bin/cp $_cpkgfile .
-                       /usr/bin/repo-add -q "$repoto$DBEXT" $_pkgfile || die 
"Error in repo-add $_pkgfile"
-               done
-               #use '*' to move the old DB too
-               mv $repoto$DBEXT* $ftppath_to/$architecture
-               for i in ${pkgna...@]}; do
-                       _pkgfile=$(getpkgfile 
"$i-$pkgver-$pkgrel-$_arch"$PKGEXT)
-                       [ $? -gt 0 ] && die
-                       if [ "${_arch}" == "any" ]; then
-                               mv ${_pkgfile} $ftppath_to/any
-                               ln -s ../any/${_pkgfile} 
$ftppath_to/$architecture/
-                       else
-                               mv ${_pkgfile} $ftppath_to/$architecture
+                       if [ -f "$ftppath_to/$architecture/$repoto$DBEXT" ]; 
then
+                               /bin/cp 
"$ftppath_to/$architecture/$repoto$DBEXT" .
                        fi
+
+                       for i in ${pkgna...@]}; do
+                               _pkgfile="$i-$pkgver-$pkgrel-$_arch$PKGEXT"
+                               _cpkgfile=$(getpkgfile 
"$ftppath_from/$architecture/"$_pkgfile)
+                               [ $? -gt 0 ] && die
+                               /bin/cp $_cpkgfile .
+                               /usr/bin/repo-add -q "$repoto$DBEXT" $_pkgfile 
|| die "Error in repo-add $_pkgfile"
+                       done
+                       #use '*' to move the old DB too
+                       mv $repoto$DBEXT* $ftppath_to/$architecture
+                       for i in ${pkgna...@]}; do
+                               _pkgfile=$(getpkgfile 
"$i-$pkgver-$pkgrel-$_arch"$PKGEXT)
+                               [ $? -gt 0 ] && die
+                               if [ "${_arch}" == "any" ]; then
+                                       mv ${_pkgfile} $ftppath_to/any
+                                       ln -s ../any/${_pkgfile} 
$ftppath_to/$architecture/
+                               else
+                                       mv ${_pkgfile} $ftppath_to/$architecture
+                               fi
+                       done
                done
-       done
-else
-       die "Error: $packagebase is not in repo $repofrom"
-fi
+       else
+               die "Error: $packagebase is not in repo $repofrom"
+       fi
+done
 
 cleanup
 
-- 
1.7.0.2



Reply via email to