From a9e41080537eac303e3244cbe89a7bd71476b273 Mon Sep 17 00:00:00 2001 From: bryan Date: Tue, 24 Jan 2023 12:40:48 -0500 Subject: [PATCH] Add execute() --- installJRMC | 66 ++++++++++++++++++++--------------------------------- 1 file changed, 25 insertions(+), 41 deletions(-) diff --git a/installJRMC b/installJRMC index 5f0be62..614948b 100755 --- a/installJRMC +++ b/installJRMC @@ -111,6 +111,11 @@ askOk() { read -r -p "$* [y/N]: " response [[ "${response,,}" =~ ^(yes|y)$ ]] } +execute() { + declare cmd="$*" + debug "$cmd" || cmd+=" &>/dev/null" + eval "${cmd[*]}" +} ####################################### @@ -483,8 +488,7 @@ installPackage() { # Install packages from package array if [[ ${#pkg_array[@]} -ge 1 ]]; then pkg_install_cmd=(pkg_install "${install_flags[@]}" "${pkg_array[@]}") - debug "${pkg_install_cmd[*]}" || pkg_install_cmd+=(" &>/dev/null") - if ! eval "${pkg_install_cmd[*]}"; then + if ! execute "${pkg_install_cmd[*]}"; then (( silent )) || err "Failed to install ${pkg_array[*]}. Attempting to continue" return 1 fi @@ -529,9 +533,7 @@ installMCFromRepo() { ;; esac - declare -a pkg_update_cmd=( pkg_update ) - debug "${pkg_update_cmd[*]}" || pkg_update_cmd+=(" &>/dev/null") - if ! eval "${pkg_update_cmd[*]}"; then + if ! execute "pkg_update"; then err "Package update failed!" return 1 fi @@ -544,8 +546,7 @@ installMCFromRepo() { --allow-downgrades --no-gpg-check "$MCPKG") - debug "${pkg_install_cmd[*]}" || pkg_install_cmd+=(" &>/dev/null") - if ! eval "${pkg_install_cmd[*]}"; then + if ! execute "${pkg_install_cmd[*]}"; then err "Package install failed!" return 1 fi @@ -753,8 +754,7 @@ buildRPM() { --define=\"%_libdir /usr/lib\" -bb "$OUTPUTDIR/SPECS/mediacenter.spec") - debug "${rpmbuild_cmd[*]}" || rpmbuild_cmd+=(" &>/dev/null") - if eval "${rpmbuild_cmd[*]}" && [[ -f "$MCRPM" ]] ; then + if execute "${rpmbuild_cmd[*]}" && [[ -f "$MCRPM" ]] ; then echo "Build successful. The RPM file is located at: $MCRPM" else err "Build failed" @@ -795,7 +795,7 @@ installMCDEB() { fi pkg_install_cmd+=("$MCDEB") debug "${pkg_install_cmd[*]}" || pkg_install_cmd+=(" &>/dev/null") - eval "${pkg_install_cmd[*]}" + execute "${pkg_install_cmd[*]}" } @@ -826,8 +826,7 @@ installMesa() { if ! pkg_query mesa-va-drivers-freeworld &>/dev/null; then if pkg_query mesa-va-drivers &>/dev/null; then pkg_swap_cmd=(pkg_swap mesa-va-drivers mesa-va-drivers-freeworld) - debug "${pkg_swap_cmd[*]}" || pkg_swap_cmd+=(" &>/dev/null") - if ! eval "${pkg_swap_cmd[*]}"; then + if ! execute "${pkg_swap_cmd[*]}"; then err "Package swap failed!" return 1 fi @@ -888,8 +887,7 @@ installMCARCH() { pushd "$OUTPUTDIR/PKGBUILD" &>/dev/null || return - debug "${makepkg_cmd[*]}" || makepkg_cmd+=(" &>/dev/null") - if ! eval "${makepkg_cmd[*]}"; then + if ! execute "${makepkg_cmd[*]}"; then echo "makepkg failed" exit fi @@ -911,13 +909,10 @@ runCreaterepo() { # If the webroot does not exist, create it if [[ ! -d "$CREATEREPO_WEBROOT" ]]; then cr_mkdir_cmd=(sudo -u "$CREATEREPO_USER" mkdir -p "$CREATEREPO_WEBROOT") - debug "${cr_mkdir_cmd[*]}" || cr_mkdir_cmd+=(" &>/dev/null") - if ! eval "${cr_mkdir_cmd[*]}"; then + if ! execute "${cr_mkdir_cmd[*]}"; then cr_mkdir_cmd=(sudo mkdir -p "$CREATEREPO_WEBROOT") - debug "${cr_mkdir_cmd[*]}" || cr_mkdir_cmd+=(" &>/dev/null") cr_chown_cmd=(sudo chown -R "$CREATEREPO_USER":"$CREATEREPO_USER" "$CREATEREPO_WEBROOT") - debug "${cr_chown_cmd[*]}" || cr_chown_cmd+=(" &>/dev/null") - if ! ( eval "${cr_mkdir_cmd[*]}" && eval "${cr_chown_cmd[*]}" ); then + if ! ( execute "${cr_mkdir_cmd[*]}" && execute "${cr_chown_cmd[*]}" ); then err "Could not create the createrepo-webroot path!" err "Make sure that the webroot $CREATEREPO_WEBROOT is writeable by user $CREATEREPO_USER" err "Or change the repo ownership with --createrepo-user" @@ -929,9 +924,7 @@ runCreaterepo() { # Copy built rpms to webroot cr_cp_cmd=(sudo cp -nf "$MCRPM" "$CREATEREPO_WEBROOT") cr_chown_cmd=(sudo chown -R "$CREATEREPO_USER":"$CREATEREPO_USER" "$CREATEREPO_WEBROOT") - debug "${cr_cp_cmd[*]}" || cr_cp_cmd+=(" &>/dev/null") - debug "${cr_chown_cmd[*]}" || cr_cp_cmd+=(" &>/dev/null") - if ! ( eval "${cr_cp_cmd[*]}" && eval "${cr_chown_cmd[*]}" ); then + if ! ( execute "${cr_cp_cmd[*]}" && execute "${cr_chown_cmd[*]}" ); then err "Could not copy $MCRPM to $CREATEREPO_WEBROOT" return 1 fi @@ -939,14 +932,11 @@ runCreaterepo() { # Run createrepo cr_cmd=(sudo -u "$CREATEREPO_USER" createrepo -q "$CREATEREPO_WEBROOT") [[ -d "$CREATEREPO_WEBROOT/repodata" ]] && cr_cmd+=(--update) - debug "${cr_cmd[*]}" || cr_cmd+=(" &>/dev/null") - if ! eval "${cr_cmd[*]}"; then + if ! execute "${cr_cmd[*]}"; then cr_cmd=(sudo createrepo -q "$CREATEREPO_WEBROOT") [[ -d "$CREATEREPO_WEBROOT/repodata" ]] && cr_cmd+=(--update) cr_chown_cmd=(sudo chown -R "$CREATEREPO_USER":"$CREATEREPO_USER" "$CREATEREPO_WEBROOT") - debug "${cr_cmd[*]}" || cr_cmd+=(" &>/dev/null") - debug "${cr_chown_cmd[*]}" || cr_cp_cmd+=(" &>/dev/null") - if ! ( eval "${cr_cmd[*]}" && eval "${cr_chown_cmd[*]}"); then + if ! ( execute "${cr_cmd[*]}" && execute "${cr_chown_cmd[*]}"); then err "Createrepo failed" return 1 fi @@ -974,8 +964,7 @@ symlinkCerts() { ln_cmd=(sudo ln -fs /var/lib/ca-certificates/ca-bundle.pem "$mc_cert_link") # For SUSE fi - debug "${ln_cmd[*]}" || ln_cmd+=(" &>/dev/null") - if ! eval "${ln_cmd[*]}"; then + if ! execute "${ln_cmd[*]}"; then err "Symlinking certificates failed" return 1 fi @@ -1103,6 +1092,7 @@ setVNCPass() { elif [[ $1 == "x11vnc" ]]; then vnc_pass_cmd=(x11vnc -storepasswd "$VNCPASS" "$vncpassfile") fi + # Don't use execute, need to pipe stdout if ! eval "${vnc_pass_cmd[*]}"; then err "Could not create VNC password file" return 1 @@ -1557,18 +1547,14 @@ uninstall() { echo "Removing firewall rules" if hash firewall-cmd 2>/dev/null; then firewall_cmd=(sudo firewall-cmd --permanent --remove-service=jriver) - debug "${firewall_cmd[*]}" || firewall_cmd+=(" &>/dev/null") - eval "${firewall_cmd[*]}" + execute "${firewall_cmd[*]}" firewall_cmd=(sudo firewall-cmd --permanent --delete-service=jriver) - debug "${firewall_cmd[*]}" || firewall_cmd+=(" &>/dev/null") - eval "${firewall_cmd[*]}" + execute "${firewall_cmd[*]}" firewall_cmd=(sudo firewall-cmd --reload) - debug "${firewall_cmd[*]}" || firewall_cmd+=(" &>/dev/null") - eval "${firewall_cmd[*]}" + execute "${firewall_cmd[*]}" elif hash ufw 2>/dev/null; then firewall_cmd=(sudo ufw delete allow jriver) - debug "${firewall_cmd[*]}" || firewall_cmd+=(" &>/dev/null") - eval "${firewall_cmd[*]}" + execute "${firewall_cmd[*]}" [[ -f "/etc/ufw/applications.d/jriver" ]] && sudo rm -f /etc/ufw/applications.d/jriver # elif hash nft 2>/dev/null; then @@ -1577,8 +1563,7 @@ uninstall() { echo "Uninstalling JRiver Media Center package" mc_pkg_rm_cmd=(pkg_remove "$MCPKG") - debug "${mc_pkg_rm_cmd[*]}" || mc_pkg_rm_cmd+=(" &>/dev/null") - if eval "${mc_pkg_rm_cmd[*]}"; then + if execute "${mc_pkg_rm_cmd[*]}"; then echo "JRiver Media Center has been completely uninstalled" echo "To remove your library files, run: rm -rf $HOME/.jriver" elif [[ $? -eq 100 ]]; then @@ -1630,8 +1615,7 @@ main() { if ! grep ^deb /etc/apt/sources.list|grep -q universe; then echo "Adding universe repository" declare -a add_universe_cmd=(sudo add-apt-repository -y universe) - debug "${add_universe_cmd[*]}" || add_universe_cmd+=(" &>/dev/null") - if ! eval "${add_universe_cmd[*]}"; then + if ! execute "${add_universe_cmd[*]}"; then err "Adding universe repository failed" fi fi