Initial implementation of TriggerShell
A Python CLI (typer) that bootstraps Node/pnpm and launches a Next.js 16 web app for running configured shell scripts: YAML config validated by a shared Zod schema, dynamic per-script forms mapped to shadcn controls, argv-safe execa execution with live WebSocket streaming, SQLite/Drizzle run history, and optional argon2 session + API token auth. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env node
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
function getArg(name) {
|
||||
const index = args.indexOf(name);
|
||||
return index === -1 ? undefined : args[index + 1];
|
||||
}
|
||||
|
||||
const targetDir = getArg("--dir");
|
||||
const olderThanDays = getArg("--days");
|
||||
const types = getArg("--types");
|
||||
|
||||
console.log(`Scanning ${targetDir} for files older than ${olderThanDays} days (types: ${types})`);
|
||||
if (process.env.CLEANUP_API_KEY) {
|
||||
console.log("Using configured external API key.");
|
||||
}
|
||||
console.log("No matching files found. Cleanup complete.");
|
||||
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
env=""
|
||||
replicas=""
|
||||
dry_run="false"
|
||||
|
||||
while [[ $# -gt 0 ]]; do
|
||||
case "$1" in
|
||||
--env) env="$2"; shift 2 ;;
|
||||
--replicas) replicas="$2"; shift 2 ;;
|
||||
--dry-run) dry_run="true"; shift ;;
|
||||
*) echo "unknown argument: $1" >&2; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
echo "Deploying to '${env}' with ${replicas} replicas (dry_run=${dry_run})"
|
||||
if [[ -n "${SLACK_CHANNEL:-}" ]]; then
|
||||
echo "Would notify Slack channel: ${SLACK_CHANNEL}"
|
||||
fi
|
||||
|
||||
for i in $(seq 1 5); do
|
||||
echo "[${i}/5] working..."
|
||||
sleep 1
|
||||
done
|
||||
|
||||
echo "Deploy complete."
|
||||
Reference in New Issue
Block a user