Auto generate a stack or cabal multi component hie.yaml file
Go to file
Nick Dunets 064e1f7db6 - added --cabal and --stack switches to command line,
- generated sample hie.yaml for this project both for Stack and Cabal
2020-07-07 15:59:47 +12:00
.github Create FUNDING.yml 2020-05-15 12:15:16 -04:00
app - added --cabal and --stack switches to command line, 2020-07-07 15:59:47 +12:00
src/Hie Improve list parser 2020-06-05 00:15:12 +03:00
test Improve list parser 2020-06-05 00:15:12 +03:00
.gitignore Ignore codex.tags 2020-05-04 21:13:13 -04:00
.travis.yml Add .travis.yml 2020-05-31 11:35:52 +02:00
ChangeLog.md Init 2020-04-23 20:48:49 -04:00
hie.yaml Remove autogen-modules from other-modules + Update tests 2020-05-19 22:18:49 -04:00
hie.yaml.cabal - added --cabal and --stack switches to command line, 2020-07-07 15:59:47 +12:00
hie.yaml.stack - added --cabal and --stack switches to command line, 2020-07-07 15:59:47 +12:00
implicit-hie.cabal Release 0.1.1.0 2020-06-22 00:19:30 -04:00
LICENSE Init 2020-04-23 20:48:49 -04:00
README.md Update README 2020-05-19 22:22:41 -04:00
Setup.hs Init 2020-04-23 20:48:49 -04:00
stack.yaml Add travis ci 2020-05-30 15:51:41 +02:00
stack.yaml.lock Init 2020-04-23 20:48:49 -04:00

implicit-hie

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

 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.

  • multi component cabal, stack projects
  • multiple executables under a single path
  • multiple paths provided to hs-source-dirs
  • lookup nested packages in cabal.project or stack.yaml
  • Handle Exe and Bench other-modules
  • common stanzas

Work, Twitter

  • I'm currently looking for work as a Haskell or Rust developer. I can be reached via email or a twitter message.
  • Follow me on twitter @AviDessauer.