var errors: Array[String] = new Array[String]
# Is this option mandatory?
- var mandatory: Bool writable = false
+ var mandatory: Bool = false is writable
# Is this option hidden from `usage`?
- var hidden: Bool writable = false
+ var hidden: Bool = false is writable
# Has this option been read?
- var read: Bool writable = false
+ var read: Bool = false is writable
# Current value of this option
- var value: VALUE writable
+ var value: VALUE is writable
# Default value of this option
- var default_value: VALUE writable
+ var default_value: VALUE is writable
# Create a new option
init(help: String, default: VALUE, names: nullable Array[String])
protected fun convert(str: String): VALUE is abstract
# Is the parameter mandatory?
- var parameter_mandatory: Bool writable = true
+ var parameter_mandatory: Bool = true is writable
redef fun read_param(it)
do
redef fun pretty_default
do
- if default_value != null then
- return " ({values[default_value]})"
- else
- return ""
- end
+ return " ({values[default_value]})"
end
end
# Context where the options process
class OptionContext
# Options present in the context
- var options: Array[Option]
+ var options = new Array[Option]
# Rest of the options after `parse` is called
- var rest: Array[String]
+ var rest = new Array[String]
# Errors found in the context after parsing
- var errors: Array[String]
+ var errors = new Array[String]
- private var optmap: Map[String, Option]
-
- init
- do
- options = new Array[Option]
- optmap = new HashMap[String, Option]
- rest = new Array[String]
- errors = new Array[String]
- end
+ private var optmap = new HashMap[String, Option]
# Add one or more options to the context
fun add_option(opts: Option...) do
parse_intern(it)
end
+ # Must all option be given before the first argument?
+ #
+ # When set to `false` (the default), options of the command line are
+ # all parsed until the end of the list of arguments or until "--" is met (in this case "--" is discarded).
+ #
+ # When set to `true` options are parsed until the first non-option is met.
+ var options_before_rest = false is writable
+
# Parse the command line
protected fun parse_intern(it: Iterator[String])
do
else
rest.add(it.item)
it.next
+ if options_before_rest then
+ rest.add_all(it.to_a)
+ parseargs = false
+ end
end
end
end
fun get_errors: Array[String]
do
- var errors: Array[String] = new Array[String]
+ var errors = new Array[String]
errors.add_all(errors)
for o in options do
for e in o.errors do