3737import processing .app .Serial ;
3838import processing .app .SerialException ;
3939import processing .app .helpers .PreferencesMap ;
40+ import processing .app .helpers .PreferencesMapException ;
4041import processing .app .helpers .StringReplacer ;
4142
4243import static processing .app .I18n ._ ;
@@ -45,12 +46,18 @@ public class BasicUploader extends Uploader {
4546
4647 public boolean uploadUsingPreferences (String buildPath , String className ,
4748 boolean usingProgrammer )
48- throws RunnerException , SerialException {
49+ throws Exception {
4950 // FIXME: Preferences should be reorganized
5051 TargetPlatform targetPlatform = Base .getTargetPlatform ();
5152 PreferencesMap prefs = Preferences .getMap ();
5253 prefs .putAll (Base .getBoardPreferences ());
53- prefs .putAll (targetPlatform .getTool (prefs .get ("upload.tool" )));
54+ String tool = prefs .getOrExcept ("upload.tool" );
55+ if (tool .contains (":" )) {
56+ String [] split = tool .split (":" , 2 );
57+ targetPlatform = Base .getCurrentTargetPlatformFromPackage (split [0 ]);
58+ tool = split [1 ];
59+ }
60+ prefs .putAll (targetPlatform .getTool (tool ));
5461
5562 // if no protocol is specified for this board, assume it lacks a
5663 // bootloader and upload using the selected programmer.
@@ -71,7 +78,7 @@ public boolean uploadUsingPreferences(String buildPath, String className,
7178 boolean waitForUploadPort = (t != null ) && t .equals ("true" );
7279
7380 if (doTouch ) {
74- String uploadPort = prefs .get ("serial.port" );
81+ String uploadPort = prefs .getOrExcept ("serial.port" );
7582 try {
7683 // Toggle 1200 bps on selected serial port to force board reset.
7784 List <String > before = Serial .list ();
@@ -109,9 +116,9 @@ public boolean uploadUsingPreferences(String buildPath, String className,
109116 prefs .put ("build.path" , buildPath );
110117 prefs .put ("build.project_name" , className );
111118 if (verbose )
112- prefs .put ("upload.verbose" , prefs .get ("upload.params.verbose" ));
119+ prefs .put ("upload.verbose" , prefs .getOrExcept ("upload.params.verbose" ));
113120 else
114- prefs .put ("upload.verbose" , prefs .get ("upload.params.quiet" ));
121+ prefs .put ("upload.verbose" , prefs .getOrExcept ("upload.params.quiet" ));
115122
116123 boolean uploadResult ;
117124 try {
@@ -120,7 +127,7 @@ public boolean uploadUsingPreferences(String buildPath, String className,
120127// flushSerialBuffer();
121128// }
122129
123- String pattern = prefs .get ("upload.pattern" );
130+ String pattern = prefs .getOrExcept ("upload.pattern" );
124131 String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
125132 uploadResult = executeUploadCommand (cmd );
126133 } catch (Exception e ) {
@@ -211,7 +218,7 @@ private String waitForUploadPort(String uploadPort, List<String> before)
211218 }
212219
213220 public boolean uploadUsingProgrammer (String buildPath , String className )
214- throws RunnerException {
221+ throws Exception {
215222
216223 TargetPlatform targetPlatform = Base .getTargetPlatform ();
217224 String programmer = Preferences .get ("programmer" );
@@ -224,15 +231,15 @@ public boolean uploadUsingProgrammer(String buildPath, String className)
224231 PreferencesMap prefs = Preferences .getMap ();
225232 prefs .putAll (Base .getBoardPreferences ());
226233 prefs .putAll (targetPlatform .getProgrammer (programmer ));
227- prefs .putAll (targetPlatform .getTool (prefs .get ("program.tool" )));
234+ prefs .putAll (targetPlatform .getTool (prefs .getOrExcept ("program.tool" )));
228235
229236 prefs .put ("build.path" , buildPath );
230237 prefs .put ("build.project_name" , className );
231238
232239 if (verbose )
233- prefs .put ("program.verbose" , prefs .get ("program.params.verbose" ));
240+ prefs .put ("program.verbose" , prefs .getOrExcept ("program.params.verbose" ));
234241 else
235- prefs .put ("program.verbose" , prefs .get ("program.params.quiet" ));
242+ prefs .put ("program.verbose" , prefs .getOrExcept ("program.params.quiet" ));
236243
237244 try {
238245 // if (prefs.get("program.disable_flushing") == null
@@ -241,15 +248,15 @@ public boolean uploadUsingProgrammer(String buildPath, String className)
241248 // flushSerialBuffer();
242249 // }
243250
244- String pattern = prefs .get ("program.pattern" );
251+ String pattern = prefs .getOrExcept ("program.pattern" );
245252 String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
246253 return executeUploadCommand (cmd );
247254 } catch (Exception e ) {
248255 throw new RunnerException (e );
249256 }
250257 }
251258
252- public boolean burnBootloader () throws RunnerException {
259+ public boolean burnBootloader () throws RunnerException , PreferencesMapException {
253260 TargetPlatform targetPlatform = Base .getTargetPlatform ();
254261
255262 // Find preferences for the selected programmer
@@ -272,7 +279,7 @@ public boolean burnBootloader() throws RunnerException {
272279
273280 // Create configuration for bootloader tool
274281 PreferencesMap toolPrefs = new PreferencesMap ();
275- String tool = prefs .get ("bootloader.tool" );
282+ String tool = prefs .getOrExcept ("bootloader.tool" );
276283 if (tool .contains (":" )) {
277284 String [] split = tool .split (":" , 2 );
278285 TargetPlatform platform = Base .getCurrentTargetPlatformFromPackage (split [0 ]);
@@ -291,20 +298,20 @@ public boolean burnBootloader() throws RunnerException {
291298 // Merge tool with global configuration
292299 prefs .putAll (toolPrefs );
293300 if (verbose ) {
294- prefs .put ("erase.verbose" , prefs .get ("erase.params.verbose" ));
295- prefs .put ("bootloader.verbose" , prefs .get ("bootloader.params.verbose" ));
301+ prefs .put ("erase.verbose" , prefs .getOrExcept ("erase.params.verbose" ));
302+ prefs .put ("bootloader.verbose" , prefs .getOrExcept ("bootloader.params.verbose" ));
296303 } else {
297- prefs .put ("erase.verbose" , prefs .get ("erase.params.quiet" ));
298- prefs .put ("bootloader.verbose" , prefs .get ("bootloader.params.quiet" ));
304+ prefs .put ("erase.verbose" , prefs .getOrExcept ("erase.params.quiet" ));
305+ prefs .put ("bootloader.verbose" , prefs .getOrExcept ("bootloader.params.quiet" ));
299306 }
300307
301308 try {
302- String pattern = prefs .get ("erase.pattern" );
309+ String pattern = prefs .getOrExcept ("erase.pattern" );
303310 String [] cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
304311 if (!executeUploadCommand (cmd ))
305312 return false ;
306313
307- pattern = prefs .get ("bootloader.pattern" );
314+ pattern = prefs .getOrExcept ("bootloader.pattern" );
308315 cmd = StringReplacer .formatAndSplit (pattern , prefs , true );
309316 return executeUploadCommand (cmd );
310317 } catch (Exception e ) {
0 commit comments