butcher/ChangeLog.md

127 lines
4.2 KiB
Markdown

# Revision history for butcher
## 2.0.0.0 -- Sept 2020
Large internal refactor including some breaking API changes.
- Add the "Applicative" interface in addition to the existing "Monadic" one.
This is slightly less expressive but conceptually cleaner/safer (and its
implementation is nicer). For best readability you may need `ApplicativeDo`.
- The applicative interface is *NOT* finished and the test-suite does not
cover it.
- Add the `traverseBarbie` construct to elegantly define a parser for a
config data-structure.\
Introduces a dependency on the `barbies` library.
- Refactor the module structure a bit, and change the API of the central
`runCmdParser` function. It now returns a `PartialParseInfo`. Essentially,
`runCmdParser` is a combination of the previous `runCmdParser` and the
previous `simpleCompletion`. This API design is a curious advantage to
laziness: Returning a complex struct is harmless as fields that the user
does not use won't be evaluated. The downside is that the core function now
looks like a complex beast, but the upside is that there is no need to
expose multiple functions that are supposed to be chained in a certain way
to get all functionality (if desired), and we still _can_ provide simpler
versions that are just projections on the `PartialParseInfo`.
- Remove deprecated functions
- `peekCmdDesc` is now guaranteed to yield the proper full `CmdDesc` value
for the current command or child-command.
- Remove the `mainFromCmdParserWithHelpDesc` function, because it is redundant
given the new semantics of `peekCmdDesc`.
- Stop support for an anti-feature: The implicit merging of multiple
sub-commands definitions with the same name.
- Internal refactor: The monadic interface now uses two-phase setup: First step
is to create a full CommandDesc value, second is running the parser on input
while the CommandDesc is chained along
## 1.3.3.2 -- June 2020
* Support ghc-8.10
* Drop support for ghc < 8.4
* Fix a somewhat hidden issue in the cabal file
* Add support for building / testing via haskell.nix nixpkgs overlay
## 1.3.3.1 -- April 2020
* Fix a cabal file mistake
## 1.3.3.0 -- April 2020
* Fix bug with params with default when parsing from commandline
* Add the `descendDescTo` function
## 1.3.2.3 -- June 2019
* Fix broken build when using deque>=0.3
## 1.3.2.2 -- June 2019 (broken, disabled on hackage)
* Fix too-shallow descriptions on siblings for partial parses returned
for interactive usage
## 1.3.2.1 -- October 2018
* Adapt/Use latest version of `deque` to fix ghc-8.6 problems
## 1.3.2.0 -- October 2018
* Fix for simpleCompletion
* Expose some bindings that were forgotten in previous release
* Bounds fixed for ghc-8.6 (also via revision in 1.3.1.1)
## 1.3.1.1 -- April 2018
* Fixup version bound
## 1.3.1.0 -- April 2018
* Add/Expose two more functions: addAlternatives and varPartDesc
## 1.3.0.1 -- April 2018
* Support ghc-8.4
* Drop support for ghc<8
## 1.3.0.0 -- February 2018
* Experimental: Hidden commandparts (do not appear in help)
* Experimental: Bash completion
* Add addHelpCommandWith to support user-defined column count
* Fix help document printing (ribbons)
* Fix completion behaviour
## 1.2.1.0 -- November 2017
* Fix bug in 'ppUsageWithHelp'
* some utilities for interactive usage in new module
`UI.Butcher.Monadic.Interactive`
## 1.2.0.0 -- October 2017
* Rename some `Monadic.Param.*`, deprecate old versions.
- `addReadParam` -> `addParamRead`
- `addReadParamOpt` -> `addParamReadOpt`
- `addStringParam` -> `addParamString`
- `addStringParamOpt` -> `addParamStringOpt`
- `addStringParams` -> `addParamStrings`
- `addRestOfInputStringParam` -> `addParamRestOfInput`
* Add functions `addParamNoFlagString`, `addParamNoFlagStringOpt`,
`addParamNoFlagStrings`
* Fix flag parsing behaviour (ignore initial spaces)
## 1.1.1.0 -- October 2017
* Add `addNullCmd` function that descends into childcommand on an epsilon match
* Add `addStringParams` function that reads all remaining words
## 1.1.0.2 -- September 2017
* Improve 'usage' pretty-printing
## 1.1.0.1 -- August 2017
* Adapt for ghc-8.2
## 1.1.0.0 -- May 2017
* First version. Released on an unsuspecting world.