aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoremmett1 <emmett1.2miligrams2protonmail.com>2025-02-04 00:31:10 +0800
committeremmett1 <emmett1.2miligrams2protonmail.com>2025-02-04 00:31:10 +0800
commit51f58123567aa84165fdbd6d2f0da97ddacd665b (patch)
treeaca020ee03a933aaecd480351e5a4fea6ee4f9e4
parentae19b384393a82650dae9d098eb6c1b801daeddd (diff)
downloadspm-51f58123567aa84165fdbd6d2f0da97ddacd665b.tar.gz
spm-51f58123567aa84165fdbd6d2f0da97ddacd665b.zip
added SPM_VERBOSE and simplify some commands
-rwxr-xr-xspm60
1 files changed, 20 insertions, 40 deletions
diff --git a/spm b/spm
index 42521a2..6fcaf5c 100755
--- a/spm
+++ b/spm
@@ -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