Heavily prefer unix filter UI.
If you can't do it with filtering, it could mean you should split your function anyway.
Even function can use dash options and even usagef().
Reserved options are
-q|--quiet, to turn off verbosity,-v|--verbose, to turn on verbosity,-d|--debug to turn on debug output (stderr).Do not think() in functions.
Preferred capitalization in messages is:
all small for libs (debug/warn/die)
First cap for scripts
Message width:
think/warn/die: try hard to never exceed 72
debug: do what you must
always try to split message to fixed part, colon and before colon and the "data" part after the colon, e.g.:
file missing: /var/run/media/somebody/some-medium/some-long/path
instead of:
file /var/run/media/somebody/some-medium/some-long/path is missing
(even if you think that it will be short)
Be smart but honest: if you can default, default, otherwise be honest = fail
Don't talk. think() instead.