chore: prepare cl-cli for its public 0.1.0 release#4
Merged
Conversation
Rounds up the accumulated parser/model hardening and the
publication-readiness work into a release-ready state. Verified with
190 passing tests on both SBCL and ECL, and all README code examples
executed against the built system.
Functional / library:
- Add :requires-any-of to make-option ("at least one of" alternatives),
with the cli-missing-any-of-options condition, help rendering, and
make-app rejection of unsatisfiable specs.
- Completion renderers (render-completion / render-{bash,zsh,fish}-
completion) now return the script as a string when called with no
stream, mirroring the format destination contract; the previous
no-stream form wrote to *standard-output* and returned no values, so
the documented (write-string (render-completion ...)) pattern was
impossible. Passing a stream still writes and returns no values.
- Parser/model fixes: attached-value command completion, short-cluster
stop-parsing remainder, separated bare "-" optional values, required-
after-optional positional rejection, colliding option-key rejection,
reserved :help/:version key rejection, post-separator runtime-marker
handling, validate-before-intern for option/positional keys, and a
per-app relation-rulebase cache that no longer corrupts reused
command specs.
- Performance: reuse the option-relation Prolog rulebase built at
make-app time instead of rebuilding it on every parse-argv call.
Publication / non-functional:
- Fix broken absolute-path (/Users/...) links in README.md / SUPPORT.md.
- Give SECURITY.md a concrete private reporting path (GitHub advisories).
- Document the cl-prolog git-dependency install path; a bare
ql:quickload cannot resolve cl-cli on its own.
- Restructure CHANGELOG.md into Keep a Changelog format.
- Add a Public API reference section to README covering previously
undocumented entry points (print-app-help, the individual command
constructors, runtime-argv helpers, accessors, and conditions).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Consolidates the accumulated parser/model hardening and the publication-readiness work into a release-ready state for the first public 0.1.0 release. Verified with 190 passing tests on both SBCL and ECL, and every README code example executed against the built system.
Functional / library
:requires-any-ofonmake-option— "at least one of" alternatives, with the newcli-missing-any-of-optionscondition, help rendering, andmake-apprejection of unsatisfiable specs.format's destination contract). Previously the no-stream form wrote to*standard-output*and returned no values, so the documented(write-string (render-completion ...))pattern was impossible. Passing a stream still writes and returns no values.:stop-parsing-premainder, separated bare-optional values, required-after-optional positional rejection, colliding option-key rejection, reserved:help/:versionkey rejection, post-separator runtime-marker handling, validate-before-intern for option/positional keys, and a per-app relation-rulebase cache that no longer corrupts reused command specs.make-apptime instead of rebuilding it on everyparse-argvcall.Publication / non-functional
/Users/...) links inREADME.md/SUPPORT.md.SECURITY.mda concrete private reporting path (GitHub advisories), satisfying theRELEASING.mdgate.cl-prologgit-dependency install path; a bareql:quickloadcannot resolvecl-clion its own.CHANGELOG.mdinto Keep a Changelog format.README.mdcovering previously undocumented entry points.Test plan
nix flake check(CI) — runs the suite under SBCL and ECL.