Skip to content

Commit 7737741

Browse files
committed
board attach command is now independent from arduino-modules/boards
1 parent 0586d93 commit 7737741

File tree

1 file changed

+31
-28
lines changed

1 file changed

+31
-28
lines changed

commands/board/attach.go

Lines changed: 31 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,13 @@ import (
3636
"regexp"
3737
"time"
3838

39+
"github.com/bcmi-labs/arduino-cli/cores"
40+
"github.com/bcmi-labs/arduino-cli/cores/packagemanager"
41+
3942
discovery "github.com/arduino/board-discovery"
4043
"github.com/bcmi-labs/arduino-cli/commands"
4144
"github.com/bcmi-labs/arduino-cli/common/formatter"
4245
"github.com/bcmi-labs/arduino-cli/configs"
43-
"github.com/bcmi-labs/arduino-modules/boards"
4446
"github.com/bcmi-labs/arduino-modules/sketches"
4547
"github.com/sirupsen/logrus"
4648
"github.com/spf13/cobra"
@@ -87,37 +89,30 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
8789
// FIXME: Replace with the PackageManager
8890
homeFolder, err := configs.ArduinoHomeFolder.Get()
8991
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.")
10393
os.Exit(commands.ErrCoreConfig)
10494
}
10595

10696
ss := sketches.Find(homeFolder)
107-
10897
sketch, exists := ss[sketchName]
10998
if !exists {
11099
formatter.PrintErrorMessage("Cannot find specified sketch in the Sketchbook.")
111100
os.Exit(commands.ErrGeneric)
112101
}
113102

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+
114109
deviceURI, err := url.Parse(boardURI)
115110
if err != nil {
116111
formatter.PrintError(err, "The provided Device URL is not in a valid format.")
117112
os.Exit(commands.ErrBadCall)
118113
}
119114

120-
var findBoardFunc func(boards.Boards, *discovery.Monitor, *url.URL) *boards.Board
115+
var findBoardFunc func(*discovery.Monitor, *url.URL) *cores.Board
121116
var Type string
122117

123118
if validSerialBoardURIRegexp.Match([]byte(boardURI)) {
@@ -132,11 +127,13 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
132127
}
133128

134129
// 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())
136133

137134
sketch.Metadata.CPU = sketches.MetadataCPU{
138-
Fqbn: board.Fqbn,
139-
Name: board.Name,
135+
Fqbn: board.FQBN(),
136+
Name: board.Name(),
140137
Type: Type,
141138
}
142139
err = sketch.ExportMetadata()
@@ -149,7 +146,7 @@ func runAttachCommand(cmd *cobra.Command, args []string) {
149146
// FIXME: Those should probably go in a "BoardManager" pkg or something
150147
// findSerialConnectedBoard find the board which is connected to the specified URI via serial port, using a monitor and a set of Boards
151148
// 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 {
153150
found := false
154151
location := deviceURI.Path
155152
var serialDevice discovery.SerialDevice
@@ -165,20 +162,20 @@ func findSerialConnectedBoard(bs boards.Boards, monitor *discovery.Monitor, devi
165162
return nil
166163
}
167164

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 {
170169
formatter.PrintErrorMessage("No Supported board has been found, try either install new cores or check your board URI.")
171170
os.Exit(commands.ErrGeneric)
172171
}
173172

174-
formatter.Print("SUPPORTED BOARD FOUND:")
175-
formatter.Print(board.String())
176-
return board
173+
return boards[0]
177174
}
178175

179176
// findNetworkConnectedBoard find the board which is connected to the specified URI on the network, using a monitor and a set of Boards
180177
// 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 {
182179
found := false
183180

184181
var networkDevice discovery.NetworkDevice
@@ -196,6 +193,12 @@ func findNetworkConnectedBoard(bs boards.Boards, monitor *discovery.Monitor, dev
196193
os.Exit(commands.ErrGeneric)
197194
}
198195

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]
201204
}

0 commit comments

Comments
 (0)