diff --git a/tools/modules/functions/interface_package.sh b/tools/modules/functions/interface_package.sh new file mode 100644 index 00000000..1c9ed777 --- /dev/null +++ b/tools/modules/functions/interface_package.sh @@ -0,0 +1,46 @@ +# interface_package.sh + +declare -A module_options +module_options+=( + ["package,author"]="@dimitry-ishenko" + ["package,desc"]="Install package" + ["package,example"]="pkg_install neovim" + ["package,feature"]="pkg_install" + ["package,status"]="Interface" +) + +pkg_install() +{ + local apt=(apt-get -y) + [[ $- == *i* ]] && apt=(debconf-apt-progress -- ${apt[@]}) + ${apt[@]} install "$@" +} + +module_options+=( + ["package,author"]="@dimitry-ishenko" + ["package,desc"]="Remove package" + ["package,example"]="pkg_remove nmap" + ["package,feature"]="pkg_remove" + ["package,status"]="Interface" +) + +pkg_remove() +{ + local apt=(apt-get -y) + [[ $- == *i* ]] && apt=(debconf-apt-progress -- ${apt[@]}) + ${apt[@]} autopurge "$@" +} + +module_options+=( + ["package,author"]="@dimitry-ishenko" + ["package,desc"]="Check package status: 0 = installed, 1 = otherwise" + ["package,example"]="pkg_check mc" + ["package,feature"]="pkg_check" + ["package,status"]="Interface" +) + +pkg_check() +{ + local status=$(dpkg -s "$1" 2>/dev/null | sed -n "s/Status: //p") + ! [[ -z "$status" || "$status" = *deinstall* || "$status" = *not-installed* ]] +}