Kaynağa Gözat

Refactor download_stdout and remove snap/appimage attempts

bryan 1 hafta önce
ebeveyn
işleme
58674364c6
1 değiştirilmiş dosya ile 5 ekleme ve 279 silme
  1. 5 279
      installJRMC

+ 5 - 279
installJRMC

@@ -40,7 +40,7 @@ print_help() {
 		  If no options (excluding -d or --debug) are provided installJRMC defaults to '--install repo'.
 
 		OPTIONS
-		  --install, -i repo|local|snap
+		  --install, -i repo|local
 		    repo: Install MC from repository, updates are handled by the system package manager
 		    local: Build and install MC package locally from official source release
 		  --build[=suse|fedora|centos]
@@ -432,7 +432,7 @@ get_latest_mc_version() {
     mc_version_source="containerized package manager"
     execute buildah rm "$cnt"
   # Fallback to webscrape
-  elif MC_VERSION=$(download_stdout "$BOARD_URL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) \
+  elif MC_VERSION=$(download "$BOARD_URL" "-" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) \
   && [[ $MC_VERSION =~ ^[0-9]+\.[0-9]+\.[0-9]+ ]]; then
     mc_version_source="webscrape"
   # Fallback to hardcoded value
@@ -664,7 +664,7 @@ install_mc_repo() {
         repo_text="deb [signed-by=$keyfile arch=amd64,i386,armhf,arm64] http://dist.jriver.com/$channel/mediacenter/ $MC_REPO main"
       fi
       echo "Installing JRiver Media Center RPM key"
-      download "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" | 
+      download "http://dist.jriver.com/mediacenter@jriver.com.gpg.key" "-" | 
       gpg --dearmor | sudo tee "$keyfile" &>/dev/null
       ;;
     *)
@@ -1056,230 +1056,6 @@ install_mc_arch() {
   popd &>/dev/null || return
 }
 
-# @description Installs MC via snap
-install_mc_snap() {
-  debug "Running: ${FUNCNAME[0]}"
-  local snap_dir="$OUTPUT_DIR/snap"
-  local snap_yaml="$snap_dir/snapcraft.yaml"
-
-  execute mkdir -p "$snap_dir" || { err "Could not create snap dir"; return 1; }
-
-  # Create snapcraft.yaml file
-  cat <<-EOF > "$snap_yaml"
-		name: $MC_PKG
-		version: $MC_VERSION
-		summary: JRiver Media Center $MC_VERSION
-		description: |
-		  JRiver Media Center $MC_VERSION packaged as a snap
-		base: core24
-		confinement: strict
-		grade: stable
-
-		parts:
-		  mediacenter:
-		    plugin: dump
-		    source: /build/SOURCES/${MC_DEB##*/}
-		    override-build: |
-		      mkdir -p \$SNAPCRAFT_PART_INSTALL
-		      dpkg-deb -x /build/SOURCES/${MC_DEB##*/} \$SNAPCRAFT_PART_INSTALL
-		      mkdir -p \$SNAPCRAFT_PART_INSTALL/meta/gui
-		      cp usr/share/applications/media_center_${MC_MVERSION}.desktop \$SNAPCRAFT_PART_INSTALL/meta/gui/mediacenter${MC_MVERSION}.desktop
-		      sed -i 's|^Icon=.*|Icon=mediacenter|' \$SNAPCRAFT_PART_INSTALL/meta/gui/mediacenter${MC_MVERSION}.desktop
-		      cp "usr/lib/jriver/Media Center ${MC_MVERSION}/Data/Default Art/Logo.png" \$SNAPCRAFT_PART_INSTALL/meta/gui/mediacenter.png
-		    stage-packages:
-		      - libc6
-		      - libasound2
-		      - libuuid1
-		      - libx11-6
-		      - libxext6
-		      - libxcb1
-		      - libxdmcp6
-		      - libstdc++6
-		      - libgtk-3-0
-		      - libgl1
-		      - libpango-1.0-0
-		      - libpangoft2-1.0-0
-		      - libnss3
-		      - libnspr4
-		      - python3
-		      - xdg-utils
-		      - libgomp1
-		      - libfribidi0
-		      - libfontconfig1
-		      - libfreetype6
-		      - libharfbuzz0b
-		      - libgbm1
-		      - libva2
-		      - libva-drm2
-		      - libvulkan1
-		      - mesa-vulkan-drivers
-		      - libwebkit2gtk-4.1-0
-
-		apps:
-		  mediacenter:
-		    command: usr/bin/mediacenter${MC_MVERSION}
-		    extensions:
-		      - gnome
-		    plugs:
-		      - network
-		      - desktop
-		      - desktop-legacy
-		      - home
-		      - x11
-		      - pulseaudio
-		      - alsa
-		      - opengl
-		      - removable-media
-	EOF
-
-  # Be careful with snapcraft container paths
-  # The container does not respect the --workdir
-  # Also has incompatible --entrypoint so need to override manually
-  if execute podman run --rm -it \
-    -v "$OUTPUT_DIR:/build:Z" \
-    -w /build \
-    --entrypoint "" \
-    ghcr.io/canonical/snapcraft:8_core24 \
-    snapcraft snap -o "/build/snap/${MC_PKG}_${MC_VERSION}-${MC_RELEASE}.snap" --destructive-mode \
-    && [[ -f "$snap_dir/${MC_PKG}_${MC_VERSION}-${MC_RELEASE}.snap" ]]; then
-      echo "Snap package built successfully: $snap_dir/${MC_PKG}_${MC_VERSION}-${MC_RELEASE}.snap"
-  else
-    err "Snap package build failed."
-    return 1
-  fi
-
-  # Offer to install the built snap package
-  if ask_ok "Do you want to install the MC snap package?"; then
-    # Must use --dangerous for local unsigned snaps
-    if execute sudo snap install --dangerous "$snap_dir/${MC_PKG}_${MC_VERSION}-${MC_RELEASE}.snap"; then
-      echo "Snap package installed successfully."
-    else
-      err "Snap installation failed."
-      return 1
-    fi
-  fi
-}
-
-# @description Installs MC via AppImage
-install_mc_appimage() {
-  debug "Running: ${FUNCNAME[0]}"
-  local builder_dir
-  builder_dir=$(mktemp -d) || { err "Failed to create temporary directory"; return 1; }
-  local install_dir="/opt/jriver"
-  local installed_app="$install_dir/$MC_PKG"
-  local config_file="$builder_dir/appimage-builder.yml"
-  local icon_rel="usr/lib/jriver/Media Center ${MC_MVERSION}/Data/Default Art/Logo.png"
-  local desktop_rel="usr/share/applications/media_center_${MC_MVERSION}.desktop"
-
-  # Generate a YAML configuration for appimage-builder.
-  cat <<-EOF > "$config_file"
-		app:
-		  id: $MC_PKG
-		  version: "$MC_VERSION"
-		  exec: "mediacenter${MC_MVERSION}"
-		  app-run: |
-		    #!/usr/bin/env bash
-		    cmd=\$(basename "\$0")
-		    case "\$cmd" in
-		      mc${MC_MVERSION})
-		        # If invoked as "mc${MC_MVERSION}", run the stub binary from usr/lib/jriver/Media Center ${MC_MVERSION}/mc${MC_MVERSION}
-		        exec "\${APPDIR}/usr/lib/jriver/Media Center ${MC_MVERSION}/mc${MC_MVERSION}" "\$@"
-		        ;;
-		    	mediacenter${MC_MVERSION})
-		        # If invoked as "mediacenter${MC_MVERSION}", run the main binary from usr/bin
-		        exec "\${APPDIR}/usr/bin/mediacenter${MC_MVERSION}" "\$@"
-		        ;;
-	      	*)
-		        # Default to main binary
-		        exec "\${APPDIR}/usr/bin/mediacenter${MC_MVERSION}" "\$@"
-		        ;;
-		    esac
-		  icon: "mediacenter.png"
-		  desktop-file: "mediacenter.desktop"
-		ingredients:
-		  sources:
-		    - type: deb
-		      url: "file://$MC_DEB"
-		      extract: true
-		build: {}
-		output: "$builder_dir"
-	EOF
-
-  # To supply required assets, extract them from the DEB.
-  local temp_extract
-  temp_extract=$(mktemp -d) || { err "Failed to create temporary extraction directory"; return 1; }
-  if ! dpkg-deb -x "$MC_DEB" "$temp_extract"; then
-    err "Failed to extract DEB for assets"
-    execute rm -rf "$temp_extract"
-    return 1
-  fi
-
-  # Copy the icon and desktop file into the builder directory
-  if ! cp "$temp_extract/$icon_rel" "$builder_dir/mediacenter.png"; then
-    err "Failed to copy icon"
-    execute rm -rf "$temp_extract" "$builder_dir"
-    return 1
-  fi
-
-  if ! cp "$temp_extract/$desktop_rel" "$builder_dir/mediacenter.desktop"; then
-    err "Failed to copy desktop file"
-    execute rm -rf "$temp_extract" "$builder_dir"
-    return 1
-  fi
-  execute rm -rf "$temp_extract"
-
-  # Determine which appimage-builder binary to use
-  local builder_app
-  if command -v appimage-builder &>/dev/null; then
-    builder_app="appimage-builder"
-  else
-    download "https://github.com/AppImage/AppImageBuilder/releases/latest/download/appimage-builder-$(uname -m).AppImage" "$builder_dir/appimage-builder"
-    chmod +x "$builder_dir/appimage-builder"
-    builder_app="$builder_dir/appimage-builder"
-  fi
-
-  # Run appimage-builder with the generated YAML config
-  if "$builder_app" --config "$config_file" --verbose; then
-    local built_appimage
-    built_appimage="$builder_dir/${MC_PKG}-${MC_VERSION}-$(uname -m).AppImage"
-    if [[ ! -f "$built_appimage" ]]; then
-      err "Built AppImage not found in $builder_dir"
-      execute rm -rf "$builder_dir"
-      return 1
-    fi
-    echo "AppImage built: $built_appimage"
-  else
-    err "appimage-builder failed"
-    execute rm -rf "$builder_dir"
-    return 1
-  fi
-
-  # Install the AppImage
-  [[ -d "$install_dir" ]] || execute sudo mkdir -p "$install_dir"
-  if execute sudo cp "$built_appimage" "$installed_app"; then
-    execute sudo chmod +x "$installed_app"
-    echo "AppImage installed to $installed_app"
-  else
-    err "Failed to install the AppImage to $install_dir"
-    execute rm -rf "$builder_dir"
-    return 1
-  fi
-
-  # Optionally create symlinks in /usr/local/bin for both invocation names
-  if ask_ok "Create symlinks for mediacenter${MC_MVERSION} and mc${MC_MVERSION} in /usr/local/bin?"; then
-    execute sudo ln -sf "$installed_app" "/usr/local/bin/mediacenter${MC_MVERSION}"
-    execute sudo ln -sf "$installed_app" "/usr/local/bin/mc${MC_MVERSION}"
-  fi
-
-  # Optionally run the installed AppImage immediately
-  if ask_ok "Do you want to run the $MC_PKG AppImage now?"; then
-    execute "$installed_app" || { err "Running $MC_PKG failed"; execute rm -rf "$builder_dir"; return 1; }
-  fi
-
-  execute rm -rf "$builder_dir"
-  return 0
-}
-
 # @description Copy the RPM to createrepo-webroot and run createrepo as the createrepo-user
 run_createrepo() {
   debug "Running: ${FUNCNAME[0]}"
@@ -1956,31 +1732,6 @@ main() {
     disable_btrfs_cow
   fi
 
-  if ((SNAP_INSTALL_SWITCH)); then
-    acquire_deb || { err "Could not download Media Center DEB package"; return 1; }
-    install_package snapd podman
-    if ! systemctl is-active --quiet snapd.socket; then
-      execute sudo systemctl enable --now snapd.socket
-    fi
-    if install_mc_snap; then
-      echo "JRiver Media Center installed successfully from snap"
-    else
-      err "JRiver Media Center snap installation failed"
-      return 1
-    fi
-  fi
-
-  if ((APPIMAGE_INSTALL_SWITCH)); then
-    acquire_deb || { err "Could not download Media Center DEB package"; return 1; }
-    install_package dpkg
-    if install_mc_appimage; then
-      echo "JRiver Media Center installed successfully from AppImage"
-    else
-      err "JRiver Media Center AppImage installation failed"
-      return 1
-    fi
-  fi
-
   if ((CREATEREPO_SWITCH)); then
     if run_createrepo; then
       echo "Successfully updated repo"
@@ -2004,16 +1755,6 @@ main() {
     done
     unset service
   fi
-
-  # for _container in "${CONTAINERS[@]}"; do
-  #   if ! "_container_$_container"; then
-  #     if [[ $? -eq 127 ]]; then
-  #       err "Container $_container does not exist, check container name"
-  #     else
-  #       err "Failed to create container: $_container"
-  #     fi
-  #   fi
-  # done
 }
 
 # @section Helper functions
@@ -2042,11 +1783,11 @@ download() {
     if [[ -n "$output" ]]; then
       cmd+=(--output "$output")
     else
-      cmd+=(-O)
+      cmd+=(--remote-name)
     fi
   elif command -v wget &>/dev/null || install_package --silent wget; then
     cmd=(wget --quiet)
-    [[ -n "$output" ]] && cmd+=("--output-document=$output")
+    [[ -n "$output" ]] && cmd+=(--output-document="$output")
   else
     err "Unable to install wget or curl"
     return 1
@@ -2054,21 +1795,6 @@ download() {
 
   execute "${cmd[@]}" "$url"
 }
-download_stdout() {
-  local url="$1"
-  local -a cmd
-
-  if command -v curl &>/dev/null; then
-    cmd=(curl --silent --fail --location -o - "$url")
-  elif command -v wget &>/dev/null; then
-    cmd=(wget --quiet -O - "$url")
-  else
-    err "Neither curl nor wget is available"
-    return 1
-  fi
-
-  "${cmd[@]}"
-}
 
 # Roughly turn debugging on for pre-init
 # Reset and reparse in parse_input() with getopt