autils

Unnamed repository; edit this file 'description' to name the repository.
git clone https://codeberg.org/emmett1/autils
Log | Files | Refs | README | LICENSE

apkg-clean (1703B)


      1 #!/bin/sh
      2 #
      3 # this script is for cleanup old packages and sources
      4 #
      5 # usage:
      6 #    apkg-clean | xargs rm
      7 #
      8 
      9 [ -f /etc/apkg.conf ] && . /etc/apkg.conf
     10 
     11 scan_pkgs() {
     12 	[ "$APKG_PACKAGE_DIR" ] && allpkg=$(echo $APKG_PACKAGE_DIR/*.spm 2>/dev/null)
     13 	for i in $(apkg -s); do
     14 		. $(apkg -p $i)/abuild 2>/dev/null
     15 		if [ ! "$APKG_PACKAGE_DIR" ]; then
     16 			for p in $(apkg -p $i)/*.spm; do
     17 				[ -f $p ] || continue
     18 				[ "${p##*/}" = "$name#$version-$release.spm" ] && continue
     19 				echo $p
     20 			done
     21 		else
     22 			allpkg=$(echo $allpkg | sed "s|$APKG_PACKAGE_DIR/$name#$version-$release.spm||")
     23 		fi
     24 	done
     25 	[ "$APKG_PACKAGE_DIR" ] && echo $allpkg | tr ' ' '\n'
     26 }
     27 
     28 scan_srcs() {
     29 	[ "$APKG_SOURCE_DIR" ]  && allsrc=$(echo $APKG_SOURCE_DIR/* 2>/dev/null)
     30 	for i in $(apkg -s); do
     31 		. $(apkg -p $i)/abuild 2>/dev/null
     32 		unset keep
     33 		for s in $source; do
     34 			s=${s%::noextract}
     35 			case $s in
     36 				*::*) keep="$keep ${s%::*}";;
     37 				 */*) keep="$keep ${s##*/}";;
     38 				   *) [ "$APKG_SOURCE_DIR" ] || keep="$keep $s";;
     39 			esac
     40 		done
     41 		if [ ! "$APKG_SOURCE_DIR" ]; then
     42 			(cd $(apkg -p $i)
     43 			for f in *; do
     44 				case $f in
     45 					abuild|depends|preinstall|postinstall|*.spm) continue;;
     46 				esac
     47 				echo $keep | tr ' ' '\n' | grep -qx $f || echo $PWD/$f
     48 			done
     49 			)
     50 		else
     51 			for f in $keep; do
     52 				allsrc=$(echo $allsrc | sed "s|$APKG_SOURCE_DIR/$f||")
     53 			done
     54 		fi
     55 	done
     56 	[ "$APKG_SOURCE_DIR" ]  && echo $allsrc | tr ' ' '\n'
     57 }
     58 
     59 print_help() {
     60 	cat <<EOF	
     61 usage:
     62 	$0 [-p] [-s] | xargs rm -v
     63 	
     64 options:
     65 	-s  print sources only
     66 	-p  print packages only
     67 	
     68 EOF
     69 } 
     70 
     71 if [ "$1" ]; then
     72 	while [ "$1" ]; do
     73 		case $1 in
     74 			-p) scan_pkgs;;
     75 			-s) scan_srcs;;
     76 			-h) print_help;;
     77 		esac
     78 		shift
     79 	done
     80 else
     81 	scan_pkgs
     82 	scan_srcs
     83 fi
     84 
     85 exit 0