`cabal-validate`: Too many ways to choose steps
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
The CLI defaults are unclear, there's about three different ways to choose which steps are run, and it's not obvious how they interact. (Even to me, and I wrote it!)
For example:
- `--cli` tests `cabal-install` in addition to `Cabal`, but there's no `--cli-only` flag.
- `--run-lib-tests` and similar options exist only to add or remove specific `--step`s. (But will be ignored if any `--steps` are given.)
- `--step` adds a specific step to be run (can be used multiple times).
**Proposal:** Remove the `--cli`, `--lib-only`, and all other flags that exist to enable/disable a specific step. (Needs groups of steps.)
- Instead of `--cli`, you'll use `--group Cabal --group cabal-install` (this makes it explicit that `--cli` also tests the `Cabal` library).
- Instead of `--run-lib-suite` you'll use `--step lib-suite`.
- Instead of `--no-run-lib-suite` you'll specify the steps you want to run, e.g. `--step lib-tests --step cli-tests --step cli-suite` (that's the default behavior with `--no-run-lib-suite`, but probably not what you want!)
Contributor guide
Research direction
Start at the cabal-validate CLI entry point and map the existing flags, --step handling, defaults, and proposed step groups. Verify how the current options interact, then define the group and step interface that replaces the enable/disable flags. Done means the redundant flags are removed and equivalent selections are expressible through --group and --step.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- cli
- Issue type
- Refactor
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100