Skip to content

Commit c94cd2a

Browse files
committed
Reimplemented serial-discovery discovery
1 parent 8d1f070 commit c94cd2a

File tree

3 files changed

+43
-32
lines changed

3 files changed

+43
-32
lines changed

commands/board/list.go

-30
Original file line numberDiff line numberDiff line change
@@ -21,12 +21,8 @@ import (
2121
"context"
2222
"errors"
2323
"fmt"
24-
"os"
2524

26-
"github.com/arduino/arduino-cli/arduino/discovery"
27-
"github.com/arduino/arduino-cli/cli"
2825
"github.com/arduino/arduino-cli/commands"
29-
"github.com/arduino/arduino-cli/common/formatter"
3026
"github.com/arduino/arduino-cli/rpc"
3127
)
3228

@@ -36,32 +32,6 @@ func BoardList(ctx context.Context, req *rpc.BoardListReq) (*rpc.BoardListResp,
3632
return nil, errors.New("invalid instance")
3733
}
3834

39-
// Check for bultin serial-discovery tool
40-
loadBuiltinSerialDiscoveryMetadata(pm)
41-
serialDiscoveryTool, _ := getBuiltinSerialDiscoveryTool(pm)
42-
if !serialDiscoveryTool.IsInstalled() {
43-
formatter.Print("Downloading and installing missing tool: " + serialDiscoveryTool.String())
44-
commands.DownloadToolRelease(pm, serialDiscoveryTool, cli.OutputProgressBar())
45-
commands.InstallToolRelease(pm, serialDiscoveryTool, cli.OutputTaskProgress())
46-
47-
if err := pm.LoadHardware(cli.Config); err != nil {
48-
formatter.PrintError(err, "Could not load hardware packages.")
49-
os.Exit(cli.ErrCoreConfig)
50-
}
51-
serialDiscoveryTool, _ = getBuiltinSerialDiscoveryTool(pm)
52-
if !serialDiscoveryTool.IsInstalled() {
53-
formatter.PrintErrorMessage("Missing serial-discovery tool.")
54-
os.Exit(cli.ErrCoreConfig)
55-
}
56-
}
57-
58-
// TODO: move to 'commands' modules
59-
_, err := discovery.NewFromCommandLine(serialDiscoveryTool.InstallDir.Join("serial-discovery").String())
60-
if err != nil {
61-
formatter.PrintError(err, "Error setting up serial-discovery tool.")
62-
os.Exit(cli.ErrCoreConfig)
63-
}
64-
6535
resp := &rpc.BoardListResp{Ports: []*rpc.DetectedPort{}}
6636
for _, disc := range commands.GetDiscoveries(req) {
6737
ports, err := disc.List()

commands/board/serial-discovery.go renamed to commands/bundled_tools_serial_discovery.go

+15-1
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,14 @@
1515
// a commercial license, send an email to [email protected].
1616
//
1717

18-
package board
18+
package commands
1919

2020
import (
21+
"fmt"
22+
2123
"github.com/arduino/arduino-cli/arduino/cores"
2224
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
25+
"github.com/arduino/arduino-cli/arduino/discovery"
2326
"github.com/arduino/arduino-cli/arduino/resources"
2427
semver "go.bug.st/relaxed-semver"
2528
)
@@ -87,3 +90,14 @@ func loadBuiltinSerialDiscoveryMetadata(pm *packagemanager.PackageManager) {
8790
func getBuiltinSerialDiscoveryTool(pm *packagemanager.PackageManager) (*cores.ToolRelease, error) {
8891
return pm.Package("builtin").Tool("serial-discovery").Release(serialDiscoveryVersion).Get()
8992
}
93+
94+
func newBuiltinSerialDiscovery(pm *packagemanager.PackageManager) (*discovery.Discovery, error) {
95+
t, err := getBuiltinSerialDiscoveryTool(pm)
96+
if err != nil {
97+
return nil, err
98+
}
99+
if !t.IsInstalled() {
100+
return nil, fmt.Errorf("missing serial-discovery tool")
101+
}
102+
return discovery.NewFromCommandLine(t.InstallDir.Join("serial-discovery").String())
103+
}

commands/instances.go

+28-1
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,35 @@ func GetDiscoveries(req InstanceContainer) []*discovery.Discovery {
8282
}
8383

8484
func (instance *CoreInstance) startDiscoveries(downloadCB DownloadProgressCB, taskCB TaskProgressCB) error {
85+
// Check for bultin serial-discovery tool
86+
loadBuiltinSerialDiscoveryMetadata(instance.pm)
87+
88+
if downloadCB != nil {
89+
serialDiscoveryTool, _ := getBuiltinSerialDiscoveryTool(instance.pm)
90+
if !serialDiscoveryTool.IsInstalled() {
91+
//formatter.Print("Downloading and installing missing tool: " + serialDiscoveryTool.String())
92+
if err := DownloadToolRelease(instance.pm, serialDiscoveryTool, downloadCB); err != nil {
93+
return fmt.Errorf(("could not download serial-discovery tool"))
94+
}
95+
if err := InstallToolRelease(instance.pm, serialDiscoveryTool, taskCB); err != nil {
96+
return fmt.Errorf(("could not install serial-discovery tool"))
97+
}
98+
if err := instance.pm.LoadHardware(instance.config); err != nil {
99+
return fmt.Errorf("could not load hardware packages: %s", err)
100+
}
101+
}
102+
}
103+
104+
serialDiscovery, err := newBuiltinSerialDiscovery(instance.pm)
105+
if err != nil {
106+
return fmt.Errorf("starting serial discovery: %s", err)
107+
}
108+
85109
discoveriesToStop := instance.discoveries
86-
discoveriesToStart := discovery.ExtractDiscoveriesFromPlatforms(instance.pm)
110+
discoveriesToStart := append(
111+
discovery.ExtractDiscoveriesFromPlatforms(instance.pm),
112+
serialDiscovery,
113+
)
87114

88115
instance.discoveries = []*discovery.Discovery{}
89116
for _, disc := range discoveriesToStart {

0 commit comments

Comments
 (0)