Unrecognized Cabal flag error is printed to stdout
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
**Describe the bug**
When a flag to a `Setup.hs` is not recognized, then the error message is printed to stdout.
This is not what I would have expected.
**To Reproduce**
```
$ mkdir a-with-custom
$ cd a-with-custom
$ cabal init --lib --minimal -n
```
Then modify the cabal file:
```
cabal-version: 3.0
name: a-with-custom
version: 0.1.0.0
build-type: Custom
custom-setup
setup-depends:
Cabal <3.16,
base
library
exposed-modules: MyLib
build-depends: base
hs-source-dirs: src
default-language: Haskell2010
```
Then run ``cabal repl src/MyLib.hs --keep-temp-files``:
```
Warning: this is a debug build of cabal-install with assertions enabled.
Resolving dependencies...
Build profile: -w ghc-9.10.3 -O1
In order, the following will be built (use -v for more details):
- a-with-custom-0.1.0.0 (interactive) (first run)
unrecognized 'repl' option `--keep-temp-files'
Error: [Cabal-7125]
repl failed for a-with-custom-0.1.0.0.
HasCallStack backtrace:
collectBacktraces, called at libraries/ghc-internal/src/GHC/Internal/Exception.hs:169:13 in ghc-internal:GHC.Internal.Exception
toExceptionWithBacktrace, called at libraries/ghc-internal/src/GHC/Internal/IO.hs:260:11 in ghc-internal:GHC.Internal.IO
throwIO, called at libraries/ghc-internal/src/GHC/Internal/Control/Exception/Base.hs:195:43 in ghc-internal:GHC.Internal.Control.Exception.Base
```
The error ``unrecognized 'repl' option `--keep-temp-files'`` is printed to stdout.
**Expected behavior**
The error message `unrecognized 'repl' option `--keep-temp-files'` should be printed to stderr, imo.
**System information**
- Operating system
- `cabal3.16.1.0` and cabal HEAD 4907eec7b275aa0e1a31333fc745b3cc9f023f4f
Contributor guide
Research direction
Reproduce the issue with a custom Setup.hs and the shown cabal file, then run `cabal repl src/MyLib.hs --keep-temp-files` while capturing stdout and stderr separately. Trace the `cabal repl` handling of the unrecognized option and add or update coverage so the error is emitted on stderr while the command's failure remains reported correctly.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- cli, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 64/100