9
9
import processing .app .legacy .PApplet ;
10
10
11
11
import java .io .File ;
12
- import java .util .HashMap ;
13
- import java .util .LinkedList ;
14
- import java .util .List ;
15
- import java .util .Map ;
12
+ import java .util .*;
16
13
17
14
import static processing .app .I18n ._ ;
18
15
@@ -32,6 +29,8 @@ private enum ACTION {
32
29
}
33
30
}
34
31
32
+ private final String [] args ;
33
+ private final Map <String , ACTION > actions ;
35
34
private ACTION action = ACTION .GUI ;
36
35
private boolean doVerboseBuild = false ;
37
36
private boolean doVerboseUpload = false ;
@@ -44,30 +43,24 @@ private enum ACTION {
44
43
private String libraryToInstall ;
45
44
private List <String > filenames = new LinkedList <String >();
46
45
47
- public static CommandlineParser newCommandlineParser (String [] args ) {
48
- return new CommandlineParser (args );
49
- }
50
-
51
- private CommandlineParser (String [] args ) {
52
- parseArguments (args );
53
- checkAction ();
54
- }
46
+ public CommandlineParser (String [] args ) {
47
+ this .args = args ;
55
48
56
- private void parseArguments (String [] args ) {
57
- // Map of possible actions and corresponding options
58
- final Map <String , ACTION > actions = new HashMap <String , ACTION >();
49
+ actions = new HashMap <String , ACTION >();
59
50
actions .put ("--verify" , ACTION .VERIFY );
60
51
actions .put ("--upload" , ACTION .UPLOAD );
61
52
actions .put ("--get-pref" , ACTION .GET_PREF );
62
53
actions .put ("--install-boards" , ACTION .INSTALL_BOARD );
63
54
actions .put ("--install-library" , ACTION .INSTALL_LIBRARY );
55
+ }
64
56
65
- // Check if any files were passed in on the command line
57
+ public void parseArgumentsPhase1 () {
66
58
for (int i = 0 ; i < args .length ; i ++) {
67
59
ACTION a = actions .get (args [i ]);
68
60
if (a != null ) {
69
61
if (action != ACTION .GUI && action != ACTION .NOOP ) {
70
- String [] valid = actions .keySet ().toArray (new String [0 ]);
62
+ Set <String > strings = actions .keySet ();
63
+ String [] valid = strings .toArray (new String [strings .size ()]);
71
64
String mess = I18n .format (_ ("Can only pass one of: {0}" ), PApplet .join (valid , ", " ));
72
65
BaseNoGui .showError (null , mess , 3 );
73
66
}
@@ -139,7 +132,6 @@ private void parseArguments(String[] args) {
139
132
i ++;
140
133
if (i >= args .length )
141
134
BaseNoGui .showError (null , _ ("Argument required for --board" ), 3 );
142
- processBoardArgument (args [i ]);
143
135
if (action == ACTION .GUI )
144
136
action = ACTION .NOOP ;
145
137
continue ;
@@ -200,6 +192,23 @@ private void parseArguments(String[] args) {
200
192
201
193
filenames .add (args [i ]);
202
194
}
195
+
196
+ checkAction ();
197
+ }
198
+
199
+ public void parseArgumentsPhase2 () {
200
+ for (int i = 0 ; i < args .length ; i ++) {
201
+ if (args [i ].equals ("--board" )) {
202
+ i ++;
203
+ if (i >= args .length ) {
204
+ BaseNoGui .showError (null , _ ("Argument required for --board" ), 3 );
205
+ }
206
+ processBoardArgument (args [i ]);
207
+ if (action == ACTION .GUI ) {
208
+ action = ACTION .NOOP ;
209
+ }
210
+ }
211
+ }
203
212
}
204
213
205
214
private void checkAction () {
0 commit comments