diff options
author | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-05-14 15:07:37 -0400 |
---|---|---|
committer | Aaron Griffin <aaronmgriffin@gmail.com> | 2008-05-14 15:07:37 -0400 |
commit | 01a1eedbdb93a0c7312af1543658997ae7aa680c (patch) | |
tree | affeb21a1f19f0f103f20fb40851b8f89121628d /db-remove | |
parent | 4a928ca7a0ed02f7be01655831eeac9158bacabe (diff) |
Add new db-remove script
This script deletes by package NAME only. Additionally, it
also removes from svn. The goal is to simplify the process
of removing packages.
Signed-off-by: Aaron Griffin <aaronmgriffin@gmail.com>
Diffstat (limited to 'db-remove')
-rwxr-xr-x | db-remove | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/db-remove b/db-remove new file mode 100755 index 0000000..c69e179 --- /dev/null +++ b/db-remove @@ -0,0 +1,97 @@ +#!/bin/bash + +if [ $# -ne 3 ]; then + echo "usage: $(basename $0) <pkgname> <arch> <reponame>" + exit 1 +fi + +if [ -f "/etc/makepkg.conf" ]; then + #Get some config info + . /etc/makepkg.conf +else + echo "/etc/makepkg.conf does not exist!" + exit 1 +fi + +packagename="$1" +reponame="$2" +arch="$3" + +export CARCH="$arch" + +##### Arch specific stuff. TODO make this configurable ##### +ftppath="/home/ftp/$reponame/os/$arch/" +svnpath="file:///home/svn-packages" +svnrepo="$reponame-$arch" +############################################################ + +[ "$UID" = "" ] && UID=$(uid) + +WORKDIR="/tmp/db-remove.$svnrepo.$UID" +LOCKFILE="/tmp/.repolck.$arch.$reponame" + +cleanup() { + # unlock + rm -f "$LOCKFILE" + rm -rf "$WORKDIR" + [ "$1" ] && exit $1 +} + +ctrl_c() { + echo "Interrupted" >&2 + cleanup 0 +} + +die() { + echo "$*" >&2 + cleanup 1 +} + +# check for locks +if [ -f "$LOCKFILE" ]; then + owner="$(/usr/bin/stat -c %U $LOCKFILE)" + echo "error: db generation is already in progress (started by $owner)" + exit 1 +fi + +trap ctrl_c 2 +trap cleanup 0 + +/bin/touch "$LOCKFILE" +/bin/mkdir -p "$WORKDIR" + + +echo "==> Removing package '$packagename' from '$reponame'..." >&2 + +cd "$WORKDIR" +/usr/bin/svn checkout -N $svnpath checkout +cd checkout + +/usr/bin/svn up -q $packagename +if [ -d "$packagename/repos/$svnrepo" ]; then + echo " Removing from subversion" + /usr/bin/svn rm --force -q "$packagename/repos/$svnrepo" + /usr/bin/svn commit -q -m "$(basename $0): $packagename removed by $(id -un)" +fi + +cd "$WORKDIR" +[ -d build/ ] || mkdir build + +# copy the db file into our working area +if [ -f "$ftppath/$reponame.db.tar.$DB_COMPRESSION" ]; then + cp "$ftppath/$reponame.db.tar.$DB_COMPRESSION" build/ +else + echo "No database found at '$ftpdir', nothing more to do" + exit 0 +fi + +echo " Removing from $reponame DB file" +cd build/ +/usr/bin/repo-remove "$reponame.db.tar.$DB_COMPRESSION" $packagename + +cp "$reponame.db.tar.$DB_COMPRESSION" "$ftppath/" + +echo "Package files will be cleaned up automatically" + +cleanup +# vim: set ts=4 sw=4 noet ft=sh: |