From 685ccfd9e0d0d89b404129eb4ec068c923b375bc Mon Sep 17 00:00:00 2001 From: Patrick Spek Date: Tue, 19 Apr 2022 15:32:55 +0200 Subject: Add documentation --- lib/util/pkg.bash | 64 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 lib/util/pkg.bash (limited to 'lib/util/pkg.bash') diff --git a/lib/util/pkg.bash b/lib/util/pkg.bash new file mode 100644 index 0000000..618ce6a --- /dev/null +++ b/lib/util/pkg.bash @@ -0,0 +1,64 @@ +#!/usr/bin/env bash + +# OS independent package management +pkg() { + local system="bashtard/pkg" + local action=$1 ; shift + local pkg + + pkg="$(config "pkg.$1")" ; shift + + if [[ -z $pkg ]] + then + crit "$system" "No package name for $pkg" + return 1 + fi + + if [[ "$(type -t "pkg_$action")" != "function" ]] + then + crit "$system" "Invalid package manager action $action" + return 1 + fi + + "pkg_$action" "$pkg" +} + +pkg_install() { + local system="bashtard/pkg/install" + + local app=$1 ; shift + + case "${BASHTARD_PLATFORM[key]}" in + freebsd) set -- /usr/sbin/pkg install -y "$app" ;; + linux-debian*) set -- apt install -y "$app" ;; + linux-gentoo) set -- emerge --ask=n --update "$app" ;; + *) + crit "$system" "No package manager configured for ${BASHTARD_PLATFORM[key]}" + return 1 + ;; + esac + + notice "$system" "$*" + # shellcheck disable=SC2068 + $@ +} + +pkg_uninstall() { + local system="bashtard/pkg/uninstall" + + local app=$1 ; shift + + case "${BASHTARD_PLATFORM[key]}" in + freebsd) set -- /usr/sbin/pkg uninstall -y "$app" ;; + linux-debian*) set -- apt remove -y "$app" ;; + linux-gentoo) set -- emerge --ask=n --unmerge "$app" ;; + *) + crit "$system" "No package manager configured for ${BASHTARD_PLATFORM[key]}" + return 1 + ;; + esac + + notice "$system" "$*" + # shellcheck disable=SC2068 + $@ +} -- cgit v1.1