diff --git a/install.sh b/install.sh index 352bdac..b04cfba 100755 --- a/install.sh +++ b/install.sh @@ -55,13 +55,10 @@ function install_host() { echo "$i" already overriden fi done - source /etc/bash.bashrc - - # shellcheck disable=SC1091 - source "$CURDIR/lib/functions.sh" - idem_apt_install "${REQUIRED_PKGS[@]}" + sudo /opt/debian_bash/tools/idem_apt_install "${REQUIRED_PKGS[@]}" fi + } function install_containers() { diff --git a/lib/functions.sh b/lib/functions.sh index 1ef493c..c27c9fb 100644 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -1,18 +1,5 @@ #!/bin/bash -# idempotent apt install [package1 package2 ...] -function idem_apt_install() { - [ -z "${VERBOSE:-}" ] && VERBOSE=false - # || echo "VERBOSE is set to $VERBOSE" - for i in "$@"; do - if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then - sudo apt install -y "$i" - elif $VERBOSE; then - echo "apt package <$i> already installed!" - fi - done -} - ## # return 0 (true) if array (passed by name) contains element # usage: diff --git a/tools/idem_apt_install b/tools/idem_apt_install new file mode 100755 index 0000000..827c976 --- /dev/null +++ b/tools/idem_apt_install @@ -0,0 +1,25 @@ +#!/bin/bash + +function usage() { + local BASECMD + BASECMD=$(basename "$0") + echo "usage: $BASECMD " + echo 'idempotent debian package installation : update if necessary, install only if not yet done' + exit 1 +} + +[ "$(id -u)" -ne 0 ] && echo 'root privilege required' && exit 2 +[[ $# -lt 1 ]] && usage + +if [ "$(date --date='-12 hours' +%s)" -gt "$(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s)" ]; then + echo "updating repositoring..." + apt update +fi + +for i in "$@"; do + if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then + sudo apt install -y "$i" + elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then + echo "apt package <$i> already installed!" + fi +done