All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
-
Issue #54 Allow the dot character in options and arguments. Thanks @tgockel!
-
Issue #47 If an option looks at the value of another option it can see the current value. If no value has been set a
MissingValueException
is thrown.
- Help text formatting now treats multi-newlines as paragraph separators, while single newlines are still treated like spaces. Thanks @leomillon!
-
Releasing to Maven Central in addition to Bintray. This is probably the only really externally visible change.
-
Upgraded a bunch of dependencies, including gradlew.
- gradle -> 4.5.1
- dokka -> = 0.9.16
- gradle_bintray -> = 1.8.0
- gradle_release -> = 2.6.0
- kotlin -> 1.2.30
- xenocom -> 0.0.6
-
If the
programName
passed tomainBody
is null, then the system propertycom.xenomachina.argparser.programName
is used, if set. -
The
parseInto
method can be used as an inline alternative toforce
. Thanks @shanethehat! -
Issue #24:
default
can now accept a lambda, making it possible to defer computation of defaults until actually required. Thanks @shanethehat!
-
All instances of
progName
have been renamed toprogramName
. -
The gradle wrapper has been updated. Thanks @ColinHebert!
- Issue #19 by updating xenocom dependency to 0.0.5. Also updated kotlin to 1.1.2-5 for good measure.
-
Issue #14 — previously, automatic option naming would turn "camelCase" into "--camelCase". Now it is converted to "--camel-case".
-
Likewise, positinal argument auto-naming used to convert "camelCase" into "CAMELCASE". Now it is converted to "CAMEL-CASE".
-
Improve help formatting w/long program names
-
README formatting improved. Thanks @konfilios!
-
Issue #17 — specifying 0 for the columns should format help without line wrapping. Previously, this did not work as documented, and would instead wrap text in very narrow columns.
-
Issue #15 — make it possible to specify 'argName' on all variants of 'storing' and
adding
-
ArgParser.option
is now a public method, so it's possible to create many new option types that were not previously possible. The existing option types are all written in terms ofoption
, so they can be used to get an idea of how it works. -
More tests have been added.
-
Started using keepachangelog.com format for CHANGELOG.md
-
Made minor improvements to release process
-
The
storing
,adding
andpositionalList
methods ofArgParser
have had their parameters slightly reordered to be consistent with the other methods. This is an incompatible change. The name(s) come first, if any, followed byhelp
. Other parameters appear afterhelp
, with thetransform
function, if any, last. It is recommended that clients either pass the transform as a block (ie: with braces) or as a named parameter, as any future new parameters will necessarily change its position in the list. -
Delegate and DelegateProvider are now abstract classes with internal constructors. This makes it much easier for me to separate internal and public parts of their API. This is an incompatible change, however it shouldn't really affect you unless you were trying to implement
Delegate
, which was't supported to begin with. -
default
methods on bothDelegate
andDelegateProvider
are now extension methods. This makes it possible to generalize the type when adding a default. This is most noticable when using a nullable value (ornull
itself) for the default, though may also be useful in other cases (eg: a "storing" that always produces aRectangle
, but you want the default to be aCircle
. The resulting delegate will be aDelegate<Shape>
.) -
Registration of delegates now takes place at binding-time rather than construction time. This should be pretty indistinguishable from the old behavior unless you're creating delegates without binding them.
-
Help formatting has been improved so that it's far less likely to wrap option names in the usage table.
-
There have been numerous bugfixes, particularly around positionals
- Auto-naming of options and positionals.
-
Each of the ArgParser methods that takes names and returns a Delegate has an overload that takes no name, but returns a DelegateProvider.
-
A DelegateProvider has an
operator fun provideDelegate
that returns a Delegate, using a name derived from the name of the property the DelegateProvider is being bound to.
-
addValidtator
is now deprecated. UseaddValidator
instead.
-
Removed documentation of
option
fromREADME.md
, as it is internal -
Corrected spelling of
addValidator
.addValidtator
is still there, but deprecated. It'll probably be removed in the next release, barring the addition of potato functionality.
- Upgrade to Kotlin 1.1, extract xenocom package.
- Fix small bug where
runMain
didn't have a default value forcolumns
parameter. (Now defaults to null.)
- Initial release