refactored package check to return values based on logic
This commit is contained in:
parent
543a836f42
commit
b24e2f6b0b
1 changed files with 172 additions and 29 deletions
201
functions
201
functions
|
|
@ -2,7 +2,7 @@
|
|||
# pyr0ball script functions library
|
||||
|
||||
# Initial Vars
|
||||
functionsrev=1.6.3
|
||||
functionsrev=1.6.4
|
||||
#scriptname="${BASH_SOURCE[0]##*/}"
|
||||
#rundir="${BASH_SOURCE[0]%/*}"
|
||||
#runuser="$(whoami)"
|
||||
|
|
@ -1180,9 +1180,12 @@ install-packages(){
|
|||
esac
|
||||
}
|
||||
|
||||
check-packages(){
|
||||
check-packages() {
|
||||
# Utilizes system package manager to check for installed packages
|
||||
# Declare arrays for online and offline packages
|
||||
declare -a packages=()
|
||||
declare -a offline_packages=()
|
||||
# Separate online and offline packages
|
||||
for arg in "$@"; do
|
||||
if [[ -f $arg ]]; then
|
||||
offline_packages+=("$arg")
|
||||
|
|
@ -1190,51 +1193,191 @@ check-packages(){
|
|||
packages+=("$arg")
|
||||
fi
|
||||
done
|
||||
# Identify the system
|
||||
identify-system
|
||||
case $ID in
|
||||
# Check packages based on system type
|
||||
case $ID in
|
||||
amzn | centos | fedora | rhel)
|
||||
[ "${#packages[@]}" -gt 0 ] && run sudo yum list installed "${packages[@]}"
|
||||
[ "${#offline_packages[@]}" -gt 0 ] && run sudo rpm -q "${packages[@]}"
|
||||
;;
|
||||
arch | Arch | manjaro)
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
run sudo pacman -Qs "${packages[@]}"
|
||||
fi
|
||||
[ "${#offline_packages[@]}" -gt 0 ] && run sudo pacman -Q "${offline_packages[@]}"
|
||||
;;
|
||||
debian | ubuntu | Ubuntu)
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
run sudo dpkg -s "${packages[@]}"
|
||||
fi
|
||||
[ "${#offline_packages[@]}" -gt 0 ] && run sudo dpkg -s "${offline_packages[@]}"
|
||||
;;
|
||||
opensuse | sles)
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
run sudo zypper se "${packages[@]}"
|
||||
fi
|
||||
[ "${#offline_packages[@]}" -gt 0 ] && run sudo rpm -q "${offline_packages[@]}"
|
||||
;;
|
||||
slackware)
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
run sudo slackpkg search "$package"
|
||||
if yum list installed "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(yum list installed "$package" | grep "$package" | awk '{print $2}')
|
||||
available_version=$(yum list available "$package" | grep "$package" | awk '{print $2}')
|
||||
if [ "$installed_version" = "$available_version" ]; then
|
||||
return 0
|
||||
elif [ "$installed_version" \> "$available_version" ]; then
|
||||
return 3
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
run sudo slackpkg search "$package_file"
|
||||
if rpm -q --quiet "$package_file"; then
|
||||
installed_version=$(rpm -q "$package_file" --qf "%{VERSION}")
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
arch | Arch | manjaro)
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
if pacman -Q "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(pacman -Q "$package" | awk '{print $2}')
|
||||
available_version=$(pacman -Si "$package" | grep "Version" | awk '{print $3}')
|
||||
if [ "$installed_version" = "$available_version" ]; then
|
||||
return 0
|
||||
elif [ "$installed_version" \> "$available_version" ]; then
|
||||
return 3
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
if pacman -Qp "$package_file" >/dev/null 2>&1; then
|
||||
installed_version=$(pacman -Qp "$package_file" | awk '{print $2}')
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
debian | ubuntu | Ubuntu)
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
if dpkg -s "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(dpkg -s "$package" | grep -E "^Version:" | awk '{print $2}')
|
||||
available_version=$(apt-cache show "$package" | grep -E "^Version:" | awk '{print $2}')
|
||||
if [ "$installed_version" = "$available_version" ]; then
|
||||
return 0
|
||||
elif [ "$installed_version" \> "$available_version" ]; then
|
||||
return 3
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
if dpkg -I "$package_file" >/dev/null 2>&1; then
|
||||
installed_version=$(dpkg -I "$package_file" | grep -E "^ Version:" | awk '{print $3}')
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
opensuse | sles)
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
if zypper info "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(zypper info "$package" | grep "Version" | awk '{print $3}')
|
||||
available_version=$(zypper se -i "$package" | grep "Version" | awk '{print $3}')
|
||||
if [ "$installed_version" = "$available_version" ]; then
|
||||
return 0
|
||||
elif [ "$installed_version" \> "$available_version" ]; then
|
||||
return 3
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
if rpm -q --quiet "$package_file"; then
|
||||
installed_version=$(rpm -q "$package_file" --qf "%{VERSION}")
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
slackware)
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
if slackpkg search "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(slackpkg search "$package" | awk '{print $3}')
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
if slackpkg search "$package_file" >/dev/null 2>&1; then
|
||||
installed_version=$(slackpkg search "$package_file" | awk '{print $3}')
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
brew)
|
||||
[ "${#packages[@]}" -gt 0 ] && run brew list "${packages[@]}"
|
||||
# Check online packages
|
||||
if [ "${#packages[@]}" -gt 0 ]; then
|
||||
for package in "${packages[@]}"; do
|
||||
if brew list "$package" >/dev/null 2>&1; then
|
||||
installed_version=$(brew list --versions "$package" | awk '{print $2}')
|
||||
available_version=$(brew info "$package" | head -n 1 | awk '{print $3}')
|
||||
if [ "$installed_version" = "$available_version" ]; then
|
||||
return 0
|
||||
elif [ "$installed_version" \> "$available_version" ]; then
|
||||
return 3
|
||||
else
|
||||
return 1
|
||||
fi
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
# Check offline packages
|
||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||
for package_file in "${offline_packages[@]}"; do
|
||||
run brew list "$package_file"
|
||||
if brew list "$package_file" >/dev/null 2>&1; then
|
||||
installed_version=$(brew list --versions "$package_file" | awk '{print $2}')
|
||||
return 0
|
||||
else
|
||||
return 2
|
||||
fi
|
||||
done
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
|
||||
set-boxtype
|
||||
|
|
|
|||
Loading…
Reference in a new issue