diff options
| -rwxr-xr-x | spm | 60 |
1 files changed, 20 insertions, 40 deletions
@@ -1,7 +1,9 @@ #!/bin/sh -msg() { echo "[${name:-...}] $@"; } -msgerr() { echo "[${name:-...}] ERROR: $@"; exit 1; } +msg() { echo "[${name:-...}] $@"; } +msgerr() { echo "[${name:-...}] ERROR: $@"; exit 1; } +needarg() { [ "$1" ] || msgerr "This operation need argument(s). Aborted."; } +checkdbdir() { [ -d $PKGDB ] || msgerr "Database directory '$PKGDB' not exist. Aborted"; } spm_build() { needarg $1 @@ -56,9 +58,7 @@ spm_install() { msgerr "root required to install package into system." fi - if [ ! -f "$1" ]; then - msgerr "Package '$1' not exist." - fi + [ -f "$1" ] || msgerr "Package '$1' not exist." pkgname=${1##*/} @@ -66,9 +66,7 @@ spm_install() { version=${pkgname#*#}; version=${version%%-*} release=${pkgname##*-}; release=${release%.spm} - if [ "$name#$version-$release.spm" != "$pkgname" ]; then - msgerr "Valid 'spm' package format is '<name>#<version>-<release>.spm'" - fi + [ "$name#$version-$release.spm" = "$pkgname" ] || msgerr "Valid 'spm' package format is '<name>#<version>-<release>.spm'" # if upgrade but not already installed, exit if [ "$upgrade" ] && [ ! -s $PKGDB/$name ]; then @@ -147,6 +145,7 @@ spm_install() { mv -f "$SPM_ROOT/$line".new "$SPM_ROOT/$line" fi fi + [ "$SPM_VERBOSE" ] && echo "installed '$line'" echo "$line" >> $SPMDIR/install.list done @@ -156,8 +155,8 @@ spm_install() { tail -n+2 $name > $SPMDIR/old.list grep -Fxv -f $SPMDIR/install.list $SPMDIR/old.list | tac | while read -r line; do case $line in - */) grep -x "$line" * | grep -v $name: >/dev/null || rmdir "${SPM_ROOT%/}"/"$line";; - *) rm "${SPM_ROOT%/}"/"$line";; + */) grep -x "$line" * | grep -v $name: >/dev/null || rmdir $([ "$SPM_VERBOSE" ] && echo '-v') "${SPM_ROOT%/}"/"$line";; + *) rm $([ "$SPM_VERBOSE" ] && echo '-v') "${SPM_ROOT%/}"/"$line";; esac done rm -f "$SPMDIR/old.list" @@ -183,20 +182,18 @@ spm_install() { [ "$(ls -1 $PERMDIR)" ] && { cat $PERMDIR/* | while read -r perms dir; do [ -d "${SPM_ROOT%/}"/"$dir" ] || continue - chmod "$perms" "${SPM_ROOT%/}"/"$dir" + chmod $([ "$SPM_VERBOSE" ] && echo '-v') "$perms" "${SPM_ROOT%/}"/"$dir" done } # correct dir ownership [ "$(ls -1 $OWNDIR)" ] && { cat $OWNDIR/* | while read -r owner dir; do [ -d "${SPM_ROOT%/}"/"$dir" ] || continue - chown "$owner" "${SPM_ROOT%/}"/"$dir" + chown $([ "$SPM_VERBOSE" ] && echo '-v') "$owner" "${SPM_ROOT%/}"/"$dir" done } - [ -x /sbin/ldconfig ] && { - /sbin/ldconfig -r "${SPM_ROOT:-/}" - } + [ -x /sbin/ldconfig ] && /sbin/ldconfig -r "${SPM_ROOT:-/}" msg "Package '${pkgname%.spm}' $([ $upgrade ] && echo upgraded. || echo installed.)" @@ -246,8 +243,8 @@ spm_remove() { cd $PKGDB tail -n+2 $1 | tac | while read -r line; do case $line in - */) grep -x "$line" * | grep -v $1: >/dev/null || rmdir "${SPM_ROOT%/}"/"$line";; - *) rm "${SPM_ROOT%/}"/"$line";; + */) grep -x "$line" * | grep -v $1: >/dev/null || rmdir $([ "$SPM_VERBOSE" ] && echo '-v') "${SPM_ROOT%/}"/"$line";; + *) rm $([ "$SPM_VERBOSE" ] && echo '-v') "${SPM_ROOT%/}"/"$line";; esac done @@ -259,18 +256,14 @@ spm_remove() { spm_allinstalled() { checkdbdir - for i in $PKGDB/*; do - echo "${i##*/} $(head -n1 $i)" - done + (cd $PKGDB && echo * | tr ' ' '\n') exit 0 } spm_listfiles() { checkdbdir needarg $1 - if [ ! -s $PKGDB/$1 ]; then - msgerr "Package '$1' not installed." - fi + [ -s $PKGDB/$1 ] || msgerr "Package '$1' not installed." tail -n+2 $PKGDB/$1 exit 0 } @@ -279,22 +272,10 @@ spm_owner() { checkdbdir needarg $1 set -- ${1#/} - cd $PKGDB - grep $1 * | tr ':' ' ' + (cd $PKGDB && grep $1 * | tr ':' ' ') exit 0 } -checkdbdir() { - if [ ! -d $PKGDB ]; then - msgerr "Database directory '$PKGDB' not exist. Aborted" - fi -} - -needarg() { - [ "$1" ] || { - msgerr "This operation need argument(s). Aborted." - } -} spm_help() { cat << EOF @@ -308,20 +289,19 @@ options: -l <pkg> list files installed by <pkg> -r <name> remove installed <name> from system -o <file> print owner of <file> - -u <pkg> re-install/upgrade <pkg> + -u <pkg> reinstall/upgrade <pkg> environments: SPM_ROOT override default root (/) location SPM_FORCEINSTALL force package installation + SPM_VERBOSE be verbose EOF exit 0 } if [ "$SPM_ROOT" ]; then - if [ ! -d "$SPM_ROOT" ]; then - msgerr "'$SPM_ROOT' directory not exist." - fi + [ -d "$SPM_ROOT" ] || msgerr "'$SPM_ROOT' directory not exist." SPM_ROOT=$(realpath $SPM_ROOT) fi |