generated from SteamDeckHomebrew/decky-plugin-template
-
-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit ab000b2
Showing
24 changed files
with
1,872 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
lib-cov | ||
*.seed | ||
*.log | ||
*.csv | ||
*.dat | ||
*.out | ||
*.pid | ||
*.gz | ||
*.swp | ||
|
||
pids | ||
logs | ||
results | ||
tmp | ||
|
||
# Coverage reports | ||
coverage | ||
|
||
# API keys and secrets | ||
.env | ||
|
||
# Dependency directory | ||
node_modules | ||
bower_components | ||
.pnpm-store | ||
|
||
# Editors | ||
.idea | ||
*.iml | ||
|
||
# OS metadata | ||
.DS_Store | ||
Thumbs.db | ||
|
||
# Ignore built ts files | ||
dist/ | ||
|
||
__pycache__/ | ||
|
||
/.yalc | ||
yalc.lock | ||
|
||
.vscode/settings.json | ||
|
||
# Ignore output folder | ||
|
||
backend/out | ||
|
||
# Make sure to ignore any instance of the loader's decky_plugin.py | ||
decky_plugin.py | ||
|
||
# Ignore decky CLI for building plugins | ||
out | ||
out/* | ||
cli/ | ||
cli/* | ||
cli/decky |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
#!/usr/bin/env bash | ||
CLI_LOCATION="$(pwd)/cli" | ||
echo "Building plugin in $(pwd)" | ||
printf "Please input sudo password to proceed.\n" | ||
|
||
# read -s sudopass | ||
|
||
# printf "\n" | ||
|
||
echo $sudopass | sudo $CLI_LOCATION/decky plugin build $(pwd) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
#!/usr/bin/env bash | ||
SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]:-$0}"; )" &> /dev/null && pwd 2> /dev/null; )"; | ||
# printf "${SCRIPT_DIR}\n" | ||
# printf "$(dirname $0)\n" | ||
if ! [[ -e "${SCRIPT_DIR}/settings.json" ]]; then | ||
printf '.vscode/settings.json does not exist. Creating it with default settings. Exiting afterwards. Run your task again.\n\n' | ||
cp "${SCRIPT_DIR}/defsettings.json" "${SCRIPT_DIR}/settings.json" | ||
exit 1 | ||
else | ||
printf '.vscode/settings.json does exist. Congrats.\n' | ||
printf 'Make sure to change settings.json to match your deck.\n' | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
{ | ||
"deckip" : "steamdeck.local", | ||
"deckport" : "22", | ||
"deckuser" : "deck", | ||
"deckpass" : "ssap", | ||
"deckkey" : "-i ${env:HOME}/.ssh/id_rsa", | ||
"deckdir" : "/home/deck", | ||
"pluginname": "Example Plugin", | ||
"python.analysis.extraPaths": [ | ||
"./py_modules" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,48 @@ | ||
#!/usr/bin/env bash | ||
PNPM_INSTALLED="$(which pnpm)" | ||
DOCKER_INSTALLED="$(which docker)" | ||
CLI_INSTALLED="$(pwd)/cli/decky" | ||
|
||
# echo "$PNPM_INSTALLED" | ||
# echo "$DOCKER_INSTALLED" | ||
# echo "$CLI_INSTALLED" | ||
|
||
echo "If you are using alpine linux, do not expect any support." | ||
if [[ "$PNPM_INSTALLED" =~ "which" ]]; then | ||
echo "pnpm is not currently installed, you can install it via your distro's package managment system or via a script that will attempt to do a manual install based on your system. If you wish to proceed with installing via the script then answer "no" (capitals do not matter) and proceed with the rest of the script. Otherwise, just hit enter to proceed and use the script." | ||
read run_pnpm_script | ||
if [[ "$run_pnpm_script" =~ "n" ]]; then | ||
echo "You have chose to install pnpm via npm or your distros package manager. Please make sure to do so before attempting to build your plugin." | ||
else | ||
CURL_INSTALLED="$(which curl)" | ||
WGET_INSTALLED="$(which wget)" | ||
if [[ "$CURL_INSTALLED" =~ "which" ]]; then | ||
printf "curl not found, attempting with wget.\n" | ||
if [[ "$WGET_INSTALLED" =~ "which" ]]; then | ||
printf "wget not found, please install wget or curl.\n" | ||
printf "Could not install pnpm as curl and wget were not found.\n" | ||
else | ||
wget -qO- https://get.pnpm.io/install.sh | sh - | ||
fi | ||
else | ||
curl -fsSL https://get.pnpm.io/install.sh | sh - | ||
fi | ||
fi | ||
fi | ||
|
||
if [[ "$DOCKER_INSTALLED" =~ "which" ]]; then | ||
echo "Docker is not currently installed, in order build plugins with a backend you will need to have Docker installed. Please install Docker via the preferred method for your distribution." | ||
fi | ||
|
||
if ! test -f "$CLI_INSTALLED"; then | ||
echo "The Decky CLI tool (binary file is just called "decky") is used to build your plugin as a zip file which you can then install on your Steam Deck to perform testing. We highly recommend you install it. Hitting enter now will run the script to install Decky CLI and extract it to a folder called cli in the current plugin directory. You can also type 'no' and hit enter to skip this but keep in mind you will not have a usable plugin without building it." | ||
read run_cli_script | ||
if [[ "$run_cli_script" =~ "n" ]]; then | ||
echo "You have chosen to not install the Decky CLI tool to build your plugins. Please install this tool to build and test your plugin before submitting it to the Plugin Database." | ||
else | ||
mkdir $(pwd)/cli | ||
curl -L -o $(pwd)/cli/decky "https://github.com/SteamDeckHomebrew/cli/releases/latest/download/decky" | ||
chmod +x $(pwd)/cli/decky | ||
echo "Decky CLI tool is now installed and you can build plugins into easy zip files using the "Build Zip" Task in vscodium." | ||
fi | ||
fi |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,148 @@ | ||
{ | ||
"version": "2.0.0", | ||
"tasks": [ | ||
//PRELIMINARY SETUP TASKS | ||
//Dependency setup task | ||
{ | ||
"label": "depsetup", | ||
"type": "shell", | ||
"group": "none", | ||
"detail": "Install depedencies for basic setup", | ||
"linux": { | ||
"command": "${workspaceFolder}/.vscode/setup.sh", | ||
}, | ||
// // placeholder for windows scripts, not currently planned | ||
// "windows": { | ||
// "command": "call -c ${workspaceFolder}\\.vscode\\setup.bat", | ||
// }, | ||
"problemMatcher": [] | ||
}, | ||
//pnpm setup task to grab all needed modules | ||
{ | ||
"label": "pnpmsetup", | ||
"type": "shell", | ||
"group": "none", | ||
"detail": "Setup pnpm", | ||
"command": "which pnpm && pnpm i", | ||
"problemMatcher": [] | ||
}, | ||
//Preliminary "All-in-one" setup task | ||
{ | ||
"label": "setup", | ||
"detail": "Set up depedencies, pnpm and update Decky Frontend Library.", | ||
"dependsOrder": "sequence", | ||
"dependsOn": [ | ||
"depsetup", | ||
"pnpmsetup", | ||
"updatefrontendlib" | ||
], | ||
"problemMatcher": [] | ||
}, | ||
//Preliminary Deploy Config Setup | ||
{ | ||
"label": "settingscheck", | ||
"type": "shell", | ||
"group": "none", | ||
"detail": "Check that settings.json has been created", | ||
"linux": { | ||
"command": "${workspaceFolder}/.vscode/config.sh", | ||
}, | ||
// // placeholder for windows scripts, not currently planned | ||
// "windows": { | ||
// "command": "call ${workspaceFolder}\\.vscode\\config.bat", | ||
// }, | ||
"problemMatcher": [] | ||
}, | ||
//BUILD TASKS | ||
{ | ||
"label": "cli-build", | ||
"group": "build", | ||
"detail": "Build plugin with CLI", | ||
"linux": { | ||
"command": "${workspaceFolder}/.vscode/build.sh", | ||
}, | ||
// // placeholder for windows logic, not currently planned | ||
// "windows": { | ||
// "command": "call ${workspaceFolder}\\.vscode\\build.bat", | ||
// }, | ||
"problemMatcher": [] | ||
}, | ||
//"All-in-one" build task | ||
{ | ||
"label": "build", | ||
"group": "build", | ||
"detail": "Build decky-plugin-template", | ||
"dependsOrder": "sequence", | ||
"dependsOn": [ | ||
"setup", | ||
"settingscheck", | ||
"cli-build", | ||
], | ||
"problemMatcher": [] | ||
}, | ||
//DEPLOY TASKS | ||
//Copies the zip file of the built plugin to the plugins folder | ||
{ | ||
"label": "copyzip", | ||
"detail": "Deploy plugin zip to deck", | ||
"type": "shell", | ||
"group": "none", | ||
"dependsOn": [ | ||
"chmodplugins" | ||
], | ||
"command": "rsync -azp --chmod=D0755,F0755 --rsh='ssh -p ${config:deckport} ${config:deckkey}' out/ ${config:deckuser}@${config:deckip}:${config:deckdir}/homebrew/plugins", | ||
"problemMatcher": [] | ||
}, | ||
// | ||
{ | ||
"label": "extractzip", | ||
"detail": "", | ||
"type": "shell", | ||
"group": "none", | ||
"command": "echo '${config:deckdir}/homebrew/plugins/${config:pluginname}.zip' && ssh ${config:deckuser}@${config:deckip} -p ${config:deckport} ${config:deckkey} 'echo ${config:deckpass} | sudo -S mkdir 755 -p \"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|\")\" && echo ${config:deckpass} | sudo -S chown ${config:deckuser}:${config:deckuser} \"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|\")\" && echo ${config:deckpass} | sudo -S bsdtar -xzpf \"${config:deckdir}/homebrew/plugins/${config:pluginname}.zip\" -C \"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|g\")\" --strip-components=1 --fflags '", | ||
"problemMatcher": [] | ||
}, | ||
//"All-in-one" deploy task | ||
{ | ||
"label": "deploy", | ||
"dependsOrder": "sequence", | ||
"group": "none", | ||
"dependsOn": [ | ||
"copyzip", | ||
"extractzip" | ||
], | ||
"problemMatcher": [] | ||
}, | ||
//"All-in-on" build & deploy task | ||
{ | ||
"label": "builddeploy", | ||
"detail": "Builds plugin and deploys to deck", | ||
"dependsOrder": "sequence", | ||
"group": "none", | ||
"dependsOn": [ | ||
"build", | ||
"deploy" | ||
], | ||
"problemMatcher": [] | ||
}, | ||
//GENERAL TASKS | ||
//Update Decky Frontend Library, aka DFL | ||
{ | ||
"label": "updatefrontendlib", | ||
"type": "shell", | ||
"group": "build", | ||
"detail": "Update deck-frontend-lib aka DFL", | ||
"command": "pnpm update decky-frontend-lib --latest", | ||
"problemMatcher": [] | ||
}, | ||
//Used chmod plugins folder to allow copy-over of files | ||
{ | ||
"label": "chmodplugins", | ||
"detail": "chmods plugins folder to prevent perms issues", | ||
"type": "shell", | ||
"group": "none", | ||
"command": "ssh ${config:deckuser}@${config:deckip} -p ${config:deckport} ${config:deckkey} 'echo '${config:deckpass}' | sudo -S chmod -R ug+rw ${config:deckdir}/homebrew/plugins/'", | ||
"problemMatcher": [] | ||
}, | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
BSD 3-Clause License | ||
|
||
Copyright (c) 2023, Hypothetical Plugin Developer | ||
Original Copyright (c) 2022-2023, Steam Deck Homebrew | ||
|
||
All rights reserved. | ||
|
||
Redistribution and use in source and binary forms, with or without | ||
modification, are permitted provided that the following conditions are met: | ||
|
||
1. Redistributions of source code must retain the above copyright notice, this | ||
list of conditions and the following disclaimer. | ||
|
||
2. Redistributions in binary form must reproduce the above copyright notice, | ||
this list of conditions and the following disclaimer in the documentation | ||
and/or other materials provided with the distribution. | ||
|
||
3. Neither the name of the copyright holder nor the names of its | ||
contributors may be used to endorse or promote products derived from | ||
this software without specific prior written permission. | ||
|
||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" | ||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE | ||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE | ||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | ||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR | ||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | ||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
Oops, something went wrong.