From c5f6ec51ccd163f1656dfdaa76a84fc60343d6d3 Mon Sep 17 00:00:00 2001 From: bryan Date: Wed, 15 Feb 2023 11:43:35 -0500 Subject: [PATCH] Refactor execute() and restoreLicense() --- installJRMC | 119 ++++++++++++++++++++++++++-------------------------- 1 file changed, 59 insertions(+), 60 deletions(-) diff --git a/installJRMC b/installJRMC index f51c151..e93bcee 100755 --- a/installJRMC +++ b/installJRMC @@ -113,9 +113,11 @@ askOk() { [[ "${response,,}" =~ ^(yes|y)$ ]] } execute() { - declare cmd="$*" - debug "$cmd" || cmd+=" &>/dev/null" - eval "${cmd[*]}" + if debug "$*"; then + eval "$*" + else + eval "$* &>/dev/null" + fi } @@ -522,8 +524,6 @@ installPackage() { installMCFromRepo() { debug "Running: ${FUNCNAME[0]}" - declare -a pkg_install_cmd - case "$ID" in fedora|centos) sudo bash -c "cat <<-EOF > /etc/yum.repos.d/jriver.repo @@ -534,7 +534,7 @@ installMCFromRepo() { EOF" ;; debian|ubuntu) - repo_dir="/etc/apt/sources.list.d" + declare repo_dir="/etc/apt/sources.list.d" [[ -d $repo_dir ]] || execute "sudo mkdir -p /etc/apt/sources.list.d" sudo rm -rf "$repo_dir"/mediacenter*.list installPackage wget @@ -559,14 +559,11 @@ installMCFromRepo() { # Install mesa-va-drivers-freeworld separately from the RPM for dnf swap installMesa - pkg_install_cmd=( - installPackage - --skip-check-installed - --allow-downgrades - --no-gpg-check - "$MCPKG" - ) - if ! execute "${pkg_install_cmd[*]}"; then + if ! execute installPackage \ + --skip-check-installed \ + --allow-downgrades \ + --no-gpg-check \ + "$MCPKG"; then err "Package install failed!" return 1 fi @@ -796,11 +793,6 @@ buildRPM() { installMCDEB() { debug "Running: ${FUNCNAME[0]}" - declare pkg_install_cmd - pkg_install_cmd=(installPackage - --skip-check-installed - --no-gpg-check - --allow-downgrades) if (( COMPAT_SWITCH )); then declare extract_dir && extract_dir="$(mktemp -d)" pushd "$extract_dir" &>/dev/null || return @@ -817,8 +809,12 @@ installMCDEB() { popd &>/dev/null || return rm -rf "$extract_dir" fi - pkg_install_cmd+=("$MCDEB") - execute "${pkg_install_cmd[*]}" + + execute installPackage \ + --skip-check-installed \ + --no-gpg-check \ + --allow-downgrades \ + "$MCDEB" } @@ -872,8 +868,6 @@ installMesa() { installMCARCH() { debug "Running: ${FUNCNAME[0]}" - declare -a makepkg_cmd - echo "Arch install under construction" [[ -d "$OUTPUTDIR/PKGBUILD" ]] || mkdir -p "$OUTPUTDIR/PKGBUILD" cat <<-EOF > "$OUTPUTDIR/PKGBUILD/mediacenter.pkgbuild" @@ -901,19 +895,18 @@ installMCARCH() { bsdtar xf data.tar.xz -C "\$pkgdir" } EOF - - makepkg_cmd=(makepkg --install - --syncdeps - --clean - --cleanbuild - --skipinteg - --force - --noconfirm - -p mediacenter.pkgbuild) pushd "$OUTPUTDIR/PKGBUILD" &>/dev/null || return - if ! execute "${makepkg_cmd[*]}"; then + if ! execute makepkg \ + --install \ + --syncdeps \ + --clean \ + --cleanbuild \ + --skipinteg \ + --force \ + --noconfirm \ + -p mediacenter.pkgbuild; then echo "makepkg failed" exit fi @@ -973,24 +966,24 @@ runCreaterepo() { symlinkCerts() { debug "Running: ${FUNCNAME[0]}" - declare mc_cert_link="/usr/lib/jriver/MC30/ca-certificates.crt" - declare target_cert - declare -a ln_cmd + declare mc_cert_link="/usr/lib/jriver/MC$MVERSION/ca-certificates.crt" + declare target_cert f + declare -a source_certs=( + "/etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem" + "/var/lib/ca-certificates/ca-bundle.pem") target_cert=$(readlink -f "$mc_cert_link") - [[ -f $target_cert ]] && return 0 - if [[ -f /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem ]]; then - ln_cmd=(sudo ln -fs /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem "$mc_cert_link") # For RHEL/CentOS - elif [[ -f /var/lib/ca-certificates/ca-bundle.pem ]]; then - ln_cmd=(sudo ln -fs /var/lib/ca-certificates/ca-bundle.pem "$mc_cert_link") # For SUSE - fi - - if ! execute "${ln_cmd[*]}"; then - err "Symlinking certificates failed" - return 1 - fi + for f in "${source_certs[@]}"; do + if [[ -f "$f" ]]; then + if ! execute ln -fs "$f" "$mc_cert_link"; then + err "Symlinking certificate failed" + return 1 + fi + break + fi + done } @@ -1000,22 +993,28 @@ symlinkCerts() { restoreLicense() { debug "Running: ${FUNCNAME[0]}" - declare mjrfile + declare f + declare -a mjrfiles_sorted - # Allow user to put the mjr file next to installJRMC - if [[ ! -v RESTOREFILE ]]; then - for mjrfile in "$PWD"/*.mjr; do - [[ $mjrfile -nt $RESTOREFILE ]] && RESTOREFILE="$mjrfile" - done - fi + # Glob mjr files from common directories + declare -a mjrfiles=( + "$RESTOREFILE" + "$PWD"/*.mjr + "$OUTPUTDIR"/*.mjr + "$HOME"/[dD]ownloads/*.mjr + "$HOME"/[dD]ocuments/*.mjr + ) - # Restore license - if [[ -f "$RESTOREFILE" ]]; then - if ! "mediacenter$MVERSION" /RestoreFromFile "$RESTOREFILE"; then - err "Automatic license restore failed" - return 1 + # Sort globbed files by time, newest first + mjrfiles_sorted=("$(ls -t "${mjrfiles[@]}")") + + for f in "${mjrfiles_sorted[@]}"; do + if [[ -f "$f" ]]; then + if execute "mediacenter$MVERSION" "/RestoreFromFile" "$f"; then + return 0 + fi fi - fi + done }