diff options
| author | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-05-27 01:05:56 +0800 |
|---|---|---|
| committer | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-05-27 01:05:56 +0800 |
| commit | bcb55a8700fccd69af1c854c128146d41fbac182 (patch) | |
| tree | c671ee2d898857b394952960f82ea9a91106137d | |
| parent | 0d120f364b2b3d4727c916aefe12c2fe36ac586a (diff) | |
| download | autils-bcb55a8700fccd69af1c854c128146d41fbac182.tar.gz autils-bcb55a8700fccd69af1c854c128146d41fbac182.zip | |
updated
| -rwxr-xr-x | apkg | 15 | ||||
| -rwxr-xr-x | apkg-clean | 85 | ||||
| -rwxr-xr-x | apkg-foreign | 5 | ||||
| -rwxr-xr-x | apkg-purge | 59 |
4 files changed, 156 insertions, 8 deletions
@@ -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 |