diff options
Diffstat (limited to 'apkg-purge')
| -rwxr-xr-x | apkg-purge | 59 |
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 |