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,39 @@
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
build-backend = "hatchling.build"
|
||||
|
||||
[project]
|
||||
name = "triggershell"
|
||||
version = "0.1.0"
|
||||
description = "CLI launcher for the TriggerShell web app - run configured shell scripts from a browser."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.9"
|
||||
license = "MIT"
|
||||
authors = [{ name = "TriggerShell contributors" }]
|
||||
dependencies = ["typer>=0.12", "rich>=13.7", "pyyaml>=6.0", "argon2-cffi>=23.1"]
|
||||
|
||||
[project.scripts]
|
||||
triggershell = "triggershell.cli:app"
|
||||
|
||||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["triggershell"]
|
||||
|
||||
[tool.hatch.build.targets.wheel.force-include]
|
||||
"app" = "triggershell/_app"
|
||||
|
||||
[tool.hatch.build.targets.sdist]
|
||||
include = ["triggershell", "app", "README.md"]
|
||||
exclude = ["app/node_modules", "app/.next", "app/drizzle.config.ts.bak"]
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 120
|
||||
target-version = "py39"
|
||||
|
||||
[tool.ruff.lint]
|
||||
select = ["E", "F", "I", "UP", "B"]
|
||||
# B008: typer's `= typer.Option(...)` / `= typer.Argument(...)` defaults are the intended API, not a bug.
|
||||
# UP045: `X | None` needs 3.10 at runtime for typer's introspection; this project targets 3.9+.
|
||||
ignore = ["B008", "UP045"]
|
||||
|
||||
[dependency-groups]
|
||||
dev = ["ruff>=0.6", "pytest>=8.0"]
|
||||
Reference in New Issue
Block a user