diff options
| author | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-12-25 21:47:58 +0800 |
|---|---|---|
| committer | emmett1 <emmett1.2miligrams@protonmail.com> | 2024-12-25 21:47:58 +0800 |
| commit | 675e82b4de7267afdb5903d43ab8fcd182c06b53 (patch) | |
| tree | c0c0fd5d758e7633700fa97323ff1233eceaecb5 | |
| parent | 7702b15c4ccd839932ad1378cacb7deec67c7d0c (diff) | |
| download | autils-675e82b4de7267afdb5903d43ab8fcd182c06b53.tar.gz autils-675e82b4de7267afdb5903d43ab8fcd182c06b53.zip | |
shellchecked, fixed, added APKG_MASK and APKG_ALIAS
| -rwxr-xr-x | apkg | 105 |
1 files changed, 60 insertions, 45 deletions
@@ -134,7 +134,7 @@ _cmake_build() { -DFETCHCONTENT_FULLY_DISCONNECTED=ON \ -DCMAKE_C_FLAGS_RELEASE="$CFLAGS" \ -DCMAKE_CXX_FLAGS_RELEASE="$CXXFLAGS" \ - $build_opt $@ \ + $build_opt \ -B build .. if [ -f build.ninja ]; then ninja @@ -158,7 +158,7 @@ _configure_build() { --libdir=/usr/lib \ --infodir=/usr/share/info \ --mandir=/usr/share/man \ - $build_opt $@ + $build_opt make make DESTDIR=$PKG install } @@ -208,7 +208,7 @@ apply_patch() { msg() { ttysize=$(stty size | awk '{print $2}') - echo "[${name:-...}] $@" | fold -sw $ttysize + printf "%s\n" "[${name:-...}] $@" | fold -sw $ttysize } buildstatus() { @@ -385,7 +385,7 @@ pkg_path() { for p in $@; do for r in $APKG_REPO; do [ -f $r/$p/abuild ] && { - echo $r/$p + printf "%s\n" $r/$p break } done @@ -393,7 +393,7 @@ pkg_path() { } die() { - [ "$1" ] && echo "error: $1" + [ "$1" ] && printf "%s\n" "error: $1" ret 1 } @@ -407,11 +407,11 @@ checkdep() { [ -s $SPM_PKGDB/$ii ] && continue fi # if deps already in process list, skip, cycle deps detected - echo $process | tr ' ' '\n' | grep -qx $ii && continue + printf "%s\n" $process | tr ' ' '\n' | grep -qx $ii && continue # skip if itself in depends list [ "$ii" = "$1" ] && continue # skip if pkg already in deps list - echo $DEPS | tr ' ' '\n' | grep -x $ii && continue + printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $ii && continue # check deps checkdep $ii done @@ -422,11 +422,11 @@ checkdep() { pkg_deplist() { for i in $@; do # if already have in list deps, dont check again - if [ ! $(echo $DEPS | tr ' ' '\n' | grep -x $i) ]; then + if [ ! $(printf "%s\n" $DEPS | tr ' ' '\n' | grep -x $i) ]; then checkdep $i fi done - echo $DEPS | tr ' ' '\n' + printf "%s\n" $DEPS | tr ' ' '\n' } pkg_fsearch() { @@ -446,15 +446,30 @@ pkg_dependents() { pkg_depends() { _path=$(pkg_path $1) || return 1 [ -s $_path/depends ] || return - grep -Ev ^'(#|$)' $_path/depends | awk '{print $1}' + solve_alias $(grep -Ev ^'(#|$)' $_path/depends | awk '{print $1}') +} + +solve_alias() { + [ "$APKG_ALIAS" ] || { + printf "%s\n" $@ + return + } + while [ "$1" ]; do + d=$(printf "%s\n" $APKG_ALIAS | tr ' ' '\n' | grep ^$1:* | head -n1 | awk -F : '{print $2}') + printf "%s\n" ${d:-$1} + shift + done } pkg_outdate() { spm -a | while read -r n v; do + [ "$APKG_MASK" ] && { + printf "%s\n" "$APKG_MASK" | tr ' ' '\n' | grep -xq $n && continue + } [ "$(pkg_path $n)" ] || continue nv="$(grep ^version= $(pkg_path $n)/abuild | awk -F = '{print $2}')-$(grep ^release= $(pkg_path $n)/abuild | awk -F = '{print $2}')" [ "$nv" ] || continue - [ "$v" = "$nv" ] || echo "$n $v -> $nv" + [ "$v" = "$nv" ] || printf "%s\n" "$n $v -> $nv" done } @@ -476,13 +491,13 @@ pkg_sysup() { msg "Solving dependencies..." for p in $(pkg_deplist $od); do [ -s $SPM_PKGDB/$p ] || ni="$ni $p" - echo $od | tr ' ' '\n' | grep -qx $p && pu="$pu $p" + printf "%s\n" $od | tr ' ' '\n' | grep -qx $p && pu="$pu $p" done if [ "$ni" ]; then - newpkg=$(echo $ni | tr ' ' '\n' | wc -l) + newpkg=$(printf "%s\n" $ni | tr ' ' '\n' | wc -l) msg "Installing $newpkg new package(s): $ni" fi - totalpkg=$(echo $pu | tr ' ' '\n' | wc -l) + totalpkg=$(printf "%s\n" $pu | tr ' ' '\n' | wc -l) msg "Upgrading $totalpkg package(s): $pu" prompt_user if [ "$ni" ]; then @@ -525,7 +540,7 @@ pkg_depinstalll() { msg "Nothing to install. Exiting..." exit 0 fi - totalpkg=$(echo $installthis | tr ' ' '\n' | wc -l) + totalpkg=$(printf "%s\n" $installthis | tr ' ' '\n' | wc -l) msg "Installing $totalpkg package(s): $installthis" prompt_user $APKG -i $installthis || die @@ -679,7 +694,7 @@ printsource() { */*) sourcenamefullpath=${APKG_SOURCE_DIR}/$sourcename;; *) sourcenamefullpath=${HERE}/$sourcename;; esac - echo $sourcenamefullpath + printf "%s\n" $sourcenamefullpath done } @@ -742,7 +757,7 @@ parsesubopt() { shift; while [ "$1" ]; do case $1 in -*) break;; - *) echo $1;; + *) printf "%s\n" "$1";; esac shift done @@ -755,23 +770,23 @@ updateopts() { esac shift done - echo $newopt + printf "%s\n" "$newopt" } parseopts() { while [ "$1" ]; do case $1 in - -I) pkg_depinstalll $(parsesubopt $@); exit 0;; - -D) pkg_deplist $(parsesubopt $@); exit 0;; - -r) pkg_remove $(parsesubopt $@); exit 0;; - -p) pkg_path $(parsesubopt $@); exit 0;; - -t) pkg_trigger $(parsesubopt $@); exit 0;; + -I) pkg_depinstalll "$(parsesubopt "$@")"; exit 0;; + -D) pkg_deplist "$(parsesubopt "$@")"; exit 0;; + -r) pkg_remove "$(parsesubopt "$@")"; exit 0;; + -p) pkg_path "$(parsesubopt "$@")"; exit 0;; + -t) pkg_trigger "$(parsesubopt "$@")"; exit 0;; -U) pkg_sysup; exit 0;; - -d) pkg_depends $2; exit 0;; - -s) pkg_search $2; exit 0;; - -S) pkg_fsearch $2; exit 0;; - -j) pkg_dependents $2; exit 0;; - -a) pkg_allinstalled $2; exit 0;; + -d) pkg_depends "$2"; exit 0;; + -s) pkg_search "$2"; exit 0;; + -S) pkg_fsearch "$2"; exit 0;; + -j) pkg_dependents "$2"; exit 0;; + -a) pkg_allinstalled "$2"; exit 0;; -h) apkg_help; exit 0;; -l) pkg_outdate; exit 0;; -g) updatecsum=1;; @@ -807,36 +822,36 @@ options: -g <pkg> update package checksum -k <pkg> update package files -s <pattern> search packages + -s <pattern> search files -h print this help message environment variables: APKG_ROOT override default root (${APKG_ROOT:-/}) location APKG_CONF override default $APKG_CONF location - APKG_NOPROMPT set the variable for non-interactive use - APKG_LOG set the variable for logging the output to a file + APKG_NOPROMPT set the variable for non-interactive use + APKG_LOG set the variable for logging the output to a file EOF exit 0 } main() { - parseopts $@ - set -- $(updateopts $@) + parseopts "$@" + set -- $(updateopts "$@") for d in $APKG_PACKAGE_DIR $APKG_SOURCE_DIR $APKG_WORK_DIR; do - [ -d $d ] || { msg "Directory '$d' not exist"; exit 1; } - [ -w $d ] || { msg "Directory '$d' dont have write access"; exit 1; } + [ -d "$d" ] || { msg "Directory '$d' not exist"; exit 1; } + [ -w "$d" ] || { msg "Directory '$d' dont have write access"; exit 1; } done if [ "$pkg" ]; then for p in $pkg; do - [ "$(pkg_path $p)" ] || { + [ "$(pkg_path "$p")" ] || { msg "Package '$p' not found" continue } - #echo "[$p] package build starts..." - (cd $(pkg_path $p) && $APKG $@) - [ "$?" = 0 ] || exit 1 + #printf "%s\n" "[$p] package build starts..." + (cd "$(pkg_path "$p")" && $APKG "$@") || exit 1 done exit 0 fi @@ -857,12 +872,12 @@ main() { packagefile=$APKG_PACKAGE_DIR/$name#$version-$release.spm - if [ "$install" ] && [ -s $SPM_PKGDB/${PWD##*/} ]; then + if [ "$install" ] && [ -s "$SPM_PKGDB/${PWD##*/}" ]; then msg "Package '${PWD##*/}' already installed." exit 0 fi - if [ "$upgrade" ] && [ ! -s $SPM_PKGDB/${PWD##*/} ]; then + if [ "$upgrade" ] && [ ! -s "$SPM_PKGDB/${PWD##*/}" ]; then msg "Package '${PWD##*/}' not installed." exit 0 fi @@ -911,13 +926,13 @@ main() { if [ "$install" ] || [ "$upgrade" ]; then # run postinstall script after installed/upgraded runscript post - [ "$APKG_ROOT" ] || pkg_trigger $name + [ "$APKG_ROOT" ] || pkg_trigger "$name" fi } umask 022 -export HERE=$PWD +export HERE="$PWD" APKG=$0 SPM_PKGDB="${APKG_ROOT%/}/var/lib/spm/db" @@ -943,8 +958,8 @@ log_file="$APKG_LOG_DIR"/"$(basename "$0")_$(date +"%Y%m%d_%T")".log checksum_file="$HERE/.checksum" # source config -if [ -f $APKG_CONF ]; then - . $APKG_CONF +if [ -f "$APKG_CONF" ]; then + . "$APKG_CONF" fi # reset value, use override first, else either from config or use default @@ -954,7 +969,7 @@ APKG_SOURCE_DIR=${O_APKG_SOURCE_DIR:-$APKG_SOURCE_DIR} APKG_WORK_DIR=${O_APKG_WORK_DIR:-$APKG_WORK_DIR} if [ ! "$APKG_LOG" ]; then - main $@ + main "$@" else main "$@" 2>&1 | tee -- "$log_file" fi |