--- 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