File tree Expand file tree Collapse file tree 4 files changed +14
-1
lines changed Expand file tree Collapse file tree 4 files changed +14
-1
lines changed Original file line number Diff line number Diff line change @@ -6,10 +6,11 @@ class Base
66 attr_reader :options
77
88 OPTION_KEYS = %i[
9+ allowed
910 arg
11+ default
1012 dependencies
1113 description
12- default
1314 environment_variables
1415 examples
1516 flags
Original file line number Diff line number Diff line change @@ -15,6 +15,7 @@ command_shortcut: "Shortcut: %{short}"
1515default_command_summary : " %{summary} (default)"
1616required : " (required)"
1717default : " Default: %{value}"
18+ allowed : " Allowed: %{values}"
1819
1920# Fixed flags help text
2021help_flag_text : Show this help
@@ -28,3 +29,4 @@ missing_required_argument: "missing required argument: %{arg}\\nusage: %{usage}"
2829missing_required_flag : " missing required flag: %{usage}"
2930missing_required_environment_variable : " missing required environment variable: %{var}"
3031missing_dependency : " missing dependency: %{dependency}"
32+ disallowed_flag : " %{name} must be one of: %{allowed}"
Original file line number Diff line number Diff line change 55 args[<%= name %> ]="$2"
66 shift
77 shift
8+ <%- if allowed -%>
9+ allowed="<%= allowed.join '|' %> "
10+ if [[ ! ${args[<%= name %> ]} =~ $allowed ]]; then
11+ printf "%s\n" "<%= strings[:disallowed_flag] % { name: name, allowed: allowed.join(', ') } %> \n"
12+ exit 1
13+ fi
14+ <%- end -%>
815 else
916 printf "%s\n" "<%= strings[:flag_requires_an_argument] % { name: name, usage: usage_string } %> "
1017 exit 1
Original file line number Diff line number Diff line change 11# :flag.usage
22echo " <%= usage_string extended: true %> "
33printf "<%= help.wrap(76).indent(4).sanitize_for_print %> \n"
4+ <%- if allowed -%>
5+ printf " <%= strings[:allowed] % { values: allowed.join(', ') } -%> \n"
6+ <%- end -%>
47<%- if default -%>
58printf " <%= strings[:default] % { value: default } -%> \n"
69<%- end -%>
You can’t perform that action at this time.
0 commit comments