+ # Name, usage and synopsis of the tool.
+ # It is mainly used in `usage`.
+ # Should be correctly set by the client before calling `process_options`
+ # A multi-line string is recommmended.
+ #
+ # eg. `"Usage: tool [OPTION]... [FILE]...\nDo some things."`
+ var tooldescription: String writable = "Usage: [OPTION]... [ARG]..."
+
+ # Does `process_options` should accept an empty sequence of arguments.
+ # ie. nothing except options.
+ # Is `false` by default.
+ #
+ # If required, if should be set by the client before calling `process_options`
+ var accept_no_arguments writable = false
+
+ # print the full usage of the tool.
+ # Is called by `process_option` on `--help`.
+ # It also could be called by the client.
+ fun usage
+ do
+ print tooldescription
+ option_context.usage
+ end
+