forked from kiss-community/kiss
kiss: Add function to pop list itemS
This commit is contained in:
parent
bf78f79496
commit
6bb6cf6752
37
kiss
37
kiss
@ -69,6 +69,15 @@ esc() {
|
||||
"$(printf %s "$2" | sed 's/[\/&]/\\&/g')"
|
||||
}
|
||||
|
||||
pop() {
|
||||
# Remove an item from a "string list". This allows us
|
||||
# to remove a 'sed' call and reuse this code throughout.
|
||||
del=$1
|
||||
shift "$(($# ? 1 : 0))"
|
||||
|
||||
for i; do [ "$i" = "$del" ] || printf %s " $i "; done
|
||||
}
|
||||
|
||||
pkg_lint() {
|
||||
# Check that each mandatory file in the package entry exists.
|
||||
log "$1" "Checking repository files"
|
||||
@ -495,11 +504,9 @@ pkg_build() {
|
||||
# If an explicit package is a dependency of another explicit
|
||||
# package, remove it from the explicit list as it needs to be
|
||||
# installed as a dependency.
|
||||
# shellcheck disable=2086
|
||||
for pkg; do
|
||||
# There's no better way to remove a word from a string in
|
||||
# POSIX 'sh' sadly.
|
||||
contains "$deps" "$pkg" &&
|
||||
explicit=$(printf %s "$explicit" | sed "s/ $pkg / /g")
|
||||
contains "$deps" "$pkg" && explicit=$(pop "$pkg" $explicit)
|
||||
done
|
||||
|
||||
# See [1] at top of script.
|
||||
@ -534,7 +541,7 @@ pkg_build() {
|
||||
# list. No better way than using 'sed' in POSIX 'sh'.
|
||||
# See [1] at top of script.
|
||||
# shellcheck disable=2046,2086
|
||||
set -- $(printf %s " $* " | sed "s/ $pkg / /")
|
||||
set -- $(pop "$pkg" "$@")
|
||||
}
|
||||
}
|
||||
done
|
||||
@ -706,22 +713,10 @@ pkg_conflicts() {
|
||||
|
||||
p_name=$2
|
||||
|
||||
# Generate a list of all installed package manifests.
|
||||
set +f
|
||||
set -f -- "$sys_db"/*/manifest
|
||||
|
||||
# Filter the manifest list and remove the previously
|
||||
# installed version of the package if it exists.
|
||||
for pkg; do
|
||||
i_name=${pkg%/*}
|
||||
i_name=${i_name##*/}
|
||||
|
||||
shift "$(($# ? 1 : 0))"
|
||||
|
||||
[ "$p_name" = "$i_name" ] && continue
|
||||
|
||||
set -- "$@" "$pkg"
|
||||
done
|
||||
# Generate a list of all installed package manifests
|
||||
# and remove the current package from the list.
|
||||
# shellcheck disable=2046,2086
|
||||
set -- $(set +f; pop "$sys_db/$p_name/manifest" "$sys_db"/*/manifest)
|
||||
|
||||
[ -s "$cac_dir/$pid-m" ] || return 0
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user