- introduce `sdt` subcommands for run, debug, setup, env, favorite, and explain - add project/workspace discovery plus config bootstrap and migration helpers - expand tests for CLI parsing, project role detection, and headless flows
607 lines
14 KiB
JSON
607 lines
14 KiB
JSON
{
|
|
"name": "DevTool-master",
|
|
"version": "0.1.0",
|
|
"targets": [],
|
|
"workflows": [
|
|
{
|
|
"id": "web",
|
|
"label": "Build Detected Web App",
|
|
"description": "Build the detected web frontend only.",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": "build web",
|
|
"aliases": [
|
|
"build frontend",
|
|
"build web app"
|
|
],
|
|
"tags": [
|
|
"detected",
|
|
"web",
|
|
"frontend"
|
|
],
|
|
"dependsOn": [],
|
|
"requireFiles": [
|
|
"scripts\\publish-app.py",
|
|
"src/DevTool.Host.Gui/TauriShell/package.json"
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "web:run",
|
|
"label": "python scripts\\publish-app.py --target web",
|
|
"command": "python",
|
|
"args": [
|
|
"scripts\\publish-app.py",
|
|
"--target",
|
|
"web"
|
|
],
|
|
"workingDir": ".",
|
|
"action": null,
|
|
"actionArgs": [],
|
|
"requires": [
|
|
{
|
|
"tool": "python",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "tauri",
|
|
"label": "Build Detected Tauri Desktop App",
|
|
"description": "Build the detected Tauri desktop app. This may build frontend assets first.",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": "build desktop",
|
|
"aliases": [
|
|
"build tauri",
|
|
"build desktop app"
|
|
],
|
|
"tags": [
|
|
"detected",
|
|
"desktop",
|
|
"tauri"
|
|
],
|
|
"dependsOn": [],
|
|
"requireFiles": [
|
|
"scripts\\publish-app.py",
|
|
"src/DevTool.Host.Gui/TauriShell/package.json",
|
|
"src/DevTool.Host.Gui/TauriShell/src-tauri/tauri.conf.json"
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "tauri:run",
|
|
"label": "python scripts\\publish-app.py --target tauri --tauri-bundles none",
|
|
"command": "python",
|
|
"args": [
|
|
"scripts\\publish-app.py",
|
|
"--target",
|
|
"tauri",
|
|
"--tauri-bundles",
|
|
"none"
|
|
],
|
|
"workingDir": ".",
|
|
"action": null,
|
|
"actionArgs": [],
|
|
"requires": [
|
|
{
|
|
"tool": "python",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "sync-output",
|
|
"label": "Sync Newest Artifacts To output/",
|
|
"description": "Copy the newest detected build artifacts into output/ without rebuilding.",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": "sync output",
|
|
"aliases": [
|
|
"copy artifacts",
|
|
"refresh output"
|
|
],
|
|
"tags": [
|
|
"output",
|
|
"artifacts"
|
|
],
|
|
"dependsOn": [],
|
|
"requireFiles": [
|
|
"scripts\\sync-output.py"
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "sync-output:run",
|
|
"label": "python scripts\\sync-output.py",
|
|
"command": "python",
|
|
"args": [
|
|
"scripts\\sync-output.py"
|
|
],
|
|
"workingDir": ".",
|
|
"action": null,
|
|
"actionArgs": [],
|
|
"requires": [
|
|
{
|
|
"tool": "python",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "stage-output",
|
|
"label": "Stage All Detected Outputs",
|
|
"description": "Build and stage every detected ship target for this repo, such as web, desktop, gateway, or sidecar.",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": "stage all outputs",
|
|
"aliases": [
|
|
"stage outputs",
|
|
"publish all outputs",
|
|
"bundle outputs"
|
|
],
|
|
"tags": [
|
|
"output",
|
|
"detected",
|
|
"all-targets"
|
|
],
|
|
"dependsOn": [],
|
|
"requireFiles": [
|
|
"scripts\\publish-output.py"
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "stage-output:run",
|
|
"label": "python scripts\\publish-output.py",
|
|
"command": "python",
|
|
"args": [
|
|
"scripts\\publish-output.py"
|
|
],
|
|
"workingDir": ".",
|
|
"action": null,
|
|
"actionArgs": [],
|
|
"requires": [
|
|
{
|
|
"tool": "python",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "publish-primary-dotnet",
|
|
"label": "Publish sdt",
|
|
"description": "Publish the primary .NET executable to output/ only. This does not stage every detected deliverable.",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": "publish cli",
|
|
"aliases": [
|
|
"publish exe",
|
|
"publish tool",
|
|
"publish main app"
|
|
],
|
|
"tags": [
|
|
"dotnet",
|
|
"publish",
|
|
"primary"
|
|
],
|
|
"dependsOn": [],
|
|
"requireFiles": [
|
|
"DevTool.csproj"
|
|
],
|
|
"steps": [
|
|
{
|
|
"id": "publish-primary-dotnet:run",
|
|
"label": "dotnet publish DevTool.csproj -c Release -o output",
|
|
"command": "dotnet",
|
|
"args": [
|
|
"publish",
|
|
"DevTool.csproj",
|
|
"-c",
|
|
"Release",
|
|
"-o",
|
|
"output"
|
|
],
|
|
"workingDir": ".",
|
|
"action": null,
|
|
"actionArgs": [],
|
|
"requires": [
|
|
{
|
|
"tool": "dotnet",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "build",
|
|
"label": "Build",
|
|
"description": "Build detected project stacks",
|
|
"group": "Build",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"dependsOn": [],
|
|
"requireFiles": [],
|
|
"steps": [
|
|
{
|
|
"id": "dotnet-build",
|
|
"label": "dotnet build",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "dotnet-build",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "npm-build",
|
|
"label": "npm run build",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell",
|
|
"action": "npm-build",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "cargo-build",
|
|
"label": "cargo build",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "cargo-build",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "tauri-build",
|
|
"label": "tauri build",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell",
|
|
"action": "tauri-build",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "deps-refresh",
|
|
"label": "Refresh Dependencies",
|
|
"description": "Restore/install dependency stacks",
|
|
"group": "Deps",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"dependsOn": [],
|
|
"requireFiles": [],
|
|
"steps": [
|
|
{
|
|
"id": "dotnet-restore",
|
|
"label": "dotnet restore",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "dotnet-restore",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "npm-ci",
|
|
"label": "npm ci",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell",
|
|
"action": "npm-ci",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "test",
|
|
"label": "Run Tests",
|
|
"description": "Run detected test stacks",
|
|
"group": "Test",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"dependsOn": [],
|
|
"requireFiles": [],
|
|
"steps": [
|
|
{
|
|
"id": "dotnet-test",
|
|
"label": "dotnet test",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "dotnet-test",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "npm-test",
|
|
"label": "npm test",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell",
|
|
"action": "npm-test",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "python-pytest",
|
|
"label": "python -m pytest",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "python-pytest",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "cargo-test",
|
|
"label": "cargo test",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "cargo-test",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "repo-health",
|
|
"label": "Repo Health",
|
|
"description": "Check repo status and fetch remotes",
|
|
"group": "Repo",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"dependsOn": [],
|
|
"requireFiles": [],
|
|
"steps": [
|
|
{
|
|
"id": "git-status",
|
|
"label": "git status",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "git-status",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
},
|
|
{
|
|
"id": "git-fetch",
|
|
"label": "git fetch",
|
|
"command": null,
|
|
"args": [],
|
|
"workingDir": ".",
|
|
"action": "git-fetch",
|
|
"actionArgs": [],
|
|
"requires": []
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"env": [
|
|
{
|
|
"key": "SDT_LOG_LEVEL",
|
|
"description": "CLI log verbosity",
|
|
"default": "information",
|
|
"options": [
|
|
"trace",
|
|
"debug",
|
|
"information",
|
|
"warning",
|
|
"error",
|
|
"critical"
|
|
]
|
|
}
|
|
],
|
|
"envProfiles": {
|
|
"active": "dev",
|
|
"profiles": [
|
|
{
|
|
"id": "dev",
|
|
"description": "Local development defaults",
|
|
"inherits": [],
|
|
"values": {
|
|
"SDT_ENV_PROFILE": "dev",
|
|
"SDT_LOG_LEVEL": "information"
|
|
}
|
|
},
|
|
{
|
|
"id": "ci",
|
|
"description": "Continuous integration defaults",
|
|
"inherits": [
|
|
"dev"
|
|
],
|
|
"values": {
|
|
"SDT_ENV_PROFILE": "ci",
|
|
"CI": "true",
|
|
"SDT_LOG_LEVEL": "warning"
|
|
}
|
|
},
|
|
{
|
|
"id": "release",
|
|
"description": "Release build defaults",
|
|
"inherits": [
|
|
"dev"
|
|
],
|
|
"values": {
|
|
"SDT_ENV_PROFILE": "release",
|
|
"SDT_LOG_LEVEL": "warning"
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"toolchains": {
|
|
"python": {
|
|
"executable": "python",
|
|
"windowsExecutable": "py",
|
|
"launcherVersion": null,
|
|
"venvDir": ".venv",
|
|
"profiles": [],
|
|
"pipScript": null
|
|
},
|
|
"node": {
|
|
"packageManager": "npm",
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell"
|
|
}
|
|
},
|
|
"tooling": {
|
|
"defaultInstallPolicy": "Prompt",
|
|
"tools": [
|
|
{
|
|
"tool": "cargo",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "dotnet",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "git",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "node",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "npm",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "python",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
},
|
|
{
|
|
"tool": "tauri",
|
|
"preferredInstallCommands": [],
|
|
"executables": []
|
|
}
|
|
]
|
|
},
|
|
"project": {
|
|
"type": "tauri",
|
|
"rootHints": [
|
|
"*.sln",
|
|
".git",
|
|
"Cargo.toml",
|
|
"package.json",
|
|
"scripts",
|
|
"tauri.conf.json"
|
|
],
|
|
"artifacts": [
|
|
"bin",
|
|
"obj",
|
|
".sdt/debug"
|
|
]
|
|
},
|
|
"debug": {
|
|
"profiles": [
|
|
{
|
|
"id": "dotnet-run",
|
|
"label": "Run .NET app",
|
|
"description": "",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"type": "dotnet",
|
|
"command": "dotnet",
|
|
"args": [
|
|
"run"
|
|
],
|
|
"workingDir": ".",
|
|
"env": {},
|
|
"requires": [
|
|
{
|
|
"tool": "dotnet",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
],
|
|
"attach": {
|
|
"kind": "manual",
|
|
"port": null,
|
|
"processName": null,
|
|
"note": "Attach your IDE debugger to the running dotnet process."
|
|
}
|
|
},
|
|
{
|
|
"id": "npm-dev",
|
|
"label": "Run npm dev server",
|
|
"description": "",
|
|
"category": null,
|
|
"guidedName": null,
|
|
"aliases": [],
|
|
"tags": [],
|
|
"type": "node",
|
|
"command": "npm",
|
|
"args": [
|
|
"run",
|
|
"dev"
|
|
],
|
|
"workingDir": "src\\DevTool.Host.Gui\\TauriShell",
|
|
"env": {},
|
|
"requires": [
|
|
{
|
|
"tool": "node",
|
|
"installPolicy": "Prompt"
|
|
},
|
|
{
|
|
"tool": "npm",
|
|
"installPolicy": "Prompt"
|
|
}
|
|
],
|
|
"attach": null
|
|
}
|
|
],
|
|
"diagnostics": {
|
|
"enabled": true,
|
|
"outputDir": ".sdt/debug",
|
|
"includeAllEnv": false,
|
|
"captureEnvKeys": [
|
|
"SDT_LOG_LEVEL",
|
|
"DOTNET_CLI_HOME",
|
|
"NUGET_PACKAGES",
|
|
"PIP_CACHE_DIR",
|
|
"NVM_HOME",
|
|
"NVM_SYMLINK"
|
|
],
|
|
"redactSensitive": true,
|
|
"sensitiveKeyPatterns": [
|
|
"TOKEN",
|
|
"SECRET",
|
|
"PASSWORD",
|
|
"PWD",
|
|
"CREDENTIAL",
|
|
"API_KEY",
|
|
"ACCESS_KEY",
|
|
"PRIVATE_KEY"
|
|
],
|
|
"redactionAllowKeys": [],
|
|
"bundleOnFailure": true
|
|
}
|
|
}
|
|
}
|