diff options
| author | TrainDoctor <11465594+TrainDoctor@users.noreply.github.com> | 2022-06-21 12:36:43 -0700 |
|---|---|---|
| committer | TrainDoctor <11465594+TrainDoctor@users.noreply.github.com> | 2022-06-21 12:36:43 -0700 |
| commit | ce23534ccc9d8c6035eec5e9d38f1965d3e746e2 (patch) | |
| tree | 42d351b619452183fb998d13c4a244e657e7f258 | |
| parent | e6e74d8e9dcb0612e6e567a2300cca3e8c680f27 (diff) | |
| download | decky-loader-ce23534ccc9d8c6035eec5e9d38f1965d3e746e2.tar.gz decky-loader-ce23534ccc9d8c6035eec5e9d38f1965d3e746e2.zip | |
Remove argument parity between scripts, not sustainable solution
| -rw-r--r-- | README.md | 6 | ||||
| -rwxr-xr-x | contrib/deck.sh | 30 | ||||
| -rwxr-xr-x | contrib/nodeck.sh | 155 |
3 files changed, 116 insertions, 75 deletions
@@ -45,11 +45,11 @@ Keep an eye on the [Wiki](https://deckbrew.xyz) for more information about Plugi ## Contribution - For Plugin Loader contributors (in possession of a Steam Deck): - - `curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/react-frontend-plugins/contrib/deck.sh | sh` + - `bash <(curl -s https://github.com/SteamDeckHomebrew/PluginLoader/raw/react-frontend-plugins/contrib/deck.sh)` - For PluginLoader contributors (without a Steam Deck): - - `curl -L https://github.com/SteamDeckHomebrew/PluginLoader/raw/react-frontend-plugins/contrib/pc.sh | sh` + - `bash <(curl -s https://github.com/SteamDeckHomebrew/PluginLoader/raw/react-frontend-plugins/contrib/nodeck.sh)` - [Here's how to get the Steam Deck UI on your enviroment of choice.](https://youtu.be/1IAbZte8e7E?t=112) - - (The video shows Windows usage but unless you're using WSL/cygwin this script is unsupported on Windows.) + - (The video shows Windows usage but unless you're using Arch WSL/cygwin this script is unsupported on Windows.) To run your development version of Plugin Loader on Deck, run a command like this: ```bash diff --git a/contrib/deck.sh b/contrib/deck.sh index 1bb1690f..dddc8665 100755 --- a/contrib/deck.sh +++ b/contrib/deck.sh @@ -172,19 +172,23 @@ pnpmtransbundle() { fi } -printf "Installing Steam Deck Plugin Loader contributor/developer (for Steam Deck)...\n" +if ! [[ $count -gt 9 ]] ; then + printf "Installing Steam Deck Plugin Loader contributor/developer (for Steam Deck)...\n" -printf "THIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK! -Not planning to contribute to or develop for PluginLoader? -If so, you should not be using this script.\n -If you have a release/nightly installed this script will disable it.\n" + printf "THIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK! + Not planning to contribute to or develop for PluginLoader? + If so, you should not be using this script.\n + If you have a release/nightly installed this script will disable it.\n" -printf "This script requires you to have nodejs installed. (If nodejs doesn't bundle npm on your OS/distro, then npm is required as well).\n" + printf "This script requires you to have nodejs installed. (If nodejs doesn't bundle npm on your OS/distro, then npm is required as well).\n" +fi if ! [[ $count -gt 0 ]] ; then read -p "Press any key to continue" fi +printf "\n" + ## User chooses preffered clone & install directories if [[ "$CLONEFOLDER" == "" ]]; then @@ -246,7 +250,7 @@ fi ## Create folder structure -printf "\nCloning git repositories.\n" +printf "Cloning git repositories.\n" mkdir -p ${CLONEDIR} &> '/dev/null' @@ -255,7 +259,7 @@ mkdir -p ${CLONEDIR} &> '/dev/null' # rm -r ${CLONEDIR}/pluginlibrary # rm -r ${CLONEDIR}/plugintemplate -clonefromto "https://github.com/SteamDeckHomebrew/PluginLoader" ${CLONEDIR}/pluginloader "$LOADERBRANCH" +clonefromto "https://github.com/SteamDeckHomebrew/PluginLoader" ${CLONEDIR}/pluginloader "$LOADERBRANCH" clonefromto "https://github.com/SteamDeckHomebrew/decky-frontend-lib" ${CLONEDIR}/pluginlibrary "$LIBRARYBRANCH" @@ -271,6 +275,8 @@ ssh deck@${DECKIP} -p ${SSHPORT} ${IDENINVOC} "python -m ensurepip && python -m ## Transpile and bundle typescript +[ "$UID" -eq 0 ] || printf "Input password to proceed with install.\n" + sudo npm install -g pnpm &> '/dev/null' type pnpm &> '/dev/null' @@ -282,8 +288,6 @@ if ! [[ "$PNPMLIVES" -eq 0 ]]; then exit 1 fi -[ "$UID" -eq 0 ] || printf "Input password to install typscript compiler.\n" - printf "Transpiling and bundling typescript.\n" pnpmtransbundle ${CLONEDIR}/pluginlibrary/ "library" @@ -303,6 +307,7 @@ rsync -avzp --rsh="ssh -p $SSHPORT $IDENINVOC" --exclude='.git/' --exclude='.git if ! [[ $? -eq 0 ]]; then printf "Error occurred when copying $CLONEDIR/pluginloader/ to $INSTALLDIR/pluginloader/\n" + printf "Check that your Steam Deck is active, ssh is enabled and running and is accepting connections.\n" exit 1 fi @@ -317,8 +322,7 @@ fi printf "Run these commands to deploy your local changes to the deck:\n" printf "'rsync -avzp --mkpath --rsh=""\"ssh -p $SSHPORT $IDENINVOC\""" --exclude='.git/' --exclude='.github/' --exclude='.vscode/' --exclude='frontend/' --exclude='dist/' --exclude='contrib/' --exclude='*.log' --exclude='requirements.txt' --exclude='backend/__pycache__/' --exclude='.gitignore' --delete $CLONEDIR/pluginloader/* deck@$DECKIP:$INSTALLDIR/pluginloader/'\n" - -printf "'rsync -avzp --mkpath --rsh=""\"ssh -p $SSHPORT $IDENINVOC\""" --exclude='.git/' --exclude='.github/' --exclude='.vscode/' --exclude='node_modules/' --exclude='src/' --exclude='*.log' --exclude='.gitignore' --exclude='package-lock.json' --delete $CLONEDIR/pluginname deck@$DECKIP:$INSTALLDIR/plugins'\n" +printf "'rsync -avzp --mkpath --rsh=""\"ssh -p $SSHPORT $IDENINVOC\""" --exclude='.git/' --exclude='.github/' --exclude='.vscode/' --exclude='node_modules/' --exclude='src/' --exclude='*.log' --exclude='.gitignore' --exclude='package-lock.json' --delete $CLONEDIR/pluginname deck@$DECKIP:$INSTALLDIR/plugins'\n\n" printf "Run in console or in a script this command to run your development version:\n'ssh deck@$DECKIP -p $SSHPORT $IDENINVOC 'export PLUGIN_PATH=$INSTALLDIR/plugins; export CHOWN_PLUGIN_PATH=0; echo 'steam' | sudo -SE python3 $INSTALLDIR/pluginloader/backend/main.py'\n" @@ -328,4 +332,4 @@ printf "Run in console or in a script this command to run your development versi printf "Connecting via ssh to disable any PluginLoader release versions.\n" printf "Script will exit after this. All done!\n" -ssh deck@${DECKIP} -p ${SSHPORT} ${IDENINVOC} "printf $PASSWORD | sudo -S systemctl disable --now plugin_loader; echo $?" +ssh deck@${DECKIP} -p ${SSHPORT} ${IDENINVOC} "printf $PASSWORD | sudo -S systemctl disable --now plugin_loader; echo $?" &> '/dev/null' diff --git a/contrib/nodeck.sh b/contrib/nodeck.sh index 10e9a268..29dca940 100755 --- a/contrib/nodeck.sh +++ b/contrib/nodeck.sh @@ -2,88 +2,115 @@ ## Pre-parse arugments for ease of use CLONEFOLDER=${1:-""} +LOADERBRANCH=${2:-""} +LIBRARYBRANCH=${3:-""} +TEMPLATEBRANCH=${4:-""} +LATEST=${5:-""} -setfolder() { - if [[ "$2" == "clone" ]]; then - local ACTION="clone" - local DEFAULT="git" - elif [[ "$2" == "install" ]]; then - local ACTION="install" - local DEFAULT="loaderdev" - fi +## gather options into an array +OPTIONSARRAY=("$CLONEFOLDER" "$LOADERBRANCH" "$LIBRARYBRANCH" "$TEMPLATEBRANCH" "$LATEST") - printf "Enter the directory in /home/user to ${ACTION} to.\n" - printf "Example: if your home directory is /home/user you would type: ${DEFAULT}\n" - printf "The ${ACTION} directory would be: ${HOME}/${DEFAULT}\n" - if [[ "$ACTION" == "clone" ]]; then - read -p "Enter your ${ACTION} directory: " CLONEFOLDER - if ! [[ "$CLONEFOLDER" =~ ^[[:alnum:]]+$ ]]; then - printf "Folder name not provided. Using default, '${DEFAULT}'.\n" - CLONEFOLDER="${DEFAULT}" - fi - elif [[ "$ACTION" == "install" ]]; then - read -p "Enter your ${ACTION} directory: " INSTALLFOLDER - if ! [[ "$INSTALLFOLDER" =~ ^[[:alnum:]]+$ ]]; then - printf "Folder name not provided. Using default, '${DEFAULT}'.\n" - INSTALLFOLDER="${DEFAULT}" - fi - else - printf "Folder type could not be determined, exiting\n" - exit 1 - fi -} +## iterate through options array to check their presence +count=0 +for OPTION in ${OPTIONSARRAY[@]}; do + ! [[ "$OPTION" == "" ]] && count=$(($count+1)) + # printf "OPTION=$OPTION\n" +done clonefromto() { # printf "repo=$1\n" # printf "outdir=$2\n" # printf "branch=$3\n" - if [[ -z $3 ]]; then - BRANCH="" - else - BRANCH="-b $3" - fi - git clone $1 $2 $BRANCH &> '/dev/null' + printf "Repository: $1\n" + git clone $1 $2 &> '/dev/null' CODE=$? + # printf "CODE=${CODE}" if [[ $CODE -eq 128 ]]; then cd $2 - git fetch &> '/dev/null' + git fetch --all &> '/dev/null' + fi + if [[ -z $3 ]]; then + printf "Enter the desired branch for repository "$1" :\n" + local OUT="$(git branch -r | sed '/\/HEAD/d')" + # $OUT="$($OUT > )" + printf "$OUT\nbranch: " + read BRANCH + else + printf "on branch: $3\n" + BRANCH="$3" + fi + if ! [[ -z ${BRANCH} ]]; then + git checkout $BRANCH &> '/dev/null' + fi + if [[ ${LATEST} == "true" ]]; then + git pull --all + elif [[ ${LATEST} == "true" ]]; then + printf "Assuming user not pulling latest commits.\n" + else + printf "Pull latest commits? (y/N): " + read PULL + case ${PULL:0:1} in + y|Y ) + printf "Pulling latest commits.\n" + git pull --all + ;; + * ) + printf "Not pulling latest commits.\n" + ;; + esac + if ! [[ "$PULL" =~ ^[[:alnum:]]+$ ]]; then + printf "Assuming user not pulling latest commits.\n" + fi fi } -npmtransbundle() { +pnpmtransbundle() { cd $1 if [[ "$2" == "library" ]]; then npm install --quiet &> '/dev/null' npm run build --quiet &> '/dev/null' sudo npm link --quiet &> '/dev/null' - elif [[ "$2" == "frontend" ]] || [[ "$2" == "template" ]]; then - npm install --quiet &> '/dev/null' - npm link decky-frontend-lib --quiet &> '/dev/null' - npm run build --quiet &> '/dev/null' + elif [[ "$2" == "frontend" ]]; then + pnpm i &> '/dev/null' + pnpm run build &> '/dev/null' + elif [[ "$2" == "template" ]]; then + pnpm i &> '/dev/null' + pnpm run build &> '/dev/null' fi } -printf "Installing Steam Deck Plugin Loader contributor/developer (no Steam Deck)..." -printf "\nTHIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK! -Not planning to contribute to or develop for PluginLoader? -Then you should not be using this script.\n" +if ! [[ $count -gt 4 ]] ; then + printf "Installing Steam Deck Plugin Loader contributor/developer (no Steam Deck)..." -printf "\nThis script requires you to have nodejs installed. (If nodejs doesn't bundle npm on your OS/distro, then npm is required as well).\n" + printf "\nTHIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK! + Not planning to contribute to or develop for PluginLoader? + Then you should not be using this script.\n" -if [[ -z $1 ]]; then + printf "\nThis script requires you to have nodejs installed. (If nodejs doesn't bundle npm on your OS/distro, then npm is required as well).\n" +fi + +if ! [[ $count -gt 0 ]] ; then read -p "Press any key to continue" fi +printf "\n" + if [[ "$CLONEFOLDER" == "" ]]; then - setfolder "$CLONEFOLDER" "clone" + printf "Enter the directory in /home/user/ to clone to.\n" + printf "The clone directory would be: ${HOME}/git \n" + read -p "Enter your clone directory: " CLONEFOLDER + if ! [[ "$CLONEFOLDER" =~ ^[[:alnum:]]+$ ]]; then + printf "Folder name not provided. Using default, '${DEFAULT}'.\n" + CLONEFOLDER="${DEFAULT}" + fi fi CLONEDIR="$HOME/$CLONEFOLDER" ## Create folder structure -printf "\nCloning git repositories.\n" +printf "Cloning git repositories.\n" mkdir -p ${CLONEDIR} &> '/dev/null' @@ -92,37 +119,47 @@ mkdir -p ${CLONEDIR} &> '/dev/null' # rm -r ${CLONEDIR}/pluginlibrary # rm -r ${CLONEDIR}/plugintemplate -clonefromto "https://github.com/SteamDeckHomebrew/PluginLoader" ${CLONEDIR}/pluginloader react-frontend-plugins +clonefromto "https://github.com/SteamDeckHomebrew/PluginLoader" ${CLONEDIR}/pluginloader "$LOADERBRANCH" -clonefromto "https://github.com/SteamDeckHomebrew/decky-frontend-lib" ${CLONEDIR}/pluginlibrary +clonefromto "https://github.com/SteamDeckHomebrew/decky-frontend-lib" ${CLONEDIR}/pluginlibrary "$LIBRARYBRANCH" -clonefromto "https://github.com/SteamDeckHomebrew/decky-plugin-template" ${CLONEDIR}/plugintemplate +clonefromto "https://github.com/SteamDeckHomebrew/decky-plugin-template" ${CLONEDIR}/plugintemplate "$TEMPLATEBRANCH" ## install python dependencies (maybe use venv?) -python -m pip3 install -r ${CLONEDIR}/pluginloader/requirements.txt +python -m pip install -r ${CLONEDIR}/pluginloader/requirements.txt &> '/dev/null' ## Transpile and bundle typescript + +[ "$UID" -eq 0 ] || printf "Input password to proceed with install.\n" + type npm &> '/dev/null' NPMLIVES=$? -if ! [[ "$NPMLIVES" -eq 0 ]]; then - printf "npm needs to be installed, exiting.\n" +if ! [[ "$PNPMLIVES" -eq 0 ]]; then + printf "npm does not appear to be installed, exiting.\n" exit 1 fi -[ "$UID" -eq 0 ] || printf "Input password to install typscript compiler.\n" +sudo npm install -g pnpm &> '/dev/null' + +type pnpm &> '/dev/null' -sudo npm install --quiet -g tsc &> '/dev/null' +PNPMLIVES=$? + +if ! [[ "$PNPMLIVES" -eq 0 ]]; then + printf "pnpm does not appear to be installed, exiting.\n" + exit 1 +fi printf "Transpiling and bundling typescript.\n" -npmtransbundle ${CLONEDIR}/pluginlibrary/ "library" +pnpmtransbundle ${CLONEDIR}/pluginlibrary/ "library" -npmtransbundle ${CLONEDIR}/pluginloader/frontend "frontend" +pnpmtransbundle ${CLONEDIR}/pluginloader/frontend "frontend" -npmtransbundle ${CLONEDIR}/plugintemplate "template" +pnpmtransbundle ${CLONEDIR}/plugintemplate "template" printf "Plugin Loader is located at '${CLONEDIR}/pluginloader/'.\n" |
