From c6fd262fbe136c5866015c3790a1d2532873bd62 Mon Sep 17 00:00:00 2001 From: "dylan.araps@gmail.com" Date: Fri, 28 Jun 2019 21:26:42 +0000 Subject: kiss-new: Started rewriting kiss. FossilOrigin-Name: 0f9191766d93e87c976eb9c3faaef125b9bd26eda82c7548880251fe2baaa5f9 --- kiss | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) (limited to 'kiss') diff --git a/kiss b/kiss index 3a2ced7..343d5db 100755 --- a/kiss +++ b/kiss @@ -3,15 +3,21 @@ # kiss - package manager for kiss linux. die() { + # Print a message and exit with '1' (error). printf '\033[31m!>\033[m %s\n' "$@" >&2 exit 1 } log() { + # Print a message with a colorful arrow to distinguish + # from other output. printf '\033[32m=>\033[m %s\n' "$@" } source_type() { + # Figure out what kind of source we are dealing with. + # This removes the need to repeat these same tests + # in each function. [ -z "$1" ] && return 1 # No file. [ -f "$1" ] && return 2 # Local file. [ -f "$src_dir/${1##*/}" ] && return 3 # Cached downloaded file. @@ -20,32 +26,44 @@ source_type() { } pkg_clean() { + # Clean up on exit or error. This removes everything related + # to the build. rm -rf -- "$mak_dir" "$pkg_dir" "$tar_dir" \ "$cac_dir/manifest-$$" "$cac_dir/checksums-$$" \ "$cac_dir/mv" "$cac_dir/mkdir" "$cac_dir/find" } pkg_search() { - set -f + # Figure out which repository a package belongs to by + # searching for directories matching the package name + # in $KISS_PATH. + + # Disable globbing with 'set -f' to ensure that the unquoted + # variable doesn't expand to anything nasty. # shellcheck disable=2086,2046 - set -- "$1" $(IFS=:; find $KISS_PATH -maxdepth 1 -name "$1") - set +f + { + set -f + set -- "$1" $(IFS=:; find $KISS_PATH -maxdepth 1 -name "$1") + set +f + } [ -z "$2" ] && die "Package '$1' not in any repository." - rep_dir=${2%/$1} + printf '%s\n' "$2" } pkg_setup() { - pkg_search "$1" + # Check that each mandatory file in the package entry exists. + pkg_location=$(pkg_search "$1") - cd "$rep_dir/$1" || die "'$rep_dir/$1' not accessible" - [ -f sources ] || die "Sources file not found." - [ -x build ] || die "Build file not found or not executable." - [ -f licenses ] || die "License file not found or empty." + cd "$pkg_location" || die "'$pkg_location' not accessible" + [ -f sources ] || die "Sources file not found." + [ -x build ] || die "Build file not found or not executable." + [ -f licenses ] || die "License file not found or empty." - read -r ver rel < version || die "Version file not found." - pkg=${name:=$1}\#$ver-$rel.tar.gz + read -r pkg_ver pkg_rel < version || die "Version file not found." + pkg_name=$1 + pkg_tar=$name\#$ver-$rel.tar.gz } pkg_depends() { -- cgit v1.2.3