general procedures to deals with procedure argument passing, error handling, colors (using
VT100 terminal library for TCL).
Source packages:
https://github.com/octavsly/octopusWiki:
https://github.com/octavsly/octopus/wiki. See also info_procedures.tcl script.
Example of usages:
#!/bin/sh
# the next line restarts using -*-Tcl-*-sh \
exec tclsh "$0" ${1+"$@"}
if { [info exists env(OCTOPUS_INSTALL_PATH) ] } {
lappend auto_path $env(OCTOPUS_INSTALL_PATH)
} else {
puts "ERROR: Please set environmental variable OCTOPUS_INSTALL_PATH to point to the location of octopus.tcl file"
exit 1
}
package require octopus 0.1
#...
# BEGIN command line options/arguments parsing
::octopus::add_option --name "--type" --valid-values "diehard utel poptag" --help-text "Specify the file type from the 3 supported formats."
::octopus::add_option --name "--listfile"
::octopus::add_option --name "--temposync" --default "false"
::octopus::add_option --name "--corrupt-files" --default "false"
::octopus::add_option --name "--dump-expanded-file-list" --default "false" --type "boolean"
::octopus::add_option --name "--project-dir" --default "false"
::octopus::add_option --name "--no-email" --default "false" --type "boolean"
::octopus::extract_check_options_data
::octopus::abort_on error
# END command line options/arguments parsing
puts "type=$type"
puts "listfile=$listfile"
puts "temposync=$temposync"
puts "corrupt-files=${corrupt-files}"
puts "dump-expanded-file-list=${dump-expanded-file-list}"
puts "project-dir=${project-dir}"
puts "no-email=${no-email}"
If the code above is saved as /tmp/a here are the results of several runs:
- Asking for automatically generated help
user@pc $ export OCTOPUS_INSTALL_PATH=<path to location of download>
user@pc $ /tmp/a --help
Usage:
a --type diehard|utel|poptag --listfile <string> [--temposync <string>] [--corrupt-files <string>] [--dump-expanded-file-list] [--project-dir <string>] [--no-email] [--no-colour] [--debug-level <#>] [--help]
Options:
--type diehard|utel|poptag : Specify the file type from the 3 supported formats.
--listfile <string> : No help available. Urge the developer to provide useful information.
--temposync <string> : No help available. Urge the developer to provide useful information. Default value is false.
--corrupt-files <string> : No help available. Urge the developer to provide useful information. Default value is false.
--dump-expanded-file-list : No help available. Urge the developer to provide useful information. Default value is false.
--project-dir <string> : No help available. Urge the developer to provide useful information. Default value is false.
--no-email : No help available. Urge the developer to provide useful information. Default value is false.
General Options:
--no-colour : Turns off colourful output (not recommended). Default value is false.
--debug-level <#> : Displays more debug information during the run. Default value is the calling debug level. Default value is 0.
--help : This help message. Default value is false.
- Wrong invocation due to missing option specified
user@pc $ /tmp/a --listfile test_list
ERROR: Option --type is compulsory when calling '/tmp/a' procedure
user@pc $ /tmp/a --listfile test_list --type diehard
type=diehard
listfile=test_list
temposync=false
corrupt-files=false
dump-expanded-file-list=false
project-dir=false
no-email=false