Avi-D-coder / implicit-hie

Auto generate a stack or cabal multi component hie.yaml file
BSD 3-Clause "New" or "Revised" License
200 stars 17 forks source link

Modules are sometimes listed explicitly for some reason #41

Open mitchellwrosen opened 2 years ago

mitchellwrosen commented 2 years ago

When I run gen-hie in the root of https://github.com/unisonweb/unison/tree/5ba4d052bc6f74dff66654266e09eb192de97be1, I get:

cradle:
  cabal:
    - path: "codebase2/codebase/./"
      component: "lib:unison-codebase"

    - path: "codebase2/codebase-sqlite/./"
      component: "lib:unison-codebase-sqlite"

    - path: "codebase2/codebase-sync/./"
      component: "lib:unison-codebase-sync"

    - path: "codebase2/core/./"
      component: "lib:unison-core"

    - path: "codebase2/util/./"
      component: "lib:unison-util"

    - path: "codebase2/util-serialization/./"
      component: "lib:unison-util-serialization"

    - path: "codebase2/util-term/./"
      component: "lib:unison-util-term"

    - path: "parser-typechecker/src"
      component: "lib:unison-parser-typechecker"

    - path: "parser-typechecker/prettyprintdemo/Main.hs"
      component: "unison-parser-typechecker:exe:prettyprintdemo"

    - path: "parser-typechecker/prettyprintdemo/Paths_unison_parser_typechecker.hs"
      component: "unison-parser-typechecker:exe:prettyprintdemo"

    - path: "parser-typechecker/tests/Suite.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Core/Test/Name.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/ABT.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/ANF.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Cache.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/ClearCache.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Codebase/Causal.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Codebase/Path.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/CodebaseInit.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/ColorText.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Common.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/DataDeclaration.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/FileParser.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/GitSync.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Lexer.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/MCode.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Range.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Referent.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Term.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/TermParser.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/TermPrinter.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Type.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Typechecker.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Typechecker/Components.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Typechecker/Context.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Typechecker/TypeError.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/TypePrinter.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Ucm.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/UnisonSources.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/UriParser.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Util/Bytes.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Util/PinBoard.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Util/Pretty.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Util/Relation.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/Var.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Unison/Test/VersionParser.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/tests/Paths_unison_parser_typechecker.hs"
      component: "unison-parser-typechecker:exe:tests"

    - path: "parser-typechecker/transcripts/Transcripts.hs"
      component: "unison-parser-typechecker:exe:transcripts"

    - path: "parser-typechecker/transcripts/Paths_unison_parser_typechecker.hs"
      component: "unison-parser-typechecker:exe:transcripts"

    - path: "parser-typechecker/unison/Main.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/unison/ArgParse.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/unison/Compat.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/unison/System/Path.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/unison/Version.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/unison/Paths_unison_parser_typechecker.hs"
      component: "unison-parser-typechecker:exe:unison"

    - path: "parser-typechecker/benchmarks/runtime/Main.hs"
      component: "unison-parser-typechecker:bench:runtime"

    - path: "parser-typechecker/benchmarks/runtime/Paths_unison_parser_typechecker.hs"
      component: "unison-parser-typechecker:bench:runtime"

    - path: "unison-core/src"
      component: "lib:unison-core1"

    - path: "yaks/easytest/src"
      component: "lib:easytest"

    - path: "yaks/easytest/tests/Suite.hs"
      component: "easytest:exe:runtests"

    - path: "yaks/easytest/tests"
      component: "easytest:test:tests"

As you can see, for some reason it's decided to list out every file in each executable :thinking:

Avi-D-coder commented 2 years ago

This is intended behavior. Unfortunately, it's required to support other-modules? Is HLS producing cradle errors on any of these files?

mitchellwrosen commented 2 years ago

Oh, I see, thanks.

It's not producing errors, I just don't want to have to regenerate hie.yaml whenever a module appears there :)

jneira commented 2 years ago

maybe you could try https://github.com/phadej/cabal-extras/tree/master/cabal-hie it has to be installed from source though

Avi-D-coder commented 2 years ago

If the auto generated hie.yaml works without any modification, I would suggest deleting hie.yaml from the repo and adding it to .gitignore. HLS use implicit-hie for you without writing the file to disk.