Open
Description
CLI applications are expected to behave in a certain way. This is especially important when those applications are used in scripts.
- Exit status should reflect success or failure (see also: Stabilize
main
with non-() return types rust-lang/rust#48453) - Correct use of standard out and standard error
- Accept input from standard in (optional)
- Command-line option consistency
- Exit gracefully when a "broken pipe" error occurs
- Enable/disable ANSI color escapes (see also: https://github.com/rust-lang-nursery/cli-wg/issues/15)
- Structured output (log files, json, etc)
- Correctly handles signals (SIGHUP, SIGINT, SIGCHLD, etc)
- Respect hard/soft resource limits (e.g. max open files)
I can always add more from the comments.