diff options
-rwxr-xr-x | kiss | 29 |
1 files changed, 12 insertions, 17 deletions
@@ -118,24 +118,19 @@ pkg_find() { # Figure out which repository a package belongs to by # searching for directories matching the package name # in $KISS_PATH/*. - query=$1 match=$2 + query=$1 match=$2 IFS=:; set -- - # This ugly mess appends '/.' to the end of each path in - # '$KISS_PATH' as POSIX 'find' has no '-mindepth'/'-maxdepth'. - # See: https://unix.stackexchange.com/a/330372 - IFS=:; set -- - for path in $KISS_PATH; do set -- "$@" "$path/."; done - IFS=$old_ifs + # Word splitting is intentional here. + # shellcheck disable=2086 + for path in $KISS_PATH "$sys_db" ; do + set +f - # Find the repository containing a package. - # Searches installed packages if the package is absent - # from the repositories. This ugly mess is thanks to POSIX - # find which has no '-mindepth'/'-maxdepth', etc. - # See: https://unix.stackexchange.com/a/330372 - # See [1] at top of script. - # shellcheck disable=2046,2086 - set -- $(find "$@" "$sys_db/." \( ! -name . -prune \) \ - ! -name .git -a -name "$query" \( -type d -o -type l \)) + for path2 in "$path/"$query; do + [ -d "$path2" ] && set -f -- "$@" "$path2" + done + done + + IFS=$old_ifs # A package may also not be found due to a repository not being # readable by the current user. Either way, we need to die here. @@ -1311,7 +1306,7 @@ args() { l|list) pkg_list "$@" ;; u|update) pkg_updates ;; s|search) for pkg do pkg_find "$pkg" all; done ;; - v|version) log kiss 1.11.0-carbs ;; + v|version) log kiss 1.11.1-carbs ;; h|help|-h|--help|'') log 'kiss [a|b|c|f|i|l|r|s|u|v] [pkg] [pkg] [pkg]' |