-
π‘ Github CI
-
π‘ exit code: 0 = success, else error code
-
π‘ STDOUT/STDERR distinction
-
π‘ check options/argument names for uniqueness
-
π‘ error on unknown options
-
π‘ simple commands: just a closure with all args + remaining args as param
-
π£ Types
- π‘ enum
- π‘ STDIN/File
-
π£ Validations
- π‘ format, greater/less, closure, error messages
- π‘ command validation (validate all parameters together)
-
π£ automatic command documentation
- π‘ --help,
- π‘ search
- π‘ html reference
- π‘ interactive documentation
-
π‘ interactive mode: instead of passing parameters, you get a prompt with options
-
π‘ automatic bash auto completion (maybe use interactive mode instead because bash completions suck)
-
π‘ logging
-
π‘ dry-run
-
π‘β undo
-
π‘β include rake-like features too? e.g. dependencies
-
π‘ error handler, global/per-namespace/per-command
-
π‘ ability to pass parameters as JSON
-
π‘ reusable/embeddable components. e.g. include the same set of commands in multiple places but with different settings.
-
π‘ add features that other tools dont have and that are "new" to the terminal? interactive options?
-
π‘ pre-commit hook to scan project for "XXX" comments
-
π£ Library:
- π‘ building/releasing crystal shards, check that version does not exist yet, check that version is new, git helpers, ...
- π‘ progress bar, spinner, notifications, colors, input/confirm, fileutils, file permissions, ...
-
π’ inspectable model: list commands in namespace, list options of command
-
π’ raise on unexpected extra arguments
-
π’ raise on short option duplicates
-
π’ short and long versions
-
π’ arguments and options
-
π’ namespaces/subcommands
-
π’ can be invoked without CLI by calling functions => easy to test
-
π’ automatically convert parameters and validate them (int, inclusion in list, ...)
-
πππ¨ππππββπ©π¬π§
-
ββ ββπ²βπ«βοΈ
-
π΄π π‘π’π΅π£π€β«βͺ
-
ππππ‘
-
π π§π’πͺ²β‘π₯π₯π©Έπ©Ήπͺ¦