You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

55 lines
1.2 KiB

# idempotent apt install [package1 package2 ...]
function idem_apt_install() {
for i in $@; do
if ! (/usr/bin/dpkg-query --status "$i" >/dev/null 2>&1); then
sudo apt install -y "$i"
else
$VERBOSE && echo "${PREFIX:=}apt package <$i> already installed!"
fi
done
}
##
# return 0 (true) if array (passed by name) contains element
# usage:
# ARRAY = ( a b c )
# containsElement ARRAY 'a' => 0
containsElement() {
local -a 'arraykeys=("${!'"$1"'[@]}")'
if $(isArray $1); then
for index in ${arraykeys[*]}; do
current=$1"[$index]"
[[ "${!current}" == "$2" ]] && return 0 # found
done
return 1 # not found
else
echo >&2 "ERROR: $1 not an array!"
return 2 # not an array
fi
}
isArray() {
[[ "$(declare -p $1 2>/dev/null)" =~ "declare -a" ]] && return 0 # is an array
return 1 # not an array
}
##
#
askConfirmation() {
case "$1" in
y | Y | yes | YES)
QUESTION="(Y/n)?"
DEFAULT=0
;;
*)
QUESTION="(y/N)?"
DEFAULT=1
;;
esac
read -p "$QUESTION : " choice
case "$choice" in
y | Y | yes | YES) return 0 ;; #true
n | no | N | NO) return 1 ;; #false
*) return $DEFAULT ;;
esac
}