aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremmett1 <emmett1.2miligrams@protonmail.com>2024-05-27 01:05:56 +0800
committeremmett1 <emmett1.2miligrams@protonmail.com>2024-05-27 01:05:56 +0800
commitbcb55a8700fccd69af1c854c128146d41fbac182 (patch)
treec671ee2d898857b394952960f82ea9a91106137d
parent0d120f364b2b3d4727c916aefe12c2fe36ac586a (diff)
downloadautils-bcb55a8700fccd69af1c854c128146d41fbac182.tar.gz
autils-bcb55a8700fccd69af1c854c128146d41fbac182.zip
updated
-rwxr-xr-xapkg15
-rwxr-xr-xapkg-clean85
-rwxr-xr-xapkg-foreign5
-rwxr-xr-xapkg-purge59
4 files changed, 156 insertions, 8 deletions
diff --git a/apkg b/apkg
index 651f1e2..407d654 100755
--- a/apkg
+++ b/apkg
@@ -407,12 +407,10 @@ pkg_deplist() {
}
pkg_fsearch() {
- #set -x
for r in $APKG_REPO; do
rr="$rr $r/*/.files"
done
- grep $1 $rr 2>/dev/null | tr ':' ' ' | awk '{print $1,$4}' | sed 's,/.files,,g' #| rev | cut -d / -f 2 | rev
- #cut -d ' ' -f3- $rr | grep $1
+ grep $1 $rr 2>/dev/null | tr ':' ' ' | awk '{print $1,$4}' | sed 's,/.files,,g'
}
pkg_dependents() {
@@ -457,10 +455,7 @@ pkg_sysup() {
done
if [ "$ni" ]; then
newpkg=$(echo $ni | tr ' ' '\n' | wc -l)
- msg "Installing $newpkg new package(s)."
- echo
- echo $ni
- echo
+ msg "Installing $newpkg new package(s): $ni"
fi
totalpkg=$(echo $pu | tr ' ' '\n' | wc -l)
msg "Upgrading $totalpkg package(s): $pu"
@@ -649,7 +644,11 @@ main() {
. ./info
[ "$name" ] || die "name is empty"
[ "$version" ] || die "version is empty"
- [ "$release" ] || die "release is empty"
+ [ "$release" ] || die "release is empty"
+ [ "$name" = "${PWD##*/}" ] || {
+ msg "'name' should be same as package directory name (${PWD##*/})."
+ exit 1
+ }
export name version release
packagefile=$APKG_PACKAGE_DIR/$name#$version-$release.spm
diff --git a/apkg-clean b/apkg-clean
new file mode 100755
index 0000000..06ff1c6
--- /dev/null
+++ b/apkg-clean
@@ -0,0 +1,85 @@
+#!/bin/sh
+#
+# this script is for cleanup old packages and sources
+#
+# usage:
+# apkg-clean | xargs rm
+#
+
+[ -f /etc/apkg.conf ] && . /etc/apkg.conf
+
+scan_pkgs() {
+ [ "$APKG_PACKAGE_DIR" ] && allpkg=$(echo $APKG_PACKAGE_DIR/*.spm 2>/dev/null)
+ for i in $(apkg -s); do
+ . $(apkg -p $i)/info
+ if [ ! "$APKG_PACKAGE_DIR" ]; then
+ for p in $(apkg -p $i)/*.spm; do
+ [ -f $p ] || continue
+ [ "${p##*/}" = "$name#$version-$release.spm" ] && continue
+ echo $p
+ done
+ else
+ allpkg=$(echo $allpkg | sed "s|$APKG_PACKAGE_DIR/$name#$version-$release.spm||")
+ fi
+ done
+ [ "$APKG_PACKAGE_DIR" ] && echo $allpkg | tr ' ' '\n'
+}
+
+scan_srcs() {
+ [ "$APKG_SOURCE_DIR" ] && allsrc=$(echo $APKG_SOURCE_DIR/* 2>/dev/null)
+ for i in $(apkg -s); do
+ . $(apkg -p $i)/info
+ unset keep
+ for s in $source; do
+ s=${s%::noextract}
+ case $s in
+ *::*) keep="$keep ${s%::*}";;
+ */*) keep="$keep ${s##*/}";;
+ *) [ "$APKG_SOURCE_DIR" ] || keep="$keep $s";;
+ esac
+ done
+ if [ ! "$APKG_SOURCE_DIR" ]; then
+ (cd $(apkg -p $i)
+ for f in *; do
+ case $f in
+ info|depends|prebuild|build|postbuild|preinstall|postinstall|*.spm) continue;;
+ esac
+ echo $keep | tr ' ' '\n' | grep -qx $f || echo $PWD/$f
+ done
+ )
+ else
+ for f in $keep; do
+ allsrc=$(echo $allsrc | sed "s|$APKG_SOURCE_DIR/$f||")
+ done
+ fi
+ done
+ [ "$APKG_SOURCE_DIR" ] && echo $allsrc | tr ' ' '\n'
+}
+
+print_help() {
+ cat <<EOF
+usage:
+ $0 [-p] [-s] | xargs rm -v
+
+options:
+ -s print sources only
+ -p print packages only
+
+EOF
+}
+
+if [ "$1" ]; then
+ while [ "$1" ]; do
+ case $1 in
+ -p) scan_pkgs;;
+ -s) scan_srcs;;
+ -h) print_help;;
+ esac
+ shift
+ done
+else
+ scan_pkgs
+ scan_srcs
+fi
+
+exit 0
diff --git a/apkg-foreign b/apkg-foreign
new file mode 100755
index 0000000..a412705
--- /dev/null
+++ b/apkg-foreign
@@ -0,0 +1,5 @@
+#!/bin/sh
+
+for i in $(spm -a | awk '{print $1}'); do
+ [ $(apkg -p $i) ] || echo $i
+done
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