Skip to content

Commit

Permalink
Redesign 'cabal path' command to account for projects
Browse files Browse the repository at this point in the history
Previously, `cabal path` was only able to query from the global
configuration file, e.g., `~/.cabal/config` or the XDG equivalent.
This was deemed not useful enough to warrant a new cabal command which
is a user facing change.

We take the foundations and turn them into `cabal v2-path` which takes
project configuration, such as `cabal.project` into account.
Note, the command is still named `cabal path`, but for the sake of
disambiguation, we refer to this new iteration of the command as `cabal
v2-path`.

In addition, we add support for multiple output formats, such as
key-value pairs and json. Specifying the output format is currently
mandatory. This allows us to postpone the decision of the default output
and encourages users to explicitly specify the output format in the
future, too.

The json output format is versioned by the cabal-install version which
is part of the json object.
Thus, all result objects contain at least the key "cabal-install-version".

The key-value pair output prints a line for each queried key and its
respective value:

    key1: value2
    key2: value2

If only a single key is queried, we print only the
value, for example:

    value1

We expand the `cabal v2-path` to also produce information of the
compiler that is going to be used in a `cabal build` or `cabal repl` invocation.
To do that, we rebuild the install plan and query for the configured
compiler program.
This is helpful for downstream tools, such as HLS, to figure out the GHC
version required to compile a project with.
  • Loading branch information
fendor committed Jan 2, 2024
1 parent 12223d7 commit 8a23c6e
Show file tree
Hide file tree
Showing 9 changed files with 436 additions and 115 deletions.
1 change: 1 addition & 0 deletions cabal-install/cabal-install.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,7 @@ library
Distribution.Client.CmdInstall.ClientInstallTargetSelector
Distribution.Client.CmdLegacy
Distribution.Client.CmdListBin
Distribution.Client.CmdPath
Distribution.Client.CmdOutdated
Distribution.Client.CmdRepl
Distribution.Client.CmdRun
Expand Down
Loading

0 comments on commit 8a23c6e

Please sign in to comment.