summaryrefslogtreecommitdiffstats
path: root/db-remove
diff options
context:
space:
mode:
authorAaron Griffin <aaronmgriffin@gmail.com>2008-05-14 21:07:37 +0200
committerAaron Griffin <aaronmgriffin@gmail.com>2008-05-14 21:07:37 +0200
commit01a1eedbdb93a0c7312af1543658997ae7aa680c (patch)
treeaffeb21a1f19f0f103f20fb40851b8f89121628d /db-remove
parent4a928ca7a0ed02f7be01655831eeac9158bacabe (diff)
downloaddbscripts-01a1eedbdb93a0c7312af1543658997ae7aa680c.tar.gz
dbscripts-01a1eedbdb93a0c7312af1543658997ae7aa680c.tar.xz
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-xdb-remove97
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: