From 1548063b6ac54affecccc19872b1ffeed64f0887 Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Sun, 22 Mar 2020 13:44:01 +0100 Subject: Work out (most?) issues reported by shellcheck --- lib/util.bash | 67 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 40 insertions(+), 27 deletions(-) (limited to 'lib/util.bash') diff --git a/lib/util.bash b/lib/util.bash index 025aeba..8ca1a5e 100644 --- a/lib/util.bash +++ b/lib/util.bash @@ -1,5 +1,28 @@ #!/usr/bin/env bash +# Change the working directory. In usage, this is the same as using cd, +# however, it will make additional checks to ensure everything is going fine. +chgdir() { + cd -- "$1" || die "Failed to change directory to $1" +} + +# Read a particular value from a key/value configuration file. Using this +# function introduces a dependency on awk. +config_etc_kv() { + local file="$BASEDIR/etc/$1" + shift + + if [[ ! -f $file ]] + then + crit "Tried to read value for $1 from $file, but $file does not exist" + return + fi + + debug "Reading value for $1 from $file" + + awk -F= '$1 == "'"$1"'" { print $NF }' "$file" +} + # Log a message as error, and exit the program. This is intended for serious # issues that prevent the script from running correctly. The exit code can be # specified with -i, or will default to 1. @@ -11,13 +34,14 @@ die() { do case "$opt" in i) code=$OPTARG ;; + *) alert "Unused argument specified: $opt" ;; esac done shift $(( OPTIND -1 )) alert "$@" - exit ${code:-1} + exit "${code:-1}" } # Fetch a file from an URL. Using this function introduces a dependency on curl. @@ -29,12 +53,13 @@ fetch() { do case "$opt" in o) buffer=$OPTARG ;; + *) alert "Unused argument specified: $opt" ;; esac done shift $(( OPTIND -1 )) - [[ -z $buffer ]] && buffer="$(tempfile)" + [[ -z $buffer ]] && buffer="$(tmpfile)" notice "Downloading $1 to $buffer" @@ -49,27 +74,12 @@ fetch() { return $exit_code } -# Read a particular value from a key/value configuration file. Using this -# function introduces a dependency on awk. -config_etc_kv() { - local file="$BASEDIR/etc/$1" - shift - - if [[ ! -f $file ]] - then - crit "Tried to read value for $1 from $file, but $file does not exist" - return - fi - - debug "Reading value for $1 from $file" - - awk -F= '$1 == "'"$1"'" { print $NF }' "$file" -} - # Create a temporary directory. Similar to tempfile, but you'll get a directory # instead. -tempdir() { - local dir="$(mktemp -d)" +tmpdir() { + local dir + + dir="$(mktemp -d)" # Ensure the file was created succesfully if [[ ! -d "$dir" ]] @@ -79,26 +89,28 @@ tempdir() { debug "Temporary file created at $dir" - printf "$dir" + printf "%s" "$dir" } # Create a temporary file. In usage, this is no different from mktemp itself, # however, it will apply additional checks to ensure everything is going # correctly, and the files will be cleaned up automatically at the end. -tempfile() { +tmpfile() { local OPTIND local extension="tmp" + local file while getopts ":x:" opt do case "$opt" in x) extension=$OPTARG ;; + *) alert "Unused argument specified: $opt" ;; esac done shift $(( OPTIND -1 )) - local file="$(mktemp --suffix ".$extension")" + file="$(mktemp --suffix ".$extension")" # Ensure the file was created succesfully if [[ ! -f "$file" ]] @@ -108,11 +120,12 @@ tempfile() { debug "Temporary file created at $file" - printf "$file" + printf "%s" "$file" } +export -f chgdir export -f config_etc_kv export -f die export -f fetch -export -f tempdir -export -f tempfile +export -f tmpdir +export -f tmpfile -- cgit v1.1