@@ -95,21 +95,18 @@ func run(cmd *cobra.Command, args []string) {
95
95
os .Exit (commands .ErrGeneric )
96
96
}
97
97
98
- fqbn := flags .fqbn
99
- if fqbn == "" && sketch != nil {
100
- fqbn = sketch .Metadata .CPU .Fqbn
98
+ if flags .fqbn == "" && sketch != nil {
99
+ flags .fqbn = sketch .Metadata .CPU .Fqbn
101
100
}
102
- if fqbn == "" {
101
+ if flags . fqbn == "" {
103
102
formatter .PrintErrorMessage ("No Fully Qualified Board Name provided." )
104
103
os .Exit (commands .ErrGeneric )
105
104
}
106
- fqbnParts := strings . Split ( fqbn , ":" )
107
- if len ( fqbnParts ) < 3 || len ( fqbnParts ) > 4 {
105
+ fqbn , err := cores . ParseFQBN ( flags . fqbn )
106
+ if err != nil {
108
107
formatter .PrintErrorMessage ("Fully Qualified Board Name has incorrect format." )
109
108
os .Exit (commands .ErrBadArgument )
110
109
}
111
- packageName := fqbnParts [0 ]
112
- coreName := fqbnParts [1 ]
113
110
114
111
pm := commands .InitPackageManager ()
115
112
@@ -133,25 +130,20 @@ func run(cmd *cobra.Command, args []string) {
133
130
}
134
131
135
132
targetPlatform := pm .FindPlatform (& packagemanager.PlatformReference {
136
- Package : packageName ,
137
- PlatformArchitecture : coreName ,
133
+ Package : fqbn . Package ,
134
+ PlatformArchitecture : fqbn . PlatformArch ,
138
135
})
139
136
if targetPlatform == nil || pm .GetInstalledPlatformRelease (targetPlatform ) == nil {
140
137
errorMessage := fmt .Sprintf (
141
138
"\" %[1]s:%[2]s\" platform is not installed, please install it by running \" " +
142
- commands .AppName + " core install %[1]s:%[2]s\" ." , packageName , coreName )
139
+ commands .AppName + " core install %[1]s:%[2]s\" ." , fqbn . Package , fqbn . PlatformArch )
143
140
formatter .PrintErrorMessage (errorMessage )
144
141
os .Exit (commands .ErrCoreConfig )
145
142
}
146
143
147
144
ctx := & types.Context {}
148
145
ctx .PackageManager = pm
149
- if parsedFqbn , err := cores .ParseFQBN (fqbn ); err != nil {
150
- formatter .PrintError (err , "Error parsing FQBN." )
151
- os .Exit (commands .ErrBadArgument )
152
- } else {
153
- ctx .FQBN = parsedFqbn
154
- }
146
+ ctx .FQBN = fqbn
155
147
ctx .SketchLocation = paths .New (sketch .FullPath )
156
148
157
149
// FIXME: This will be redundant when arduino-builder will be part of the cli
@@ -242,12 +234,13 @@ func run(cmd *cobra.Command, args []string) {
242
234
// FIXME: Make a function to obtain these info...
243
235
outputPath := ctx .BuildProperties .ExpandPropsInString ("{build.path}/{recipe.output.tmp_file}" )
244
236
ext := filepath .Ext (outputPath )
237
+
245
238
// FIXME: Make a function to produce a better name...
246
- fqbn = strings .Replace (fqbn , ":" , "." , - 1 )
239
+ fqbnSuffix : = strings .Replace (fqbn . String () , ":" , "." , - 1 )
247
240
248
241
// Copy .hex file to sketch directory
249
242
srcHex := paths .New (outputPath )
250
- dstHex := paths .New (sketch .FullPath ).Join (sketch .Name + "." + fqbn + ext )
243
+ dstHex := paths .New (sketch .FullPath ).Join (sketch .Name + "." + fqbnSuffix + ext )
251
244
logrus .WithField ("from" , srcHex ).WithField ("to" , dstHex ).Print ("copying sketch build output" )
252
245
if err = srcHex .CopyTo (dstHex ); err != nil {
253
246
formatter .PrintError (err , "Error copying output file." )
@@ -256,7 +249,7 @@ func run(cmd *cobra.Command, args []string) {
256
249
257
250
// Copy .elf file to sketch directory
258
251
srcElf := paths .New (outputPath [:len (outputPath )- 3 ] + "elf" )
259
- dstElf := paths .New (sketch .FullPath ).Join (sketch .Name + "." + fqbn + ".elf" )
252
+ dstElf := paths .New (sketch .FullPath ).Join (sketch .Name + "." + fqbnSuffix + ".elf" )
260
253
logrus .WithField ("from" , srcElf ).WithField ("to" , dstElf ).Print ("copying sketch build output" )
261
254
if err = srcElf .CopyTo (dstElf ); err != nil {
262
255
formatter .PrintError (err , "Error copying elf file." )
0 commit comments