decky-plugin-template/.vscode/tasks.json
2025-11-19 22:20:29 -08:00

200 lines
No EOL
8.3 KiB
JSON

{
"version": "2.0.0",
"tasks": [
//PRELIMINARY SETUP TASKS
//Dependency setup task
{
"label": "depsetup",
"type": "shell",
"group": "none",
"detail": "Install depedencies for basic setup",
"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",
"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",
"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 tmp in 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}:/tmp/plugins-tmp",
"problemMatcher": []
},
{
"label": "movetoplugins",
"detail": "Move plugin zip from tmp to plugins in deck",
"type": "shell",
"group": "none",
"dependsOn": [
"copyzip"
],
"command": "ssh -p ${config:deckport} ${config:deckkey} ${config:deckuser}@${config:deckip} \"echo ${config:deckpass} | sudo -S mkdir -p '${config:deckdir}/homebrew/plugins' && echo ${config:deckpass} | sudo -S mv /tmp/plugins-tmp/* '${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 -m 755 -p \"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|g\")\" && echo ${config:deckpass} | sudo -S chown ${config:deckuser}:${config:deckuser} \"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|g\")\" && 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": []
},
{
"label": "removezip",
"detail": "Remove plugin zip from deck",
"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 rm -f \"${config:deckdir}/homebrew/plugins/${config:pluginname}.zip\"'",
"problemMatcher": []
},
{
"label": "restoreperms",
"detail": "Restores permissions and ownership for plugin folder and files in deck",
"type": "shell",
"group": "none",
"command": "ssh ${config:deckuser}@${config:deckip} -p ${config:deckport} ${config:deckkey} 'PLUGIN_DIR=\"$(echo \"${config:deckdir}/homebrew/plugins/${config:pluginname}\" | sed \"s| |-|g\")\" && echo ${config:deckpass} | sudo -S chmod -R 775 \"$PLUGIN_DIR\" && echo ${config:deckpass} | sudo -S chown -R ${config:deckuser}:${config:deckuser} \"$PLUGIN_DIR\" && echo ${config:deckpass} | sudo -S chown root:root \"$PLUGIN_DIR\" && echo ${config:deckpass} | sudo -S chown root:root \"$PLUGIN_DIR/plugin.json\"'",
"problemMatcher": []
},
{
"label": "restartdecky",
"detail": "",
"type": "shell",
"group": "none",
"command": "ssh ${config:deckuser}@${config:deckip} -p ${config:deckport} ${config:deckkey} 'echo ${config:deckpass} | sudo -S systemctl restart plugin_loader.service'",
"problemMatcher": []
},
//"All-in-one" deploy task
{
"label": "deploy",
"dependsOrder": "sequence",
"group": "none",
"dependsOn": [
"copyzip",
"movetoplugins",
"extractzip",
"restoreperms"
],
"problemMatcher": []
},
//"All-in-on" build & deploy task
{
"label": "builddeploy",
"detail": "Builds plugin and deploys to deck",
"dependsOrder": "sequence",
"group": "none",
"dependsOn": [
"build",
"deploy",
],
"problemMatcher": []
},
//"All-in-on" build & deploy & restartdecky task
{
"label": "builddeployrestart",
"detail": "Builds plugin, deploys to deck and restart decky",
"dependsOrder": "sequence",
"group": "none",
"dependsOn": [
"build",
"deploy",
"restartdecky"
],
"problemMatcher": []
},
//GENERAL TASKS
//Update Decky Frontend Library, aka DFL
{
"label": "updatefrontendlib",
"type": "shell",
"group": "build",
"detail": "Update @decky/ui aka DFL",
"command": "pnpm update @decky/ui --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 chown ${config:deckuser} ${config:deckdir}/homebrew/plugins/'",
"problemMatcher": []
},
{
"label": "restartdecky",
"detail": "restarts decky",
"type": "shell",
"group": "none",
"command": "ssh ${config:deckuser}@${config:deckip} -p ${config:deckport} ${config:deckkey} 'echo '${config:deckpass}' | sudo -S systemctl restart plugin_loader'",
"problemMatcher": []
},
]
}