haskell / haskell/cabal

`cabal-validate`: Too many ways to choose steps

Open
#10,564 0 comments 0 reactions 0 assignees View on GitHub
cabal-validate meta: tracking re: devx type: testing
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.