Issue
The CLI uses a confusing dual flag system for controlling dry-run vs live execution that could lead to user errors.
Current behavior
Both execute and run commands have:
--dry-run (defaults to true)
--execute (defaults to false)
To actually run (not dry-run), users must pass --execute, which overrides the default --dry-run=true.
Problems
- Counter-intuitive: Users might expect
--dry-run=false to enable live execution
- Documentation gap: The relationship between these flags isn't clearly explained
- Error-prone: Easy to forget
--execute and accidentally run dry-run when expecting live execution
Source evidence
File: src/cli.ts lines for execute command:
.option("--dry-run", "Log actions without executing", true)
.option("--execute", "Actually execute the plan (opt-in)", false)
Runtime logic: const dryRun = !opts.execute;
Suggested improvements
- Documentation: Add clear explanation of flag interaction to CLI reference
- UX: Consider simplifying to single
--execute flag (dry-run by default)
- Validation: Add warning when conflicting flags are used
Related
Connected to issue #2 about unclear dry-run behavior in quickstart guide.
Issue
The CLI uses a confusing dual flag system for controlling dry-run vs live execution that could lead to user errors.
Current behavior
Both
executeandruncommands have:--dry-run(defaults totrue)--execute(defaults tofalse)To actually run (not dry-run), users must pass
--execute, which overrides the default--dry-run=true.Problems
--dry-run=falseto enable live execution--executeand accidentally run dry-run when expecting live executionSource evidence
File:
src/cli.tslines for execute command:Runtime logic:
const dryRun = !opts.execute;Suggested improvements
--executeflag (dry-run by default)Related
Connected to issue #2 about unclear dry-run behavior in quickstart guide.