Add execute()

This commit is contained in:
2023-01-24 12:40:48 -05:00
parent 2656a083db
commit a9e4108053

View File

@@ -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