quick fix

This commit is contained in:
pvincent
2026-08-08 13:24:52 +04:00
parent 141dcecc24
commit 57414fd398
+39 -40
View File
@@ -1,53 +1,52 @@
#!/bin/bash #!/usr/bin/env miaou-bash
function usage { function usage {
local BASECMD local BASECMD
BASECMD=$(basename "$0") BASECMD=$(basename "$0")
echo "usage: $BASECMD <packages...>" echo "usage: $BASECMD <packages...>"
case $(os-release) in case $(os-release) in
debian) debian)
echo 'idempotent debian package installation : update if necessary, install only if not yet done' echo 'idempotent debian package installation : update if necessary, install only if not yet done'
;; ;;
arch) arch)
echo 'idempotent archlinux package installation : update if necessary, install only if not yet done' echo 'idempotent archlinux package installation : update if necessary, install only if not yet done'
;; ;;
esac esac
exit 1 exit 1
} }
BASEDIR=$(dirname "$0") [ "$UID" -ne 0 ] && echo 'root privilege required' && exit 2
source "$BASEDIR"/../lib/functions.bash
[ "$(id -u)" -ne 0 ] && echo 'root privilege required' && exit 2
[[ $# -lt 1 ]] && usage [[ $# -lt 1 ]] && usage
source "$MIAOU_BASH_DIR"/lib/functions.bash
case $(os-release) in case $(os-release) in
debian | ubuntu | linuxmint) debian | ubuntu | linuxmint)
if [ "$(date --date='-12 hours' +%s)" -gt "$(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s)" ]; then if [ "$(date --date='-12 hours' +%s)" -gt "$(date -d "$(stat -c %y /var/lib/apt/lists/partial)" +%s)" ]; then
echo "updating repositoring..." echo "updating repositoring..."
apt-get update apt-get update
fi fi
for i in "$@"; do for i in "$@"; do
if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then if ! dpkg -l "$i" 2>/dev/null | grep -q ^ii; then
sudo apt-get install -y "$i" apt-get install -y "$i"
elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then
echo "apt package <$i> already installed!" echo "apt package <$i> already installed!"
fi fi
done done
;; ;;
arch) arch)
sudo pacman -Syyu --noconfirm pacman -Syyu --noconfirm
for i in "$@"; do for i in "$@"; do
if ! pacman -Ql "$i" &>/dev/null; then if ! pacman -Ql "$i" &>/dev/null; then
sudo pacman -S --noconfirm "$i" pacman -S --noconfirm "$i"
elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then elif [ -n "${VERBOSE+x}" ] && $VERBOSE; then
echo "pacman package <$i> already installed!" echo "pacman package <$i> already installed!"
fi fi
done done
;; ;;
*) *)
echo "unknown os release <$(os-release)>!" && exit 2 echo "unknown os release <$(os-release)>!" && exit 2
;; ;;
esac esac