84 public BadArgs showUsage(boolean b) {
85 showUsage = b;
86 return this;
87 }
88 public final String key;
89 public final Object[] args;
90 public boolean showUsage;
91 }
92
93 public static class Option<T> implements Comparable<T> {
94 public interface Processing<T> {
95
96 void process(T task, String opt, String arg) throws BadArgs;
97 }
98
99 final boolean hasArg;
100 final Processing<T> processing;
101 final boolean hidden;
102 final String name;
103 final String shortname;
104 final boolean terminalOption;
105
106 public Option(boolean hasArg,
107 Processing<T> processing,
108 boolean hidden,
109 String name,
110 String shortname,
111 boolean isTerminal)
112 {
113 if (!name.startsWith("--")) {
114 throw new RuntimeException("option name missing --, " + name);
115 }
116 if (!shortname.isEmpty() && !shortname.startsWith("-")) {
117 throw new RuntimeException("short name missing -, " + shortname);
118 }
119
120 this.hasArg = hasArg;
121 this.processing = processing;
122 this.hidden = hidden;
123 this.name = name;
124 this.shortname = shortname;
125 this.terminalOption = isTerminal;
126 }
127
128 public Option(boolean hasArg, Processing<T> processing, String name, String shortname, boolean isTerminal) {
129 this(hasArg, processing, false, name, shortname, isTerminal);
130 }
131
132 public Option(boolean hasArg, Processing<T> processing, String name, String shortname) {
133 this(hasArg, processing, false, name, shortname, false);
134 }
135
136 public Option(boolean hasArg, Processing<T> processing, boolean hidden, String name) {
137 this(hasArg, processing, hidden, name, "", false);
138 }
139
140 public Option(boolean hasArg, Processing<T> processing, String name) {
141 this(hasArg, processing, false, name, "", false);
142 }
143
144 public boolean isHidden() {
145 return hidden;
146 }
147
148 public boolean isTerminal() {
149 return terminalOption;
150 }
151
152 public boolean matches(String opt) {
153 return opt.equals(name) ||
154 opt.equals(shortname) ||
155 hasArg && opt.startsWith("--") && opt.startsWith(name + "=");
156 }
157
158 public boolean ignoreRest() {
159 return false;
160 }
161
162 void process(T task, String opt, String arg) throws BadArgs {
163 processing.process(task, opt, arg);
164 }
165
166 public String getName() {
167 return name;
168 }
169
170 public String resourceName() {
171 return resourcePrefix() + name.substring(2);
172 }
173
174 public String getShortname() {
|
84 public BadArgs showUsage(boolean b) {
85 showUsage = b;
86 return this;
87 }
88 public final String key;
89 public final Object[] args;
90 public boolean showUsage;
91 }
92
93 public static class Option<T> implements Comparable<T> {
94 public interface Processing<T> {
95
96 void process(T task, String opt, String arg) throws BadArgs;
97 }
98
99 final boolean hasArg;
100 final Processing<T> processing;
101 final boolean hidden;
102 final String name;
103 final String shortname;
104 final String shortname2;
105 final boolean terminalOption;
106
107 public Option(boolean hasArg,
108 Processing<T> processing,
109 boolean hidden,
110 String name,
111 String shortname,
112 String shortname2,
113 boolean isTerminal)
114 {
115 if (!name.startsWith("--")) {
116 throw new RuntimeException("option name missing --, " + name);
117 }
118 if (!shortname.isEmpty() && !shortname.startsWith("-")) {
119 throw new RuntimeException("short name missing -, " + shortname);
120 }
121
122 this.hasArg = hasArg;
123 this.processing = processing;
124 this.hidden = hidden;
125 this.name = name;
126 this.shortname = shortname;
127 this.shortname2 = shortname2;
128 this.terminalOption = isTerminal;
129 }
130 public Option(boolean hasArg,
131 Processing<T> processing,
132 boolean hidden,
133 String name,
134 String shortname,
135 boolean isTerminal)
136 {
137 this(hasArg, processing, false, name, shortname, "", isTerminal);
138 }
139
140 public Option(boolean hasArg, Processing<T> processing, String name, String shortname, boolean isTerminal) {
141 this(hasArg, processing, false, name, shortname, "", isTerminal);
142 }
143
144 public Option(boolean hasArg, Processing<T> processing, String name, String shortname, String shortname2) {
145 this(hasArg, processing, false, name, shortname, shortname2, false);
146 }
147
148 public Option(boolean hasArg, Processing<T> processing, String name, String shortname) {
149 this(hasArg, processing, false, name, shortname, "", false);
150 }
151
152 public Option(boolean hasArg, Processing<T> processing, boolean hidden, String name) {
153 this(hasArg, processing, hidden, name, "", "", false);
154 }
155
156 public Option(boolean hasArg, Processing<T> processing, String name) {
157 this(hasArg, processing, false, name, "", false);
158 }
159
160 public boolean isHidden() {
161 return hidden;
162 }
163
164 public boolean isTerminal() {
165 return terminalOption;
166 }
167
168 public boolean matches(String opt) {
169 return opt.equals(name) ||
170 opt.equals(shortname) ||
171 opt.equals(shortname2) ||
172 hasArg && opt.startsWith("--") && opt.startsWith(name + "=");
173 }
174
175 public boolean ignoreRest() {
176 return false;
177 }
178
179 void process(T task, String opt, String arg) throws BadArgs {
180 processing.process(task, opt, arg);
181 }
182
183 public String getName() {
184 return name;
185 }
186
187 public String resourceName() {
188 return resourcePrefix() + name.substring(2);
189 }
190
191 public String getShortname() {
|