@@ -36,11 +36,13 @@ import (
36
36
"regexp"
37
37
"time"
38
38
39
+ "github.com/bcmi-labs/arduino-cli/cores"
40
+ "github.com/bcmi-labs/arduino-cli/cores/packagemanager"
41
+
39
42
discovery "github.com/arduino/board-discovery"
40
43
"github.com/bcmi-labs/arduino-cli/commands"
41
44
"github.com/bcmi-labs/arduino-cli/common/formatter"
42
45
"github.com/bcmi-labs/arduino-cli/configs"
43
- "github.com/bcmi-labs/arduino-modules/boards"
44
46
"github.com/bcmi-labs/arduino-modules/sketches"
45
47
"github.com/sirupsen/logrus"
46
48
"github.com/spf13/cobra"
@@ -87,37 +89,30 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
87
89
// FIXME: Replace with the PackageManager
88
90
homeFolder , err := configs .ArduinoHomeFolder .Get ()
89
91
if err != nil {
90
- formatter .PrintError (err , "Cannot Parse Board Index file." )
91
- os .Exit (commands .ErrCoreConfig )
92
- }
93
-
94
- packageFolder , err := configs .PackagesFolder .Get ()
95
- if err != nil {
96
- formatter .PrintError (err , "Cannot Parse Board Index file." )
97
- os .Exit (commands .ErrCoreConfig )
98
- }
99
-
100
- bs , err := boards .Find (packageFolder )
101
- if err != nil {
102
- formatter .PrintError (err , "Cannot Parse Board Index file." )
92
+ formatter .PrintError (err , "Cannot find Sketchbook." )
103
93
os .Exit (commands .ErrCoreConfig )
104
94
}
105
95
106
96
ss := sketches .Find (homeFolder )
107
-
108
97
sketch , exists := ss [sketchName ]
109
98
if ! exists {
110
99
formatter .PrintErrorMessage ("Cannot find specified sketch in the Sketchbook." )
111
100
os .Exit (commands .ErrGeneric )
112
101
}
113
102
103
+ pm := packagemanager .PackageManager ()
104
+ if err = pm .LoadHardware (); err != nil {
105
+ formatter .PrintError (err , "Cannot Parse Board Index file." )
106
+ os .Exit (commands .ErrCoreConfig )
107
+ }
108
+
114
109
deviceURI , err := url .Parse (boardURI )
115
110
if err != nil {
116
111
formatter .PrintError (err , "The provided Device URL is not in a valid format." )
117
112
os .Exit (commands .ErrBadCall )
118
113
}
119
114
120
- var findBoardFunc func (boards. Boards , * discovery.Monitor , * url.URL ) * boards .Board
115
+ var findBoardFunc func (* discovery.Monitor , * url.URL ) * cores .Board
121
116
var Type string
122
117
123
118
if validSerialBoardURIRegexp .Match ([]byte (boardURI )) {
@@ -132,11 +127,13 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
132
127
}
133
128
134
129
// TODO: Handle the case when no board is found.
135
- board := findBoardFunc (bs , monitor , deviceURI )
130
+ board := findBoardFunc (monitor , deviceURI )
131
+ formatter .Print ("SUPPORTED BOARD FOUND:" )
132
+ formatter .Print (board .Name ())
136
133
137
134
sketch .Metadata .CPU = sketches.MetadataCPU {
138
- Fqbn : board .Fqbn ,
139
- Name : board .Name ,
135
+ Fqbn : board .FQBN () ,
136
+ Name : board .Name () ,
140
137
Type : Type ,
141
138
}
142
139
err = sketch .ExportMetadata ()
@@ -149,7 +146,7 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
149
146
// FIXME: Those should probably go in a "BoardManager" pkg or something
150
147
// findSerialConnectedBoard find the board which is connected to the specified URI via serial port, using a monitor and a set of Boards
151
148
// for the matching.
152
- func findSerialConnectedBoard (bs boards. Boards , monitor * discovery.Monitor , deviceURI * url.URL ) * boards .Board {
149
+ func findSerialConnectedBoard (monitor * discovery.Monitor , deviceURI * url.URL ) * cores .Board {
153
150
found := false
154
151
location := deviceURI .Path
155
152
var serialDevice discovery.SerialDevice
@@ -165,20 +162,20 @@ func findSerialConnectedBoard(bs boards.Boards, monitor *discovery.Monitor, devi
165
162
return nil
166
163
}
167
164
168
- board := bs .ByVidPid (serialDevice .VendorID , serialDevice .ProductID )
169
- if board == nil {
165
+ pm := packagemanager .PackageManager ()
166
+
167
+ boards := pm .FindBoardsWithVidPid (serialDevice .VendorID , serialDevice .ProductID )
168
+ if len (boards ) == 0 {
170
169
formatter .PrintErrorMessage ("No Supported board has been found, try either install new cores or check your board URI." )
171
170
os .Exit (commands .ErrGeneric )
172
171
}
173
172
174
- formatter .Print ("SUPPORTED BOARD FOUND:" )
175
- formatter .Print (board .String ())
176
- return board
173
+ return boards [0 ]
177
174
}
178
175
179
176
// findNetworkConnectedBoard find the board which is connected to the specified URI on the network, using a monitor and a set of Boards
180
177
// for the matching.
181
- func findNetworkConnectedBoard (bs boards. Boards , monitor * discovery.Monitor , deviceURI * url.URL ) * boards .Board {
178
+ func findNetworkConnectedBoard (monitor * discovery.Monitor , deviceURI * url.URL ) * cores .Board {
182
179
found := false
183
180
184
181
var networkDevice discovery.NetworkDevice
@@ -196,6 +193,12 @@ func findNetworkConnectedBoard(bs boards.Boards, monitor *discovery.Monitor, dev
196
193
os .Exit (commands .ErrGeneric )
197
194
}
198
195
199
- formatter .Print ("SUPPORTED BOARD FOUND:" )
200
- return bs .ByID (networkDevice .Name )
196
+ pm := packagemanager .PackageManager ()
197
+ boards := pm .FindBoardsWithID (networkDevice .Name )
198
+ if len (boards ) == 0 {
199
+ formatter .PrintErrorMessage ("No Supported board has been found, try either install new cores or check your board URI." )
200
+ os .Exit (commands .ErrGeneric )
201
+ }
202
+
203
+ return boards [0 ]
201
204
}
0 commit comments