1.6 KiB
Ariadne CLI skeleton
Scope
Build only the CLI scaffolding and boilerplate first. Do not implement Clew AST import in this slice. Do not add route planning in this slice. Do not add Bazel tests in this slice.
Dependency setup
Use clap for CLI parsing.
Vendor clap in a separate prerequisite commit.
Add the CLI skeleton in a follow-up commit.
Command shape
The first CLI has no subcommands. The default command runs all declared stages.
Example:
ariadne --output-dir output/
Use --output-dir, not --output_dir, unless project convention later requires underscores.
Stage model
Model stages with a manually written typed Stage enum for now.
Defer compile-time generation until duplication creates a real problem.
A stage has:
- a name;
- prerequisites.
Stage execution can use dispatch logic instead of a common trait. The graph type stays stable across all stages.
Pipeline behavior
Running all stages runs each declared stage in dependency order. A future targeted stage command will also run its prerequisites first.
Each stage writes artifacts under:
<output-dir>/graph/<stage-name>/
graph is a literal directory name.
It is not a parameter.
A stage skips when its stage output already exists.
--force makes every invoked stage overwrite its output.
With --force, Ariadne removes each invoked stage output directory before it runs that stage.
Deferred questions
- Decide whether stage outputs need success markers.
- Decide whether stage names use kebab-case in output paths.
- Decide how future targeted stage invocation appears in the CLI.