Cleanup installPackage()

This commit is contained in:
2021-11-28 11:56:10 -05:00
parent c9306263fd
commit f0d93ef8d7

View File

@@ -22,7 +22,7 @@ _exec_user="$(whoami)"
# Version control
_boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # Media Center 28, only required if buildah is unavailable
# _mcversion="28.0.84" # set manually
# _mcversion="28.0.84" # to set manually
printHelp() {
debug "Running: ${FUNCNAME[0]}"
@@ -114,7 +114,6 @@ init() {
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
pkg_install(){ ifSudo dnf install -y "$@"; }
pkg_reinstall(){ ifSudo dnf reinstall -y "$@"; }
pkg_install_nogpg(){ ifSudo dnf install --nogpgcheck -y "$@"; }
pkg_remove(){ ifSudo dnf remove -y "$@"; }
pkg_update(){ ifSudo dnf makecache; }
pkg_query(){ ifSudo rpm -q "$@"; }
@@ -122,7 +121,6 @@ init() {
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
pkg_install(){ ifSudo apt-get install -y -q0 "$@"; }
pkg_reinstall(){ ifSudo apt-get reinstall -y -q0 "$@"; }
pkg_install_nogpg(){ ifSudo apt-get install -y -q0 "$@"; }
pkg_remove(){ ifSudo apt-get remove --auto-remove -y -q0 "$@"; }
pkg_update(){ ifSudo apt-get update -y -q0; }
pkg_query(){ ifSudo dpkg -s "$@"; }
@@ -306,6 +304,7 @@ getLatestVersion() {
declare -g _mcversion
# Use a containerized package manager
# TODO but how to determine build distro ('buster')?
[[ ! -x $(command -v buildah) ]] && installPackage --silent buildah
if [[ -x $(command -v buildah) ]] && CNT=$(buildah from ubuntu:18.04); then
buildah run "$CNT" -- bash -c \
@@ -333,18 +332,28 @@ getLatestVersion() {
# Arguments:
# One or more package names
# Options:
# --noquery, -n: Do not query the package state (useful if installing a local RPM)
# --silent, -s: Do not report errors (useful if package is not strictly required)
# --no-check: Do not check if package is already installed
# --no-gpg: Disable GPG checks for RPM based distros
# --silent, -s: Do not report errors (useful if package is not strictly required and errors are noisy)
#######################################
installPackage() {
debug "Running: ${FUNCNAME[0]}" "$@"
if _input=$(getopt -o +ns -l noquery,silent -- "$@"); then
local -a _pkg_array
local -a _pkg
local _gpg=""
if _input=$(getopt -o +s -l no-check,no-gpg,silent -- "$@"); then
eval set -- "$_input"
while true; do
case "$1" in
--noquery|-n)
local _noquery="true"
--no-check)
local _no_check=true
;;
--no-gpg)
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
_gpg="--nogpgcheck"
fi
;;
--silent|-s)
local _silent=true
@@ -361,54 +370,33 @@ installPackage() {
exit 1
fi
local -a _pkg_array _url_pkg_array
local -a _pkg
# Parse packages
for _pkg in "$@"; do
# Check for alias
[[ -v PKG_ALIASES && -v PKG_ALIASES["$_pkg"] ]] && _pkg=PKG_ALIASES["$_pkg"]
# Insert the package name to test if already installed
if [[ -v _noquery ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
if [[ -v _url_pkg ]]; then
_url_pkg_array+=("$_url_pkg")
else
_pkg_array+=("$_pkg")
fi
# Check if already installed
if [[ -v _no_check ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
_pkg_array+=("$_pkg")
fi
done
# Install from package name (with gpg check)
# Install from package name
if [[ ${#_pkg_array[@]} -ge 1 ]]; then
[[ ! -v _silent ]] && echo "Installing:" "${_pkg_array[@]}"
debug "Installing: ${_pkg_array[*]}"
if debug; then
if ! pkg_install "${_pkg_array[@]}"; then
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
return 1
fi
elif ! pkg_install "${_pkg_array[@]}" > /dev/null 2>&1; then
[[ ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
return 1
fi
fi
# Install from package url (without gpg check)
if [[ ${#_url_pkg_array[@]} -ge 1 ]]; then
[[ ! -v _silent ]] && echo "Installing: " "${_url_pkg_array[@]}"
if debug; then
if ! pkg_install_nogpg "${_url_pkg_array[@]}"; then
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
return 1
fi
elif ! pkg_install_nogpg "${_url_pkg_array[@]}" > /dev/null 2>&1; then
[[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
return 1
debug "pkg_install $_gpg ${_pkg_array[*]}"
pkg_install "$_gpg" "${_pkg_array[@]}"
else
pkg_install "$_gpg" "${_pkg_array[@]}" > /dev/null 2>&1
fi
local _return=$?
[[ $_return -ne 0 && ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
return $_return
fi
}
#######################################
# Adds the JRiver repos
# Add the JRiver repository files
#######################################
addRepo() {
debug "Running: ${FUNCNAME[0]}"
@@ -441,7 +429,7 @@ installMCFromRepo() {
if ! debug; then
echo "This may take a few minutes to complete."
echo "Use --debug for more verbose output."
echo "Use --debug for verbose output."
fi
addRepo
@@ -461,24 +449,17 @@ installMCFromRepo() {
if [[ -v _specific_version ]]; then
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
if debug; then
installPackage "$_mcpkg-$_mcversion"
else
installPackage "$_mcpkg-$_mcversion" > /dev/null 2>&1
fi
_mcpkg="$_mcpkg-$_mcversion"
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
if debug; then
installPackage "$_mcpkg=$_mcversion"
else
installPackage "$_mcpkg=$_mcversion" > /dev/null 2>&1
fi
_mcpkg="$_mcpkg=$_mcversion"
fi
fi
if debug; then
debug "installPackage $_mcpkg"
installPackage "$_mcpkg"
else
if debug; then
installPackage "$_mcpkg"
else
installPackage "$_mcpkg" > /dev/null 2>&1
fi
installPackage "$_mcpkg" > /dev/null 2>&1
fi
return $?
@@ -514,12 +495,12 @@ acquireDeb() {
"https://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$_mcversion-amd64.deb"; then
echo "Found!"
else
err "Cannot find DEB file. Exiting..."
err "Cannot find DEB file."
exit 1
fi
if [[ ! -f "$DEBFILENAME" ]]; then
err "Downloaded DEB file missing or corrupted, exiting..."
err "Downloaded DEB file missing or corrupted."
exit 1
fi
}
@@ -1183,9 +1164,9 @@ uninstall() {
echo "Uninstalling Media Center packages"
if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
pkg_remove "MediaCenter"
pkg_remove "-q" "MediaCenter"
elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
pkg_remove "mediacenter$_mversion"
pkg_remove "-q" "mediacenter$_mversion"
fi
echo "JRiver Media Center has been completely uninstalled"
@@ -1195,7 +1176,7 @@ uninstall() {
tests() {
# To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git
# To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git; export GIT_SSL_NO_VERIFY=1
exit $?
}
@@ -1228,7 +1209,7 @@ main() {
if [[ -v _build ]]; then
acquireDeb
if ! buildRPM || [[ ! -f "$_mcrpm" ]] ; then
err "Build failed. Exiting..."
err "Build failed."
[[ -f "$DEBFILENAME" ]] && echo "Removing source DEB" && rm -f "$DEBFILENAME"
exit 1
else
@@ -1243,7 +1224,7 @@ main() {
# Install RPM
if [[ -v _install && "$_install" == "rpm" ]]; then
installPackage --noquery "$_mcrpm"
installPackage --no-check "$_mcrpm"
symlinkCerts
restoreLicense
openFirewall "jriver"