From 66c363a3b8b26fb9fcd37b94ab7cf3b704f9fc05 Mon Sep 17 00:00:00 2001 From: Dylan Araps Date: Mon, 14 Oct 2019 23:40:52 +0300 Subject: [PATCH] kiss: be more explicit (and less greedy) with tar archives. --- kiss | 37 +++++++++++++++++++++---------------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/kiss b/kiss index 91935b9..e4c4a3f 100755 --- a/kiss +++ b/kiss @@ -173,24 +173,29 @@ pkg_extract() { while read -r src dest; do mkdir -p "$mak_dir/$1/$dest" && cd "$mak_dir/$1/$dest" - # Only 'tar' archives are currently supported for extraction. - # Any other file-types are simply copied to '$mak_dir' which - # allows for manual extraction. - if [ -z "${src##*.tar*}" ] || [ -z "${src##*.tgz}" ]; then - tar xf "$src_dir/$1/${src##*/}" --strip-components 1 \ - || die "$1" "Couldn't extract ${src##*/}" + case $src in + # Only 'tar' archives are currently supported for extraction. + # Any other file-types are simply copied to '$mak_dir' which + # allows for manual extraction. + *://*.tar|*://*.tar.??|*://*.tar.???|*://*.tar.????|*://*.tgz) + tar xf "$src_dir/$1/${src##*/}" --strip-components 1 || + die "$1" "Couldn't extract ${src##*/}" + ;; - # Local file. - elif [ -f "$repo_dir/$src" ]; then - cp -f "$repo_dir/$src" . + *) + # Local file. + if [ -f "$repo_dir/$src" ]; then + cp -f "$repo_dir/$src" . - # Remote file. - elif [ -f "$src_dir/$1/${src##*/}" ]; then - cp -f "$src_dir/$1/${src##*/}" . + # Remote file. + elif [ -f "$src_dir/$1/${src##*/}" ]; then + cp -f "$src_dir/$1/${src##*/}" . - else - die "$1" "Local file $src not found" - fi + else + die "$1" "Local file $src not found" + fi + ;; + esac done < "$repo_dir/sources" } @@ -1019,7 +1024,7 @@ args() { ;; v|version|-v|--version) - log kiss 0.53.1 + log kiss 0.53.2 ;; h|help|-h|--help|'')