@@ -205,6 +205,7 @@ func (s *arduinoCoreServerImpl) Upload(req *rpc.UploadRequest, stream rpc.Arduin
205
205
errStream ,
206
206
req .GetDryRun (),
207
207
req .GetUserFields (),
208
+ req .GetUploadProperties (),
208
209
)
209
210
if err != nil {
210
211
return err
@@ -246,17 +247,18 @@ func (s *arduinoCoreServerImpl) UploadUsingProgrammer(req *rpc.UploadUsingProgra
246
247
return & cmderrors.MissingProgrammerError {}
247
248
}
248
249
return s .Upload (& rpc.UploadRequest {
249
- Instance : req .GetInstance (),
250
- SketchPath : req .GetSketchPath (),
251
- ImportFile : req .GetImportFile (),
252
- ImportDir : req .GetImportDir (),
253
- Fqbn : req .GetFqbn (),
254
- Port : req .GetPort (),
255
- Programmer : req .GetProgrammer (),
256
- Verbose : req .GetVerbose (),
257
- Verify : req .GetVerify (),
258
- UserFields : req .GetUserFields (),
259
- DryRun : req .GetDryRun (),
250
+ Instance : req .GetInstance (),
251
+ SketchPath : req .GetSketchPath (),
252
+ ImportFile : req .GetImportFile (),
253
+ ImportDir : req .GetImportDir (),
254
+ Fqbn : req .GetFqbn (),
255
+ Port : req .GetPort (),
256
+ Programmer : req .GetProgrammer (),
257
+ Verbose : req .GetVerbose (),
258
+ Verify : req .GetVerify (),
259
+ UserFields : req .GetUserFields (),
260
+ DryRun : req .GetDryRun (),
261
+ UploadProperties : req .GetUploadProperties (),
260
262
}, streamAdapter )
261
263
}
262
264
@@ -267,6 +269,7 @@ func runProgramAction(ctx context.Context, pme *packagemanager.Explorer,
267
269
verbose , verify , burnBootloader bool ,
268
270
outStream , errStream io.Writer ,
269
271
dryRun bool , userFields map [string ]string ,
272
+ requestUploadProperties []string ,
270
273
) (* rpc.Port , error ) {
271
274
port := rpc .DiscoveryPortFromRPCPort (userPort )
272
275
if port == nil || (port .Address == "" && port .Protocol == "" ) {
@@ -378,6 +381,13 @@ func runProgramAction(ctx context.Context, pme *packagemanager.Explorer,
378
381
uploadProperties .Merge (programmer .Properties )
379
382
}
380
383
384
+ // Add user provided custom upload properties
385
+ if p , err := properties .LoadFromSlice (requestUploadProperties ); err == nil {
386
+ uploadProperties .Merge (p )
387
+ } else {
388
+ return nil , fmt .Errorf ("invalid build properties: %w" , err )
389
+ }
390
+
381
391
// Certain tools require the user to provide custom fields at run time,
382
392
// if they've been provided set them
383
393
// For more info:
0 commit comments