Merge pull request #1 from pyr0ball/newfeature-pkg-management

[New Feature] package management
This commit is contained in:
Alan Weinstock 2023-05-27 13:56:54 -07:00 committed by GitHub
commit 1e83f6977e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

127
functions
View file

@ -2,7 +2,7 @@
# pyr0ball script functions library
# Initial Vars
functionsrev=1.3.0
functionsrev=1.4.0
#scriptname="${BASH_SOURCE[0]##*/}"
#rundir="${BASH_SOURCE[0]%/*}"
#rundir_absolute=$(cd $rundir && pwd)
@ -1072,7 +1072,7 @@ check-prbl-version(){
vercomp
}
compare-versions() {
compare-versions(){
vercomp $1 $2
case $? in
0) op='=';;
@ -1087,4 +1087,125 @@ compare-versions() {
fi
}
set-boxtype
identify-system(){
# OS distribution auto-detection
if type lsb_release >/dev/null 2>&1; then
# linuxbase.org
ID=$(lsb_release -si)
OS=$(lsb_release -si)
VER=$(lsb_release -sr)
elif [ -f /etc/debian_version ]; then
# Older Debian/Ubuntu/etc.
ID=debian
OS=Debian
VER=$(cat /etc/debian_version)
elif [ -f /etc/lsb-release ]; then
# For Arch and some versions of Debian/Ubuntu without lsb_release command
. /etc/lsb-release
ID=$DISTRIB_ID
OS=$DISTRIB_ID
VER=$DISTRIB_RELEASE
VER=${VER:-$LSB_VERSION}
elif [ -f /etc/os-release ]; then
# freedesktop.org arch and systemd
. /etc/os-release
ID=${ID:-VERSION_ID}
ID=${ID:-VERSION}
OS=$NAME
VER=$VERSION_ID
VER=${VER:-$VERSION}
elif [ -f /etc/redhat-release ]; then
# Older Red Hat, CentOS, etc.
OS=$(cat /etc/redhat-release | awk '{print $1}')
else
# Fall back to uname, e.g. "Linux <version>", also works for BSD, etc.
OS=$(uname -s)
VER=$(uname -r)
fi
}
ID(){
boxborder \
"ID: $ID" \
"OS: $OS" \
"VER: $VER"
}
install_packages(){
# Separate package names and file arguments
declare -a packages=()
declare -a offline_packages=()
for arg in "$@"; do
if [[ -f $arg ]]; then
offline_packages+=("$arg")
else
packages+=("$arg")
fi
done
# Identify which distro is being run
identify-system
# Match distribution with available utilities
# TODO: Add package name transformer lists
case $ID in
amzn | centos | fedora | rhel)
if [ "${#packages[@]}" -gt 0 ]; then
sudo yum install -y "${packages[@]}"
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
sudo rpm -i "${packages[@]}"
fi
;;
arch | Arch | manjaro)
if [ "${#packages[@]}" -gt 0 ]; then
sudo pacman -Syu
sudo pacman -S "${packages[@]}"
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
sudo pacman -U "${offline_packages[@]}"
fi
;;
debian | ubuntu | Ubuntu)
if [ "${#packages[@]}" -gt 0 ]; then
sudo apt-get update
sudo apt-get install "${packages[@]}"
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
sudo dpkg -i "${offline_packages[@]}"
fi
;;
opensuse | sles)
if [ "${#packages[@]}" -gt 0 ]; then
sudo zypper refresh
sudo zypper install "${packages[@]}"
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
sudo rpm -i "${offline_packages[@]}"
fi
;;
slackware)
if [ "${#packages[@]}" -gt 0 ]; then
for package in "${packages[@]}"; do
sudo installpkg "$package"
done
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
for package_file in "${offline_packages[@]}"; do
sudo installpkg "$package_file"
done
fi
;;
brew)
if [ "${#packages[@]}" -gt 0 ]; then
brew install "${packages[@]}"
fi
if [ "${#offline_packages[@]}" -gt 0 ]; then
for package_file in "${offline_packages[@]}"; do
brew install "$package_file"
done
fi
;;
esac
}
set-boxtype