Install project-local dev tools from Hackage
- Dominant language
- Haskell
- Stars
- 1.7k
- Forks
- 750
- Avg merge
- 4d 3h
- Merged PRs (30d)
- 28
Description
**Describe the feature request**
Possibly this has been requested before, but I can't find a previous issue.
A common thing that people want is to have development tools installed for working on a project. Often, being Haskellers, those have been written in Haskell. Examples:
- Formatters
- HLint
- HLS (in principle)
- Other tools like the new [cabal-audit](https://discourse.haskell.org/t/cabal-audit-please-try-it-out/9571/5)
It is not uncommon for tools like cabal to have a way of installing "dev dependencies" or "dev tools" like this.
A sketch of what this could look like:
- A new `cabal.project` stanza `dev-tools` listing executables, which are solved for independently of everything else
- A cabal `dev-install` command, which builds all the dev tools and links them into `/my/project/dist-newstyle/bin` or something
- Users are responsible for getting `/my/project/dist-newstyle/bin` on their `PATH`?
**Additional context**
The discussion in https://discourse.haskell.org/t/cabal-audit-please-try-it-out/9571/5 made me think about this. There is some discussion about distributing things through `ghcup`, but `ghcup` is never likely to distribute _all_ the tools that people are interested in (e.g. specific versions of formatters). Cabal already has most of the machinery it would need to do this, it already knows how to build executables in standalone plans, so it's just a case of doing that for a few tools and linking them to a particular location.
Contributor guide
Research direction
Start by tracing Cabal's existing machinery for building executables in standalone plans and reviewing how cabal.project stanzas and cabal commands are represented. Define the dev-tools stanza and dev-install behavior, including independent solving and linking into dist-newstyle/bin; done means project-local tools are built and available there.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- haskell
- Domain
- build-system, cli
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 25/100