Browse Source

Add execute()

bryan 2 years ago
parent
commit
a9e4108053
1 changed files with 25 additions and 41 deletions
  1. 25 41
      installJRMC

+ 25 - 41
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