Fallout-build / Fallout-build/Fallout
Expose the build model as data: fallout describe --json and plan --json
- Dominant language
- C#
- Stars
- 154
- Forks
- 19
- Avg merge
- 1d 22h
- Merged PRs (30d)
- 15
Description
### Problem
To learn what a Fallout build can do, a tool has to read `Build.cs`, follow its partial classes, resolve the attributes, and re-run the dependency resolution in its head. `--help` renders that same information as human text, and there is no machine-readable form of it. There is also no way to ask what a target *would* run without running it.
### Outcome
Two read-only commands that print the build model as JSON and never execute a target.
- `fallout describe --json` — every target, the dependency edges (`DependsOn`, `Before`, `After`, `Triggers`), every parameter with its CLR type, default value and required flag, tool requirements, and descriptions.
- `fallout plan --json` — the ordered list of targets that would run, with skip reasons. This is the existing plan resolution with the executor not attached.
### Acceptance criteria
- [ ] `fallout describe --json` emits a schema-versioned document covering targets, dependency edges, parameters, and tool requirements
- [ ] `fallout plan --json` emits the resolved plan and invokes no target
- [ ] Both commands leave the working tree untouched and run no external tool
- [ ] Both exit non-zero with a machine-readable error when the build project fails to load
- [ ] `--help` is rendered from the same model, so the human and machine views cannot drift
### Notes
`src/Fallout.Build/Execution/ExecutionPlanner.cs` already computes the plan, then discards it into the console. #391 (the Serilog and NDJSON output work) names `describe --json` as a motivation but does not track it.
Contributor guide
Assessment
This issue has not been assessed yet.