Class: Como::Opt
- Inherits:
-
ComoCommon
- Object
- ComoCommon
- Como::Opt
- Defined in:
- lib/como.rb
Overview
Opt includes all options spec information and parsed options and their values. Option instance is accessed with “Opt”. The option status (Opt instance) can be queried with for example “given” and “value” methods.
Direct Known Subclasses
Defined Under Namespace
Classes: ErrorWithData, InvalidOption, MissingArgument
Constant Summary collapse
- @@main =
Program i.e. highest level subcommand.
nil- @@opts =
List of parsed option specs and option values.
[]
- @@subcmd =
Current subcommand recorded.
nil- @@config =
Set of default configs for printout.
{ :autohelp => true, :rulehelp => false, :header => nil, :footer => nil, :subcheck => true, :check_missing => true, :check_invalid => true, :tab => 12, :help_exit => true, }
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Opt configuration.
-
#doc ⇒ Object
Option documentation string.
-
#given(yieldOpt = false, &prog) ⇒ Object
(also: #given?)
Returns true if option is given, and block is not present.
-
#longOpt ⇒ Object
Long option string.
-
#name ⇒ Object
Option name.
-
#parent ⇒ Object
Subcommand parent (i.e. host).
-
#rules ⇒ Object
readonly
Opt rules.
-
#shortOpt ⇒ Object
Short option string.
-
#subcmd ⇒ Object
readonly
List of subcommands.
-
#subopt ⇒ Object
readonly
List of suboptions.
-
#type ⇒ Object
Option type.
-
#value ⇒ Object
Option value.
Class Method Summary collapse
-
.[](str) ⇒ Object
Select option object by name.
-
.addOpt(opt) ⇒ Object
Add option to options list.
-
.author ⇒ Object
Return author.
-
.configOverlay(config) ⇒ Object
Overlay Opt default configuration options.
-
.current ⇒ Object
Current subcmd processed.
-
.default ⇒ Object
Return arguments (options) that have no switch.
-
.defaultOpt(doc = "No doc.") ⇒ Object
Create default option spec, no switch.
-
.each(&blk) ⇒ Object
Options iterator for all options.
-
.each_given(&blk) ⇒ Object
Options iterator for given options.
-
.external ⇒ Object
Return arguments (options) that are specified as command external (i.e. after ‘–’).
-
.findOpt(name) ⇒ Object
Find option by name.
-
.full(name, opt, type, doc = "No doc.") ⇒ Object
Create option spec.
-
.main ⇒ Object
Get main option.
-
.progname ⇒ Object
Return program name.
-
.reset ⇒ Object
Reset “dynamic” class members.
-
.setMain(main) ⇒ Object
Set main option.
-
.setSubcmd(opt) ⇒ Object
Set current subcmd.
-
.subcmd(name, doc = "No doc.") ⇒ Object
Create sub-command option spec.
-
.year ⇒ Object
Return program year.
Instance Method Summary collapse
-
#[](str) ⇒ Object
Select option object by name operator.
-
#apply(default = nil) ⇒ Object
Return option value if given otherwise the default.
-
#applyConfig(config) ⇒ Object
Merge config to base config.
-
#argById(str) ⇒ Object
Select option object by name/opt/longOpt.
-
#argByName(str) ⇒ Object
Select option object by name.
-
#check(argsState) ⇒ Object
Check provided args.
-
#checkAlso(opt, error, &check) ⇒ Object
Additional option check.
-
#checkMissing ⇒ Object
Check for any non-given required arguments recursively through hierarchy of subcommands.
-
#checkRule ⇒ Object
Check option combination rules.
-
#cmdline ⇒ Object
Return cmdline usage strings for options in an Array.
-
#default ⇒ Object
Return default options.
-
#each(&blk) ⇒ Object
Options list iterator.
-
#each_given(&blk) ⇒ Object
Options iterator for given options.
-
#error(str) ⇒ Object
Como error printout.
-
#findOpt(str) ⇒ Object
Find option object by option str.
-
#givenCount ⇒ Object
Number of given options.
-
#givenSubcmd ⇒ Object
Return the selected subcommand.
-
#hasArg ⇒ Object
Option requires argument?.
-
#hasMany ⇒ Object
Option requires many arguments?.
-
#initialize(name, opt, type, doc, value = nil) ⇒ Opt
constructor
Create Opt object: [name] Option name string.
-
#isExclusive ⇒ Object
Test if option is exclusive.
-
#isRequired ⇒ Object
Is mandatory argument?.
-
#isSwitch ⇒ Object
Test if option is of switch type.
-
#opt ⇒ Object
Option’s opt id.
-
#params ⇒ Hash
Returns Hash of option value parameters.
-
#parse(args, checkInvalids = true) ⇒ Object
Parse cmdline options from args.
-
#setRuleCheck(&rule) ⇒ Object
Set rule checks for the option.
-
#setSubopt(opts, subs) ⇒ Object
Set subcommand suboptions.
-
#setUsageFooter(str) ⇒ Object
Set optional footer for “usage”.
-
#setUsageHeader(str) ⇒ Object
Set optional header for “usage”.
-
#silent? ⇒ Boolean
Test if option is silent.
-
#suball ⇒ Object
All subcommand options, options and subcommands.
-
#suboptDoc ⇒ Object
Return document strings for options.
-
#usage(doExit = nil, ruleHelp = nil) ⇒ Object
Display program usage (and optionally exit).
-
#usageCommand ⇒ Object
Usage printout for command.
-
#usageIfHelp ⇒ Object
Display program usage (and optionally exit).
-
#usageNormal ⇒ Object
Usage info for Opt:s.
-
#usageNormalOld ⇒ Object
Usage info for Opt:s.
-
#~ ⇒ Object
Short syntax for value reference.
Methods inherited from ComoCommon
Constructor Details
#initialize(name, opt, type, doc, value = nil) ⇒ Opt
Create Opt object:
- name
-
Option name string.
- opt
-
Switch string.
- type
-
Option type. One of:
-
:switch
-
:single
-
:multi
-
:opt_single
-
:opt_multi
-
:opt_any
-
:default
-
:exclusive
-
:silent
-
- doc
-
Option documentation.
- value
-
Default value.
925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 |
# File 'lib/como.rb', line 925 def initialize( name, opt, type, doc, value = nil ) @parent = nil @name = name @shortOpt = opt @longOpt = "--#{name}" @type = type @value = value @doc = doc # Whether option was set or not. @given = false @subopt = nil @subcmd = nil @rules = nil @config = @@config.dup Opt.addOpt( self ) end |
Instance Attribute Details
#config ⇒ Object (readonly)
Opt configuration.
903 904 905 |
# File 'lib/como.rb', line 903 def config @config end |
#doc ⇒ Object
Option documentation string.
891 892 893 |
# File 'lib/como.rb', line 891 def doc @doc end |
#given(yieldOpt = false, &prog) ⇒ Object Also known as: given?
Returns true if option is given, and block is not present. When block is present, the block is executed (with value as parameter) if option has been given.
1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 |
# File 'lib/como.rb', line 1321 def given( yieldOpt = false, &prog ) if block_given? if @given if yieldOpt yield( self ) else yield( @value ) end else false end else @given end end |
#longOpt ⇒ Object
Long option string.
882 883 884 |
# File 'lib/como.rb', line 882 def longOpt @longOpt end |
#name ⇒ Object
Option name.
876 877 878 |
# File 'lib/como.rb', line 876 def name @name end |
#parent ⇒ Object
Subcommand parent (i.e. host).
872 873 874 |
# File 'lib/como.rb', line 872 def parent @parent end |
#rules ⇒ Object (readonly)
Opt rules.
906 907 908 |
# File 'lib/como.rb', line 906 def rules @rules end |
#shortOpt ⇒ Object
Short option string.
879 880 881 |
# File 'lib/como.rb', line 879 def shortOpt @shortOpt end |
#subcmd ⇒ Object (readonly)
List of subcommands.
900 901 902 |
# File 'lib/como.rb', line 900 def subcmd @subcmd end |
#subopt ⇒ Object (readonly)
List of suboptions.
897 898 899 |
# File 'lib/como.rb', line 897 def subopt @subopt end |
#type ⇒ Object
Option type.
885 886 887 |
# File 'lib/como.rb', line 885 def type @type end |
#value ⇒ Object
Option value.
888 889 890 |
# File 'lib/como.rb', line 888 def value @value end |
Class Method Details
.[](str) ⇒ Object
Select option object by name. Main is searched first and then the flattened list of all options.
786 787 788 789 790 791 792 793 794 795 796 797 798 799 |
# File 'lib/como.rb', line 786 def Opt.[](str) # Search Main first. ret = Opt.main.argByName( str ) unless ret ret = Opt.findOpt( str ) unless ret raise RuntimeError, "Option \"#{str}\" does not exist..." end end ret end |
.addOpt(opt) ⇒ Object
Add option to options list.
750 751 752 |
# File 'lib/como.rb', line 750 def Opt.addOpt( opt ) @@opts.push opt end |
.author ⇒ Object
Return author.
815 816 817 |
# File 'lib/como.rb', line 815 def Opt. @@main. end |
.configOverlay(config) ⇒ Object
Overlay Opt default configuration options.
862 863 864 |
# File 'lib/como.rb', line 862 def Opt.configOverlay( config ) @@config.merge!( config ) end |
.current ⇒ Object
Current subcmd processed.
762 763 764 |
# File 'lib/como.rb', line 762 def Opt.current @@subcmd end |
.default ⇒ Object
Return arguments (options) that have no switch.
828 829 830 |
# File 'lib/como.rb', line 828 def Opt.default Opt.main.default end |
.defaultOpt(doc = "No doc.") ⇒ Object
Create default option spec, no switch.
844 845 846 |
# File 'lib/como.rb', line 844 def Opt.defaultOpt( doc = "No doc." ) new( "<default>", "<default>", :default, doc, [] ) end |
.each(&blk) ⇒ Object
Options iterator for all options.
850 851 852 |
# File 'lib/como.rb', line 850 def Opt.each( &blk ) Opt.main.each &blk end |
.each_given(&blk) ⇒ Object
Options iterator for given options.
856 857 858 |
# File 'lib/como.rb', line 856 def Opt.each_given( &blk ) Opt.main.each_given( &blk ) end |
.external ⇒ Object
Return arguments (options) that are specified as command external (i.e. after ‘–’).
822 823 824 |
# File 'lib/como.rb', line 822 def Opt.external Opt.main.external end |
.findOpt(name) ⇒ Object
Find option by name.
768 769 770 771 772 773 774 775 |
# File 'lib/como.rb', line 768 def Opt.findOpt( name ) idx = @@opts.index do |i| i.name == name end if idx @@opts[ idx ] else nil end end |
.full(name, opt, type, doc = "No doc.") ⇒ Object
Create option spec.
834 835 836 |
# File 'lib/como.rb', line 834 def Opt.full( name, opt, type, doc = "No doc." ) new( name, opt, type, doc ) end |
.main ⇒ Object
Get main option.
744 745 746 |
# File 'lib/como.rb', line 744 def Opt.main @@main end |
.progname ⇒ Object
Return program name.
803 804 805 |
# File 'lib/como.rb', line 803 def Opt.progname @@main.name end |
.reset ⇒ Object
Reset “dynamic” class members.
779 780 781 |
# File 'lib/como.rb', line 779 def Opt.reset @@opts = [] end |
.setMain(main) ⇒ Object
Set main option.
738 739 740 741 |
# File 'lib/como.rb', line 738 def Opt.setMain( main ) @@main = main Opt.setSubcmd( main ) end |
.setSubcmd(opt) ⇒ Object
Set current subcmd.
756 757 758 |
# File 'lib/como.rb', line 756 def Opt.setSubcmd( opt ) @@subcmd = opt end |
.subcmd(name, doc = "No doc.") ⇒ Object
Create sub-command option spec.
839 840 841 |
# File 'lib/como.rb', line 839 def Opt.subcmd( name, doc = "No doc." ) new( name, nil, :subcmd, doc, false ) end |
.year ⇒ Object
Return program year.
809 810 811 |
# File 'lib/como.rb', line 809 def Opt.year @@main.year end |
Instance Method Details
#[](str) ⇒ Object
Select option object by name operator.
1251 1252 1253 1254 1255 1256 1257 |
# File 'lib/como.rb', line 1251 def []( str ) ret = argByName( str ) unless ret raise RuntimeError, "Subopt \"#{str}\" does not exist for \"#{@name}\"!" end ret end |
#apply(default = nil) ⇒ Object
Return option value if given otherwise the default. Example usage: fileName = Opt.apply( “no_name.txt” )
1306 1307 1308 1309 1310 1311 1312 |
# File 'lib/como.rb', line 1306 def apply( default = nil ) if given value else default end end |
#applyConfig(config) ⇒ Object
Merge config to base config.
965 966 967 |
# File 'lib/como.rb', line 965 def applyConfig( config ) @config.merge!( config ) end |
#argById(str) ⇒ Object
Select option object by name/opt/longOpt.
1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 |
# File 'lib/como.rb', line 1393 def argById( str ) if str == nil || str == :default @subopt.each do |o| if o.type == :default return o end end nil else suball.each do |o| if str == o.name || str == o.opt || str == o.longOpt return o end end nil end end |
#argByName(str) ⇒ Object
Select option object by name.
1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 |
# File 'lib/como.rb', line 1373 def argByName( str ) if str == nil || str == :default @subopt.each do |o| if o.type == :default return o end end nil else suball.each do |o| if str == o.name return o end end nil end end |
#check(argsState) ⇒ Object
Check provided args.
982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 |
# File 'lib/como.rb', line 982 def check( argsState ) # Start at top. top = self begin # Parse and check for invalid arguments. begin top = top.parse( argsState, top.config[ :check_invalid ] ) end while( top ) # Check for any missing valid arguments. checkMissing rescue Opt::MissingArgument, Opt::InvalidOption => err error( err.to_s ) # Display subcmd specific usage info. err.data.usage exit( 1 ) end # Revert back to top after hierarchy travelsal. usageIfHelp # Check rules. cur = self while cur cur.checkRule cur = cur.givenSubcmd end self end |
#checkAlso(opt, error, &check) ⇒ Object
Additional option check.
1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 |
# File 'lib/como.rb', line 1231 def checkAlso( opt, error, &check ) begin if self[opt].evalCheck( &check ) != true raise Opt::InvalidOption.new( error, self ) end rescue Opt::MissingArgument, Opt::InvalidOption => err @@io.puts error( err.to_s ) err.data.usage exit( 1 ) end end |
#checkMissing ⇒ Object
Check for any non-given required arguments recursively through hierarchy of subcommands. MissingArgument Exception is generated if argument is missing.
1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 |
# File 'lib/como.rb', line 1152 def checkMissing return unless config[ :check_missing ] # Full cmd name. cmd = ( getParents.map do |i| i.name end ).join( ' ' ) # Check for any exclusive args first. @subopt.each do |o| if o.isExclusive && o.given return end end # Check for required arguments for this level before # subcmds. @subopt.each do |o| if o.isRequired unless o.given raise MissingArgument.new( "Option \"#{o.opt}\" missing for \"#{cmd}\"...", self ) end end end if hasSubcmd if @config[ :subcheck ] # Compulsory Subcommand checking enabled. subcmdMissing = true else subcmdMissing = false end else subcmdMissing = false end # Check for any subcmd args. sub = givenSubcmd if sub subcmdMissing = false # Use recursion to examine the next level. return sub.checkMissing end # If no subcmds are given, issue error. raise MissingArgument.new( "Subcommand required for \"#{cmd}\"...", self ) if subcmdMissing end |
#checkRule ⇒ Object
Check option combination rules.
1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 |
# File 'lib/como.rb', line 1208 def checkRule return unless @rules begin raise Opt::InvalidOption.new( "Option combination mismatch!", self ) unless RuleCheck.check( self, &@rules ) rescue Opt::MissingArgument, Opt::InvalidOption => err @@io.puts error( err.to_s ) usage( nil, true ) end end |
#cmdline ⇒ Object
Return cmdline usage strings for options in an Array.
1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 1581 1582 1583 1584 1585 1586 1587 1588 1589 1590 1591 1592 1593 1594 1595 1596 1597 1598 1599 1600 1601 1602 1603 1604 1605 1606 1607 1608 1609 1610 |
# File 'lib/como.rb', line 1569 def cmdline opts = [] @subopt.each do |o| next if o.silent? prural = nil case o.type when :multi, :opt_multi; prural = "+" when :opt_any; prural = "*" else prural = "" end if !( o.isSwitch ) name = " <#{o.name}>#{prural}" else name = "" end if o.shortOpt == nil opt = o.longOpt else opt = o.shortOpt end if o.isRequired opts.push "#{opt}#{name}" else opts.push "[#{opt}#{name}]" end end if hasSubcmd opts.push "<<subcommand>>" end opts end |
#default ⇒ Object
Return default options.
1367 1368 1369 |
# File 'lib/como.rb', line 1367 def default argByName( nil ) end |
#each(&blk) ⇒ Object
Options list iterator.
1273 1274 1275 1276 1277 |
# File 'lib/como.rb', line 1273 def each( &blk ) suball.each do |o| yield o end end |
#each_given(&blk) ⇒ Object
Options iterator for given options.
1281 1282 1283 1284 1285 |
# File 'lib/como.rb', line 1281 def each_given( &blk ) suball.each do |o| yield o if o.given end end |
#error(str) ⇒ Object
Como error printout.
1651 1652 1653 |
# File 'lib/como.rb', line 1651 def error( str ) STDERR.puts "\n#{Opt.progname} error: #{str}" end |
#findOpt(str) ⇒ Object
Find option object by option str.
1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 |
# File 'lib/como.rb', line 1637 def findOpt( str ) if str == nil suball.detect { |i| i.type == :default } elsif str[0..1] == "--" suball.detect { |i| i.longOpt == str } elsif str[0..0] != "-" suball.detect { |i| i.name == str } else suball.detect { |i| i.opt == str } end end |
#givenCount ⇒ Object
Number of given options.
1289 1290 1291 1292 1293 1294 1295 |
# File 'lib/como.rb', line 1289 def givenCount cnt = 0 each_given do |i| cnt += 1 end cnt end |
#givenSubcmd ⇒ Object
Return the selected subcommand.
1343 1344 1345 |
# File 'lib/como.rb', line 1343 def givenSubcmd ( @subcmd.select do |o| o.given end )[0] end |
#hasArg ⇒ Object
Option requires argument?
1413 1414 1415 1416 1417 1418 |
# File 'lib/como.rb', line 1413 def hasArg case @type when :single, :multi, :opt_single, :opt_multi, :opt_any, :exclusive; true else false end end |
#hasMany ⇒ Object
Option requires many arguments?
1422 1423 1424 1425 1426 1427 |
# File 'lib/como.rb', line 1422 def hasMany case @type when :multi, :opt_multi, :opt_any, :exclusive; true else false end end |
#isExclusive ⇒ Object
Test if option is exclusive. In addition :exclusive also :silent is exclusive.
1447 1448 1449 1450 1451 1452 |
# File 'lib/como.rb', line 1447 def isExclusive case @type when :exclusive, :silent; true else false end end |
#isRequired ⇒ Object
Is mandatory argument?
1431 1432 1433 1434 1435 1436 |
# File 'lib/como.rb', line 1431 def isRequired case @type when :single, :multi; true else false end end |
#isSwitch ⇒ Object
Test if option is of switch type.
1456 1457 1458 1459 1460 1461 |
# File 'lib/como.rb', line 1456 def isSwitch case @type when :switch, :exclusive, :default; true else false end end |
#opt ⇒ Object
Option’s opt id. Short if exists otherwise long.
1261 1262 1263 |
# File 'lib/como.rb', line 1261 def opt @shortOpt ? @shortOpt : @longOpt end |
#params ⇒ Hash
Returns Hash of option value parameters. Example command line content:
-p rounds=10 length=5
Option value content in this case would be (Array of param settings):
[ "rounds=10", "length=5" ]
1355 1356 1357 1358 1359 1360 1361 1362 1363 |
# File 'lib/como.rb', line 1355 def params map = {} @value.each do |i| name, value = i.split('=') value = str_to_num( value ) map[ name ] = value end map end |
#parse(args, checkInvalids = true) ⇒ Object
Parse cmdline options from args.
1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 |
# File 'lib/como.rb', line 1023 def parse( args, checkInvalids = true ) while args.get #puts "Opt.parse (#{@name}): #{args.get}" if args.isOptTerm # Rest of the args do not belong to this program. args.next Opt.main.external = args.rest break elsif args.isOpt o = findOpt( args.get ) if !o if checkInvalids raise \ InvalidOption.new( "Unknown option \"#{args.get}\"...", self ) else o = findOpt( nil ) if !o raise \ InvalidOption.new( "No default option specified to allow \"#{args.get}\"...", self ) else # Default option. o.value.push args.toValue args.next end end elsif o && o.hasArg args.next if ( !args.get || args.isOpt ) && o.type != :opt_any && o.type != :exclusive raise MissingArgument.new( "No argument given for \"#{o.opt}\"...", self ) else if o.hasMany # Get all argument for multi-option. o.value = [] if !o.given while args.get && !args.isOpt o.value.push args.toValue args.next end else # Get one argument for single-option. if o.given raise \ InvalidOption.new( "Too many arguments for option (\"#{o.name}\")...", self ) else o.value = args.toValue end args.next end end o.given = true else if !o raise InvalidOption.new( "No valid options specified...", self ) else o.given = true args.next end end else # Subcmd or default. Check for Subcmd first. # Search for Subcmd. o = findOpt( args.get ) if !o # Search for default option. o = findOpt( nil ) if !o raise \ InvalidOption.new( "No default option specified to allow \"#{args.get}\"...", self ) else # Default option. o.given = true o.value.push args.toValue args.next end else # Subcmd. o.given = true args.next return o end end end nil end |
#setRuleCheck(&rule) ⇒ Object
Set rule checks for the option.
973 974 975 |
# File 'lib/como.rb', line 973 def setRuleCheck( &rule ) @rules = rule end |
#setSubopt(opts, subs) ⇒ Object
Set subcommand suboptions.
948 949 950 951 952 953 954 955 956 957 958 959 |
# File 'lib/como.rb', line 948 def setSubopt( opts, subs ) opts.each do |i| i.parent = self end subs.each do |i| i.parent = self end @subopt = opts @subcmd = subs end |
#setUsageFooter(str) ⇒ Object
Set optional footer for “usage”.
1474 1475 1476 |
# File 'lib/como.rb', line 1474 def ( str ) @config[ :footer ] = str end |
#setUsageHeader(str) ⇒ Object
Set optional header for “usage”.
1468 1469 1470 |
# File 'lib/como.rb', line 1468 def setUsageHeader( str ) @config[ :header ] = str end |
#silent? ⇒ Boolean
Test if option is silent.
1440 1441 1442 |
# File 'lib/como.rb', line 1440 def silent? @type == :silent end |
#suball ⇒ Object
All subcommand options, options and subcommands.
1267 1268 1269 |
# File 'lib/como.rb', line 1267 def suball @subopt + @subcmd end |
#suboptDoc ⇒ Object
Return document strings for options.
1614 1615 1616 1617 1618 1619 1620 1621 1622 1623 1624 1625 1626 1627 1628 1629 1630 1631 1632 1633 |
# File 'lib/como.rb', line 1614 def suboptDoc str = "" # format = Proc.new do |s,d| ( " %-#{@config[ :tab ]}s%s\n" % [ s, d ] ) end str += " Options:\n" if hasSubcmd && hasVisibleOptions @subopt.each do |o| next if o.silent? str += suboptDocFormat( o.opt, o.doc ) end str += "\n" + suboptDocFormat( "Subcommands:", "" ) if hasSubcmd @subcmd.each do |o| str += suboptDocFormat( o.name, o.doc ) end str end |
#usage(doExit = nil, ruleHelp = nil) ⇒ Object
Display program usage (and optionally exit).
1487 1488 1489 1490 1491 1492 1493 1494 1495 1496 1497 1498 1499 1500 |
# File 'lib/como.rb', line 1487 def usage( doExit = nil, ruleHelp = nil ) doExit = @config[ :help_exit ] if doExit == nil ruleHelp = @config[ :rulehelp ] if ruleHelp == nil @@io.puts usageNormal if ruleHelp @@io.puts "\n Option Combinations:" @@io.puts RuleDisplay.print( &@rules ) end exit( 1 ) if doExit end |
#usageCommand ⇒ Object
Usage printout for command.
1514 1515 1516 1517 1518 1519 1520 1521 1522 1523 1524 |
# File 'lib/como.rb', line 1514 def usageCommand str = "" str += "\ Subcommand \"#{@name}\" usage: #{fullCommand} #{cmdline.join(" ")} " str += suboptDoc str += "\n" end |
#usageIfHelp ⇒ Object
Display program usage (and optionally exit).
1504 1505 1506 1507 1508 1509 1510 |
# File 'lib/como.rb', line 1504 def usageIfHelp if self['help'].given usage elsif hasSubcmd && givenSubcmd givenSubcmd.usageIfHelp end end |
#usageNormal ⇒ Object
Usage info for Opt:s.
1547 1548 1549 1550 1551 1552 1553 1554 1555 1556 1557 1558 1559 1560 1561 1562 1563 1564 1565 |
# File 'lib/como.rb', line 1547 def usageNormal str = "" if @config[ :header ] str += @config[ :header ] else str += "\n" end str += usageCommand if @config[ :footer ] str += @config[ :footer ] else str += "\n" end str end |
#usageNormalOld ⇒ Object
Usage info for Opt:s.
1527 1528 1529 1530 1531 1532 1533 1534 1535 1536 1537 1538 1539 1540 1541 1542 1543 1544 |
# File 'lib/como.rb', line 1527 def usageNormalOld str = "" if @config[ :header ] str += "\n" str += @config[ :header ] str += "\n" end str += usageCommand if @config[ :footer ] str += @config[ :footer ] str += "\n" end str end |
#~ ⇒ Object
Short syntax for value reference. Example: “~Opt”.
1299 1300 1301 |
# File 'lib/como.rb', line 1299 def ~() @value end |