diff --git a/install.sh b/install.sh index 1a1605b..3367110 100755 --- a/install.sh +++ b/install.sh @@ -44,6 +44,7 @@ if [[ $CURDIR != '/opt/miaou-bash' ]]; then fi else - apt-get install -y "${REQUIRED_PKGS[@]}" + source "$CURDIR/lib/functions.sh" + "$CURDIR/tools/idem_apt_install" "${REQUIRED_PKGS[@]}" ./init.sh fi diff --git a/lib/functions.sh b/lib/functions.sh index 17dfb30..40f64c7 100644 --- a/lib/functions.sh +++ b/lib/functions.sh @@ -18,6 +18,18 @@ function isArray { [[ "$(declare -p "$1" 2>/dev/null)" =~ "declare -a" ]] || return 1 } +function isDebian { + grep ^ID=debian /etc/os-release +} + +function isArch { + grep ^ID=arch /etc/os-release +} + +function os-release { + grep ^ID= /etc/os-release | cut -d '=' -f2 +} + function askConfirmation { case "$1" in y | Y | yes | YES) diff --git a/tools/idem_apt_install b/tools/idem_apt_install index a00468d..ac77959 100755 --- a/tools/idem_apt_install +++ b/tools/idem_apt_install @@ -1,25 +1,51 @@ #!/bin/bash +source "$MIAOU_BASH_DIR"/lib/functions.sh + function usage { local BASECMD BASECMD=$(basename "$0") echo "usage: $BASECMD " - echo 'idempotent debian package installation : update if necessary, install only if not yet done' + case $(os-release) in + debian) + echo 'idempotent debian package installation : update if necessary, install only if not yet done' + ;; + arch) + echo 'idempotent archlinux package installation : update if necessary, install only if not yet done' + ;; + esac + 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-get update -fi - -for i in "$@"; do - if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then - sudo apt-get install -y "$i" - elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then - echo "apt package <$i> already installed!" +case $(os-release) in +debian) + if [ "$(date --date='-12 hours' +%s)" -gt "$(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s)" ]; then + echo "updating repositoring..." + apt-get update fi -done + + for i in "$@"; do + if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then + sudo apt-get install -y "$i" + elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then + echo "apt package <$i> already installed!" + fi + done + ;; +arch) + for i in "$@"; do + if ! pacman -Ql "$i" 2>/dev/null | grep -q ^ii; then + sudo pacman -S "$i" + elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then + echo "pacman package <$i> already installed!" + fi + done + ;; +*) + echo "unknown os release <$(os-release)>!" && exit 2 + ;; +esac diff --git a/tools/wget_semver b/tools/wget_semver index aecc41b..f6516a2 100755 --- a/tools/wget_semver +++ b/tools/wget_semver @@ -42,7 +42,8 @@ function get_artcode { if [ -z "$(command -v git)" ]; then echo "INSTALLING PACKAGE required" - sudo apt install -y git + source "$MIAOU_BASH_DIR/lib/functions.sh" + "$CURDIR/tools/idem_apt_install" git fi case $REPO_TYPE in