User Tools

Site Tools


unixscripts:3-decentbash

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
decentbash [2015/12/31 03:05] – [Provide version info] adminunixscripts:3-decentbash [2020/10/17 03:04] – ↷ Page moved and renamed from decentbash to unixscripts:3-decentbash admin
Line 13: Line 13:
  
 ====Use argp.sh(1)==== ====Use argp.sh(1)====
-Even better, use my **getopt**(1) wrapper [[argp.sh]] which is kinda sorta like GNU's **argp**(3) in glibc. It gives you a single place to define options which is then used to:+Even better, use my **getopt**(1) wrapper [[unixscripts:2-argp.sh]] which is kinda sorta like GNU's **argp**(3) in glibc. It gives you a single place to define options which is then used to:
       * create the **getopt**(1) command line,        * create the **getopt**(1) command line, 
       * process the options setting appropriate environment parameters        * process the options setting appropriate environment parameters 
Line 22: Line 22:
       * increase the chance that help and man pages are actually written       * increase the chance that help and man pages are actually written
  
-====Long options====+====Support Long options====
 Always provide long options as well as single letter options - they're more mnemonic for infrequent users and provide valuable documentation when scripted. Always provide long options as well as single letter options - they're more mnemonic for infrequent users and provide valuable documentation when scripted.
  
 ====Provide help==== ====Provide help====
-respond to the **-h, --help** option with a usage message to **!!!STDOUT!!!** and exit 0+respond to the **-h, --help** option with a usage message to **!!!STDOUT!!!** and exit 0. This help should be available no matter what the machine's state - so issue it before looking for dependencies and without making assumptions about what is installed. 
 + 
 +If there are specific dependencies, then make sure they are documented in the help message.
  
 ====Provide version info==== ====Provide version info====
Line 33: Line 35:
 Note that **-h** and **-V** processing should happen before any other substantial processing or checking is done - make sure **-h** can always be done no matter what Note that **-h** and **-V** processing should happen before any other substantial processing or checking is done - make sure **-h** can always be done no matter what
  
-====Error messages====+====Be disciplined with error messages====
 Error messages should go to **!!!STDERR!!!** - do **not** print the usage as it just fills the screen and hides the meat of the error. At the most, refer the user to the usage page with ''run 'foobar -h' for help or 'man foobar' for a reference manual.'' Error messages should go to **!!!STDERR!!!** - do **not** print the usage as it just fills the screen and hides the meat of the error. At the most, refer the user to the usage page with ''run 'foobar -h' for help or 'man foobar' for a reference manual.''
  
-====Error exit====+====Be disciplined with error exit codes====
 non-zero exit on any error non-zero exit on any error
  
Line 42: Line 44:
 execute as silently as possible so the user doesn't have to scour through copious output. If feedback on progress is needed, just "echo -n ." execute as silently as possible so the user doesn't have to scour through copious output. If feedback on progress is needed, just "echo -n ."
  
-The exception, of course, is if a verbosity command is given, generally with **-v/--verbose** - and the output goes to stdout, thank you very much (so we can distinguish bash's own -x output which goes to stderr)+The exception, of course, is if a verbosity command is given, generally with **-v--verbose** - and the output goes to stdout, thank you very much (so we can distinguish bash's own -x output which goes to stderr)
  
 ====man(1) page==== ====man(1) page====
 include a man page if non-trivial include a man page if non-trivial
  
-====crunchbang====+====Use a crunchbang====
 always include the //crunchbang// as the first line: always include the //crunchbang// as the first line:
  
unixscripts/3-decentbash.txt · Last modified: 2020/10/17 03:04 by admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki