summaryrefslogtreecommitdiff
path: root/contrib/nodeck.sh
diff options
context:
space:
mode:
authorTrainDoctor <11465594+TrainDoctor@users.noreply.github.com>2022-06-06 13:03:39 -0700
committerGitHub <noreply@github.com>2022-06-06 13:03:39 -0700
commited1a9222b4b8693ad95d1c3081ae9d446762d12c (patch)
treee192e3460ff415fd61278b3ef54161fbc9fd52c5 /contrib/nodeck.sh
parent73b36b776aee0f79f1579b7a02ee86073c5d8bd6 (diff)
downloaddecky-loader-ed1a9222b4b8693ad95d1c3081ae9d446762d12c.tar.gz
decky-loader-ed1a9222b4b8693ad95d1c3081ae9d446762d12c.zip
Rename pc.sh to nodeck.sh to represent intent
Diffstat (limited to 'contrib/nodeck.sh')
-rwxr-xr-xcontrib/nodeck.sh126
1 files changed, 126 insertions, 0 deletions
diff --git a/contrib/nodeck.sh b/contrib/nodeck.sh
new file mode 100755
index 00000000..8a0d8deb
--- /dev/null
+++ b/contrib/nodeck.sh
@@ -0,0 +1,126 @@
+#!/bin/sh
+
+## Pre-parse arugments for ease of use
+CLONEFOLDER=${1:-""}
+
+setfolder() {
+ if [[ "$2" == "clone" ]]; then
+ local ACTION="clone"
+ local DEFAULT="git"
+ elif [[ "$2" == "install" ]]; then
+ local ACTION="install"
+ local DEFAULT="loaderdev"
+ fi
+
+ 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
+}
+
+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'
+ CODE=$?
+ if [[ $CODE -eq 128 ]]; then
+ cd $2
+ git fetch &> '/dev/null'
+ fi
+}
+
+npmtransbundle() {
+ 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'
+ fi
+}
+
+printf "Installing Steam Deck Plugin Loader contributor (no Steam Deck)..."
+
+printf "\nTHIS SCRIPT ASSUMES YOU ARE RUNNING IT ON A PC, NOT THE DECK!
+If you are not planning to contribute to PluginLoader then you should not be using this script.\n"
+
+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"
+
+if [[ -z $1 ]]; then
+ read -p "Press any key to continue"
+fi
+
+if [[ "$CLONEFOLDER" == "" ]]; then
+ setfolder "$CLONEFOLDER" "clone"
+fi
+
+CLONEDIR="$HOME/$CLONEFOLDER"
+
+## Create folder structure
+
+printf "\nCloning git repositories.\n"
+
+mkdir -p ${CLONEDIR} &> '/dev/null'
+
+### remove folders just in case
+# rm -r ${CLONEDIR}/pluginloader
+# rm -r ${CLONEDIR}/pluginlibrary
+# rm -r ${CLONEDIR}/plugintemplate
+
+clonefromto "https://github.com/SteamDeckHomebrew/PluginLoader" ${CLONEDIR}/pluginloader react-frontend-plugins
+
+clonefromto "https://github.com/SteamDeckHomebrew/decky-frontend-lib" ${CLONEDIR}/pluginlibrary
+
+clonefromto "https://github.com/SteamDeckHomebrew/decky-plugin-template" ${CLONEDIR}/plugintemplate
+
+## Transpile and bundle typescript
+type npm &> '/dev/null'
+
+NPMLIVES=$?
+
+if ! [[ "$NPMLIVES" -eq 0 ]]; then
+ printf "npm needs to be installed, exiting.\n"
+ exit 1
+fi
+
+[ "$UID" -eq 0 ] || printf "Input password to install typscript compiler.\n"
+
+sudo npm install --quiet -g tsc &> '/dev/null'
+
+printf "Transpiling and bundling typescript.\n"
+
+npmtransbundle ${CLONEDIR}/pluginlibrary/ "library"
+
+npmtransbundle ${CLONEDIR}/pluginloader/frontend "frontend"
+
+npmtransbundle ${CLONEDIR}/plugintemplate "template"
+
+printf "Plugin Loader is located at '${CLONEDIR}/pluginloader/'.\n"
+
+printf "Run in console or in a script these commands to run your development version:\n'export PLUGIN_PATH=${CLONEDIR}/plugins; export CHOWN_PLUGIN_PATH=0; sudo -E python3 ${CLONEDIR}/pluginloader/backend/main.py'\n"
+
+printf "All done!\n"