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
|
# pyr0ball script functions library
|
||||||
|
|
||||||
# Initial Vars
|
# Initial Vars
|
||||||
functionsrev=1.6.3
|
functionsrev=1.6.4
|
||||||
#scriptname="${BASH_SOURCE[0]##*/}"
|
#scriptname="${BASH_SOURCE[0]##*/}"
|
||||||
#rundir="${BASH_SOURCE[0]%/*}"
|
#rundir="${BASH_SOURCE[0]%/*}"
|
||||||
#runuser="$(whoami)"
|
#runuser="$(whoami)"
|
||||||
|
|
@ -1180,9 +1180,12 @@ install-packages(){
|
||||||
esac
|
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 packages=()
|
||||||
declare -a offline_packages=()
|
declare -a offline_packages=()
|
||||||
|
# Separate online and offline packages
|
||||||
for arg in "$@"; do
|
for arg in "$@"; do
|
||||||
if [[ -f $arg ]]; then
|
if [[ -f $arg ]]; then
|
||||||
offline_packages+=("$arg")
|
offline_packages+=("$arg")
|
||||||
|
|
@ -1190,51 +1193,191 @@ check-packages(){
|
||||||
packages+=("$arg")
|
packages+=("$arg")
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
# Identify the system
|
||||||
identify-system
|
identify-system
|
||||||
case $ID in
|
# Check packages based on system type
|
||||||
|
case $ID in
|
||||||
amzn | centos | fedora | rhel)
|
amzn | centos | fedora | rhel)
|
||||||
[ "${#packages[@]}" -gt 0 ] && run sudo yum list installed "${packages[@]}"
|
# Check online 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)
|
|
||||||
if [ "${#packages[@]}" -gt 0 ]; then
|
if [ "${#packages[@]}" -gt 0 ]; then
|
||||||
for package in "${packages[@]}"; do
|
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
|
done
|
||||||
fi
|
fi
|
||||||
|
# Check offline packages
|
||||||
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
for package_file in "${offline_packages[@]}"; do
|
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
|
done
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
brew)
|
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
|
if [ "${#offline_packages[@]}" -gt 0 ]; then
|
||||||
for package_file in "${offline_packages[@]}"; do
|
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
|
done
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
set-boxtype
|
set-boxtype
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue