aboutsummaryrefslogtreecommitdiff
path: root/apkg-purge
diff options
context:
space:
mode:
Diffstat (limited to 'apkg-purge')
-rwxr-xr-xapkg-purge59
1 files changed, 59 insertions, 0 deletions
diff --git a/apkg-purge b/apkg-purge
new file mode 100755
index 0000000..16e66ac
--- /dev/null
+++ b/apkg-purge
@@ -0,0 +1,59 @@
+#!/bin/sh -e
+#
+# script for purge package and its dependencies from system
+#
+
+purge() {
+ for j in $(apkg -j $1); do
+ apkg -a | grep -qx $j && {
+ echo "[$1] dependent package is installed: $j"
+ error=1
+ }
+ done
+ [ "$error" ] && return 1
+
+ for i in $(apkg -d $1); do
+ apkg -a | grep -qx $i || continue
+ for d in $(apkg -j $i); do
+ [ "$d" = "$1" ] && continue
+ apkg -a | grep -qx $d && continue 2
+ done
+ if [ "$purgeit" ]; then
+ spm -r $i
+ else
+ echo $i
+ fi
+ done
+ if [ "$purgeit" ]; then
+ echo ">> $1"
+ fi
+}
+
+help() {
+ cat <<EOF
+usage:
+ $0 [-p] <pkgs>
+
+option:
+ -p remove from system
+
+EOF
+exit 0
+}
+
+while [ "$1" ]; do
+ case $1 in
+ -p) purgeit=1;;
+ -h) help;;
+ *) pkg="$pkg $1";;
+ esac
+ shift
+done
+
+for p in $pkg; do
+ apkg -p $p >/dev/null || continue # skip if package not exist in repo
+ apkg -a | grep -qx $p || continue # skip if package not installed
+ purge $p
+done
+
+exit 0