diff --git a/install-beta.sh b/install-beta.sh new file mode 100644 index 00000000..ff3d0c7a --- /dev/null +++ b/install-beta.sh @@ -0,0 +1,119 @@ +#!/usr/bin/env bash + +DEBIAN_DEPS=(jq zenity flatpak unzip bash libfuse2 git rsync whiptail python) +ARCH_DEPS=(steam jq zenity flatpak unzip bash fuse2 git rsync libnewt python) +FEDORA_DEPS=(jq zenity flatpak unzip bash fuse git rsync newt python) +SUSE_DEPS=(steam jq zenity flatpak unzip bash libfuse2 git rsync whiptail python) +VOID_DEPS=(steam jq zenity flatpak unzip bash fuse git rsync whiptail python) + +linuxID=$(lsb_release -si) +sandbox="" + +if [ "$linuxID" = "Ubuntu" ]; then + sandbox="--no-sandbox" +fi +clear + +if [ "$linuxID" == "SteamOS" ]; then + echo "Installing EmuDeck" +else + zenityAvailable=$(command -v zenity &> /dev/null && echo true) + + if [[ $zenityAvailable = true ]];then + read -r PASSWD <<< "$(zenity --password --title="Password Entry" --text="Enter you user sudo password to install required depencies" 2>/dev/null)" + echo "$PASSWD" | sudo -v -S + ans=$? + if [[ $ans == 1 ]]; then + #incorrect password + read -r PASSWD <<< "$(zenity --password --title="Password Entry" --text="Password was incorrect. Try again. (Did you remember to set a password for linux before running this?)" 2>/dev/null)" + echo "$PASSWD" | sudo -v -S + ans=$? + if [[ $ans == 1 ]]; then + text="$(printf "Password not accepted.\n Expert mode tools which require a password will not work. Disabling them.")" + zenity --error \ + --title="EmuDeck" \ + --width=400 \ + --text="${text}" 2>/dev/null + setSetting doInstallPowertools false + setSetting doInstallGyro false + fi + fi + fi + + SCRIPT_DIR=$( cd -- "$(dirname -- "${BASH_SOURCE[0]}")" &> /dev/null && pwd) + + function log_err { + echo "$@" >&2 + } + + function script_failure { + log_err "An error occurred:$([ -z "$1" ] && " on line $1" || "(unknown)")." + log_err "Installation failed!" + exit + } + + #trap 'script_failure $LINENO' ERR + + echo "Installing EmuDeck dependencies..." + + + if command -v apt-get >/dev/null; then + echo "Installing packages with apt..." + + sudo killall apt apt-get + sudo apt-get -y update + sudo apt-get -y install "${DEBIAN_DEPS[@]}" + elif command -v pacman >/dev/null; then + echo "Installing packages with pacman..." + + sudo pacman --noconfirm -Syu + sudo pacman --noconfirm -S "${ARCH_DEPS[@]}" + elif command -v rpm-ostree >/dev/null; then + echo "Installing packages with rpm-ostree..." + + sudo rpm-ostree install "${FEDORA_DEPS[@]}" + elif command -v dnf >/dev/null; then + echo "Installing packages with dnf..." + + sudo dnf -y upgrade + sudo dnf -y install "${FEDORA_DEPS[@]}" + elif command -v zypper >/dev/null; then + echo "Installing packages with zypper..." + + sudo zypper --non-interactive up + sudo zypper --non-interactive install "${SUSE_DEPS[@]}" + elif command -v xbps-install >/dev/null; then + echo "Installing packages with xbps..." + + sudo xbps-install -Syu + sudo xbps-install -Sy "${VOID_DEPS[@]}" + else + log_err "Your Linux distro $linuxID is not supported by this script. We invite to open a PR or help us with adding your OS to this script. https://github.com/dragoonDorise/EmuDeck/issues" + exit 1 + fi + + + # this could be replaced to immediately start the EmuDeck setup script + + echo "All prerequisite packages have been installed. EmuDeck will be installed now!" + +fi + +set -eo pipefail + +report_error() { + FAILURE="$(caller): ${BASH_COMMAND}" + echo "Something went wrong!" + echo "Error at ${FAILURE}" +} + +trap report_error ERR + +EMUDECK_GITHUB_URL="https://api.github.com/repos/EmuDeck/emudeck-electron-beta/releases/latest" +EMUDECK_URL="$(curl -s ${EMUDECK_GITHUB_URL} | grep -E 'browser_download_url.*AppImage' | cut -d '"' -f 4)" + +mkdir -p ~/Applications +curl -L "${EMUDECK_URL}" -o ~/Applications/EmuDeck.AppImage 2>&1 | stdbuf -oL tr '\r' '\n' | sed -u 's/^ *\([0-9][0-9]*\).*\( [0-9].*$\)/\1\n#Download Speed\:\2/' | zenity --progress --title "Downloading EmuDeck" --width 600 --auto-close --no-cancel 2>/dev/null +chmod +x ~/Applications/EmuDeck.AppImage +~/Applications/EmuDeck.AppImage $sandbox +exit \ No newline at end of file