Linux Archive

Linux Archive (http://www.linux-archive.org/)
-   ArchLinux Development (http://www.linux-archive.org/archlinux-development/)
-   -   Update db-move to support multiple pkgs (http://www.linux-archive.org/archlinux-development/340184-update-db-move-support-multiple-pkgs.html)

Ghost1227 03-11-2010 09:02 PM

Update db-move to support multiple pkgs
 
---
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[${#args[@]}-1]}" && unset args[${#args[@]}-1]
+repoto="${args[${#args[@]}-1]}" && unset args[${#args[@]}-1]
+repofrom="${args[${#args[@]}-1]}" && unset args[${#args[@]}-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 ${args[@]}; 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 ${pkgname[@]}; 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 ${pkgname[@]}; 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" ${pkgname[@]} || 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" ${pkgname[@]} || 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 ${pkgname[@]}; 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 ${pkgname[@]}; 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 ${pkgname[@]}; 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 ${pkgname[@]}; 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


All times are GMT. The time now is 06:39 AM.

VBulletin, Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.
Content Relevant URLs by vBSEO ©2007, Crawlability, Inc.