Refactor execute() and restoreLicense()

This commit is contained in:
2023-02-15 11:43:35 -05:00
parent 50ec81710b
commit c5f6ec51cc

View File

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