Version 0.7.0 has been tagged.
New features:
- Added support for named positional arguments via
CLINGON:MAKE-ARGUMENT. Named positionals allow defining named positions for free arguments and accessing them viaCLINGON:GETOPT. See issue #19 - New
copysub-command added to the demo application showcasing named positional arguments
Bug fixes:
- Fixed
PRINT-USAGEleaking example code lines to stdout instead of the specified stream. See 9fb2221. - Fixed shared mutable default option instances leaking state between commands on repeated parsing. See f88c4e7.
- Fixed inherited options accumulating on repeated
INITIALIZE-COMMANDcalls during documentation generation. See 9f5fb87. - Fixed
OPTION-BOOLEANcrashing onFINALIZE-OPTIONwhen initialized from environment variables. See f787ce0. - Fixed
OPTION-COUNTERtype error when initialized from environment variables. See 0391d56. - Fixed
OPTION-LIST-FILEPATHenvironment variable values not being converted to pathnames. See 66858e3. - Fixed
--opt=(explicit empty value) being incorrectly treated as a missing argument. See f38d425. - Fixed
PRINT-OPTIONS-USAGEcrash when all options are hidden. See 46c707a. - Fixed
JOIN-LISTstopping early on NIL elements in the middle of a list. See f32abe7. - Fixed
FINALIZE-OPTIONfor list options breaking on double-finalization due to destructiveNREVERSE. See 1ad66c2.
Performance improvements:
FIND-OPTIONnow uses O(1) hash table lookups instead of linear scans. See 0d635b3.FIND-SUB-COMMANDnow uses O(1) hash table lookups instead of linear scans. See 30e973a.PRINT-OPTIONS-USAGEreduced from multiple passes to a single pass over options. See 73f5423.WALKutility now uses a hash table for the visited set. See ec93e1a.
Version 0.6.0 has been tagged.
- Added support for generating documentation in
orgformat. See PR #31 - Added support for generating documentation in
manformat. See PR #23 :filepathoption returns a properPATHNAME. See this commit.- Exit with
EX_OK(0) instead ofEX_USAGE(64) whenclingon.help.flagis set. - Document how to customize the parsing logic.
- Document how to use buildapp with clingon.
Thanks to @bon, @halcyonseeker, @rpgoldman and @gpiero!
Version 0.5.0 has been tagged.
New conditions added:
CLINGON:BASE-ERRORCLINGON:EXIT-ERROR(sub-class ofCLINGON:BASE-ERROR)
New generic functions added:
CLINGON:HANDLE-ERROR
The CLINGON:BASE-ERROR condition can be used as the base for new
user-defined conditions, which can be signalled by command handlers.
Whenever a CLINGON:BASE-ERROR condition is signalled, the
CLINGON:RUN method will invoke CLINGON:HANDLE-ERROR, which allows
developers to provide custom logic for reporting and handling of app
specific errors.
Make sure to check the Custom Errors section from the documentation
for some examples on how to create user-defined conditions.
The utility function CLINGON:EXIT will not exit if the REPL is
connected via SLY or SLIME, which allows for better interactive
testing of the final application.
clingon version 0.4.0 has been tagged.
- Added Github Actions to automatically test the
clingonsystem. - Exported
CLINGON:PARSE-INTEGER-OR-LOSE - Export symbols to control the default list of options for newly created commands. See issue #4
CLINGON:FIND-OPTIONcan now search for options by their keysCLINGON:GETOPTreturns three values – the option value, a boolean indicating whether the option was set, and the command which provided the option.- If
--versionis specified for any command, thenclingonwill try to find a parent command with an associated version string, if the sub-command does not provide it’s own version string. - Added
CLINGON:GETOPT*which will return the first value from the command’s lineage, for which the option was defined and set. - Added
CLINGON:IS-OPT-SET-P*predicate - Additional tests related to
CLINGON:GETOPTandCLINGON:GETOPT* - Added support for persistent options. A persistent option is an option which is propagated from parent to all sub-commands. Please refer to the documentation for more details and examples.
CLINGON:PRINT-DOCUMENTATIONcan generate the tree representation for commands in Dot format.
This is how the generated tree for the clingon-demo app looks like.
Added support for pre-hook and post-hook actions for commands.
The CLIGON:COMMAND class now accepts the :pre-hook and
:post-hook initargs, which allows specifying a function to be
invoked before and after the respective handler of the command is
executed.
The generic function CLINGON:APPLY-HOOKS have been added, which
takes care of applying the pre-hook and post-hook hooks.
Version of clingon system has been bumped to 0.3.5.
Add support for grouping related options into categories.
The :category initarg for CLINGON:OPTION is used for specifying
the option’s category.
New option kind has been added - :list/filepath.
The clingon-demo and clingon-intro binaries are now installed into
the bin/ directory.
Additional utility functions have been implemented as part of the
CLINGON.UTILS package.
clingon system updated to version 0.3.3.
clingon system updated to version v0.3.1.
Added support for FILEPATH option kinds.
Added support for Zsh completions.
clingon system version bumped to v0.3.0.
Initial release of clingon version v0.1.0.
