implicit-hie/README.md
2021-01-19 17:40:29 -05:00

69 lines
1.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# implicit-hie
```bash
cd your-stack-or-cabal-package
gen-hie > hie.yaml
```
`gen-hie` should be run the root of a cabal or stack project.
The config type (cabal or stack) is determined by the existence of
`dist-newstyle`, `.stack-work`, `stack.yaml`, if none are found the default is cabal.
# Cabal Multi project example
```bash
git clone https://github.com/well-typed/optics.git
cd optics
gen-hie
cradle:
cabal:
- path: "indexed-profunctors/src"
component: "lib:indexed-profunctors"
- path: "optics-th/src"
component: "lib:optics-th"
- path: "optics-th/tests"
component: "optics-th:test:optics-th-tests"
- path: "optics-vl/src"
component: "lib:optics-vl"
- path: "codegen/./Subtypes.hs"
component: "optics-codegen:exe:optics-codegen-subtypes"
- path: "optics-core/src"
component: "lib:optics-core"
- path: "optics-sop/src"
component: "lib:optics-sop"
- path: "optics-extra/src"
component: "lib:optics-extra"
- path: "template-haskell-optics/src"
component: "lib:template-haskell-optics"
- path: "optics/src"
component: "lib:optics"
- path: "optics/tests"
component: "optics:test:optics-tests"
- path: "metametapost/src/Cli.hs"
component: "metametapost:exe:metametapost-optics"
```
## Features
All common Cabal and Stack configurations should just work.
If you use more advanced features, the generated config may not be complete.
- [x] multi component cabal, stack projects
- [x] multiple executables under a single path
- [x] multiple paths provided to `hs-source-dirs`
- [x] lookup nested packages in `cabal.project` or `stack.yaml`
- [x] Handle Exe and Bench `other-modules`
- [ ] common stanzas
### Work, Twitter
- Follow me on twitter [@AviDessauer](https://twitter.com/AviDessauer).