cabal-plan
Library and utility for processing cabal's plan.json file
Version on this page: | 0.7.3.0@rev:2 |
LTS Haskell 22.33: | 0.7.3.0@rev:3 |
Stackage Nightly 2024-09-07: | 0.7.4.0 |
Latest on Hackage: | 0.7.4.0 |
cabal-plan-0.7.3.0@sha256:ba2aab93e43db335b669fd2c7b5ab63b19fe584b5f95285ace910f73e8f5c78f,5510
Module documentation for 0.7.3.0
- Cabal
This package provides a library (see Cabal.Plan
) for decoding plan.json
files as
well as the simple tool cabal-plan
for extracting and pretty printing
the information contained in the plan.json
file.
plan.json
files are generated by cabal's Nix-style local builds and contain detailed information about the build/install plan computed by the cabal solver.
cabal-plan
utility
The cabal-plan
executable (enabled via the exe
cabal flag) provides various operations:
- info
- Show basic report of dependency tree
- show
- Dump
PlanJson
data-structure viaShow
instance - tred
- Show dependency tree as a graph
- diff
- Diff two install plans
- list-bins
- List all binaries
- list-bin
- List single binary (useful for scripting, e.g.
cabal list-bin exe:cabal-plan
) - fingerprint
- Print SHA256 sums of dependencies' source tarballs and cabal files
- dot
- Generate graph of dependencies in
.dot
format - topo
- Print plan topologically sorted
- license-report
- Generate license report for a component (only available when built with
license-report
flag enabled); see report example for cabal-plan (Pandoc rendered HTML)
See also "New things in Haskell package QA" Blogpost for a description of the topo
and dot
operations as well as how to enable tab-completion.
Changes
Revision history for cabal-plan
0.7.2.3
- Fix issue in previous release (license generation didn’t work at all)
0.7.2.2
- Use Cabal-syntax-3.8.1.0
0.7.2.1
- Support Cabal-3.6
- Support aeson-2.0.0.0
- Drop support for GHC prior 8.2
0.7.2.0
exe:cabal-plan
Executable
- Use
cabal-install-parsers
to find and parse~/cabal/config
- Fix ascii/unicode output in
tred
- Add flags to hide setup and executable components in dot command
- Update dependencies (support
base16-bytestring-1.0.0.0
)
Library
- Update dependencies (support
base16-bytestring-1.0.0.0
)
0.7.1.0
exe:cabal-plan
Executable
- Add
--ascii
/--unicode
flags to control output character set - Add
dot-png
command as a version ofdot
command with different defaults - Use
cabal-install-parsers
, this makeslicense-report
work with non-default configurations
0.7.0.0
lib:cabal-plan
Library
- Support
local+noindex
style repositories: NewRepo
constructor:RepoLocalNoIndex
. - Support newer versions of dependencies (GHC-8.10, aeson-1.5, optics-core-0.3)
exe:cabal-plan
Executable
- Support
Cabal-3.2
0.6.2.0
lib:cabal-plan
Library
- Add
findPlanJson
function
exe:cabal-plan
Executable
- Drop
process-extras
dependency
0.6.1.0
lib:cabal-plan
Library
No changes
exe:cabal-plan
Executable
-
dot
command got new options--root
to limit graph to specific roots--output
to write directly to some file--run-dot-png
and--run-dot-pdf
to rundot
for you
-
cabal-plan
executable depends onoptics-core
instead oflens
. Therefore is buildable only with GHC-8.0+
0.6.0.0
lib:cabal-plan
Library
ExactPath
constructor to skipfind
infindAndDecodePlanJson
. (Note: see alsodecodePlanJson
)
exe:cabal-plan
Executable
--plan-json
for exactplan.json
location--relative
search for project root relative to that directory--colors=auto|never|always
flagtred
command to print transtive reduction of dependency graphdiff
command to compare two planslist-bins
prints full selector “pkg:type:name”, i.e. includes package name
0.5.0.0
lib:cabal-plan
Library
- New
dispCompNameTarget
function for pretty-printingCompName
s in cabal’s target-selector syntax. - Add support for cabal 2.4’s
pkg-src
package provenience metadata. - Add support for cabal 2.4.1’s
pkg-cabal-sha256
package description checksum field.
exe:cabal-plan
Executable
- Add support for including package description checksums in
fingerprint
output - Add support for printing flag selection in
topo
output - Fail gracefully in
license-report
when metadata cannot be found in index
0.4.0.0
lib:cabal-plan
Library
- New
SearchPlanJson
type to specify strategy for locatingplan.json
- Add
SearchPlanJson
parameter tofindAndDecodePlanJson
function and change return type - Expose separate
findProjectRoot
operation
exe:cabal-plan
Executable
- New command
license-report
(requires Cabal flaglicense-report
to be active)
0.3.0.0
lib:cabal-plan
Library
- Add support for foreign-lib components.
- Add support for
dist-dir
plan.json
field. - Make
Sha256
type abstract and add newsha256{To,From}ByteString
conversion functions, as well as the newparseSha256
function. - Introduce
FlagName
newtype. - Add
FromJSONKey
/ToJSONKey
instances forUnitId
,PackageName
, andPkgId
.
exe:cabal-plan
Executable
- smart completer for list-bin/list-bins pattern
- new command
topo
(printing out topographic sorting of install-plan) dot
prints component dependency graph. New options:--tred
transitive reduction--tred-weights
Adjust edge thickness during transitive reduction--path-from pkgA --path-from pkgB
Highlight dependency paths from pkgA to pkgB--revdep pkg
highlight reverse dependencies of pkg in the install plan
0.2.0.0
- Add an optional
--builddir
argument to all commands and tofindAndDecodePlanJson
function. - Add experimental support for underlining.
- Reimplement CLI with
optparse-applicative
. - Add new sub-command
list-bins
and change semantics of existinglist-bin
sub-cmd.
0.1.1.0
- Add
cabal-plan fingerprint
command for printing sha256 sums of source tarballs.
0.1.0.0
- First version. Released on an unsuspecting world.