Skip to content

Commit 4b2a32b

Browse files
authored
[skip-changelog] refactor: Made command functions to access PackageManager unavailable from public API (#2335)
* Let instance commands require an *rpc.Instance Removed the shorthand of the InstanceCommand interface. This makes the API more coherent among the `commands` instance handling. * Moved 'command' package's instances functions inside internal package This change highlights the incorrect PackageManager access in 'cli' package. Now those are errors: package github.com/arduino/arduino-cli imports github.com/arduino/arduino-cli/internal/cli imports github.com/arduino/arduino-cli/internal/cli/board imports github.com/arduino/arduino-cli/internal/cli/arguments internal/cli/arguments/completion.go:23:2: use of internal package github.com/arduino/arduino-cli/commands/internal/instances not allowed package github.com/arduino/arduino-cli imports github.com/arduino/arduino-cli/internal/cli imports github.com/arduino/arduino-cli/internal/cli/board imports github.com/arduino/arduino-cli/internal/cli/arguments internal/cli/arguments/port.go:24:2: use of internal package github.com/arduino/arduino-cli/commands/internal/instances not allowed * Made CoreInstance private * Inlined coreInstancesContainer singleton methods * Removed all wrong accesses to package Explorer * Replaced DiscoveryManager.Watch with equivalent gRPC BoardListWatch call * Replaced direct access to PackageManager to get discovery protocols Previously the function GetConnectedBoards() counter-intuitively returned a list of port address. Now it has been reneamed GetAvailablePorts() and returns the full Port object that is mapped into an array of Addresses or into an array of Prorocols based on the auto-completion request.
1 parent 1e51cdc commit 4b2a32b

31 files changed

+237
-271
lines changed

Diff for: commands/board/details.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,14 @@ import (
2121
"github.com/arduino/arduino-cli/arduino"
2222
"github.com/arduino/arduino-cli/arduino/cores"
2323
"github.com/arduino/arduino-cli/arduino/utils"
24-
"github.com/arduino/arduino-cli/commands"
24+
"github.com/arduino/arduino-cli/commands/internal/instances"
2525
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2626
)
2727

2828
// Details returns all details for a board including tools and HW identifiers.
2929
// This command basically gather al the information and translates it into the required grpc struct properties
3030
func Details(ctx context.Context, req *rpc.BoardDetailsRequest) (*rpc.BoardDetailsResponse, error) {
31-
pme, release := commands.GetPackageManagerExplorer(req)
31+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3232
if pme == nil {
3333
return nil, &arduino.InvalidInstanceError{}
3434
}

Diff for: commands/board/list.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ import (
3131
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
3232
"github.com/arduino/arduino-cli/arduino/discovery"
3333
"github.com/arduino/arduino-cli/arduino/httpclient"
34-
"github.com/arduino/arduino-cli/commands"
34+
"github.com/arduino/arduino-cli/commands/internal/instances"
3535
"github.com/arduino/arduino-cli/internal/inventory"
3636
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3737
"github.com/arduino/go-properties-orderedmap"
@@ -203,7 +203,7 @@ func identify(pme *packagemanager.Explorer, port *discovery.Port) ([]*rpc.BoardL
203203
// In case of errors partial results from discoveries that didn't fail
204204
// are returned.
205205
func List(req *rpc.BoardListRequest) (r []*rpc.DetectedPort, discoveryStartErrors []error, e error) {
206-
pme, release := commands.GetPackageManagerExplorer(req)
206+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
207207
if pme == nil {
208208
return nil, nil, &arduino.InvalidInstanceError{}
209209
}
@@ -258,7 +258,7 @@ func hasMatchingBoard(b *rpc.DetectedPort, fqbnFilter *cores.FQBN) bool {
258258

259259
// Watch returns a channel that receives boards connection and disconnection events.
260260
func Watch(ctx context.Context, req *rpc.BoardListWatchRequest) (<-chan *rpc.BoardListWatchResponse, error) {
261-
pme, release := commands.GetPackageManagerExplorer(req)
261+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
262262
if pme == nil {
263263
return nil, &arduino.InvalidInstanceError{}
264264
}

Diff for: commands/board/listall.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,13 +23,13 @@ import (
2323
"github.com/arduino/arduino-cli/arduino"
2424
"github.com/arduino/arduino-cli/arduino/cores"
2525
"github.com/arduino/arduino-cli/arduino/utils"
26-
"github.com/arduino/arduino-cli/commands"
26+
"github.com/arduino/arduino-cli/commands/internal/instances"
2727
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2828
)
2929

3030
// ListAll FIXMEDOC
3131
func ListAll(ctx context.Context, req *rpc.BoardListAllRequest) (*rpc.BoardListAllResponse, error) {
32-
pme, release := commands.GetPackageManagerExplorer(req)
32+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3333
if pme == nil {
3434
return nil, &arduino.InvalidInstanceError{}
3535
}

Diff for: commands/board/search.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import (
2222

2323
"github.com/arduino/arduino-cli/arduino"
2424
"github.com/arduino/arduino-cli/arduino/utils"
25-
"github.com/arduino/arduino-cli/commands"
25+
"github.com/arduino/arduino-cli/commands/internal/instances"
2626
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2727
)
2828

@@ -31,7 +31,7 @@ import (
3131
// installed. Note that platforms that are not installed don't include boards' FQBNs.
3232
// If no search argument is used all boards are returned.
3333
func Search(ctx context.Context, req *rpc.BoardSearchRequest) (*rpc.BoardSearchResponse, error) {
34-
pme, release := commands.GetPackageManagerExplorer(req)
34+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3535
if pme == nil {
3636
return nil, &arduino.InvalidInstanceError{}
3737
}

Diff for: commands/compile/compile.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import (
3030
"github.com/arduino/arduino-cli/arduino/sketch"
3131
"github.com/arduino/arduino-cli/arduino/utils"
3232
"github.com/arduino/arduino-cli/buildcache"
33-
"github.com/arduino/arduino-cli/commands"
33+
"github.com/arduino/arduino-cli/commands/internal/instances"
3434
"github.com/arduino/arduino-cli/configuration"
3535
"github.com/arduino/arduino-cli/i18n"
3636
"github.com/arduino/arduino-cli/internal/inventory"
@@ -57,13 +57,13 @@ func Compile(ctx context.Context, req *rpc.CompileRequest, outStream, errStream
5757
exportBinaries = reqExportBinaries.Value
5858
}
5959

60-
pme, release := commands.GetPackageManagerExplorer(req)
60+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
6161
if pme == nil {
6262
return nil, &arduino.InvalidInstanceError{}
6363
}
6464
defer release()
6565

66-
lm := commands.GetLibraryManager(req)
66+
lm := instances.GetLibraryManager(req.GetInstance())
6767
if lm == nil {
6868
return nil, &arduino.InvalidInstanceError{}
6969
}

Diff for: commands/core/download.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/arduino/arduino-cli/arduino"
2222
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2323
"github.com/arduino/arduino-cli/commands"
24+
"github.com/arduino/arduino-cli/commands/internal/instances"
2425
"github.com/arduino/arduino-cli/i18n"
2526
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2627
)
@@ -29,7 +30,7 @@ var tr = i18n.Tr
2930

3031
// PlatformDownload FIXMEDOC
3132
func PlatformDownload(ctx context.Context, req *rpc.PlatformDownloadRequest, downloadCB rpc.DownloadProgressCB) (*rpc.PlatformDownloadResponse, error) {
32-
pme, release := commands.GetPackageManagerExplorer(req)
33+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3334
if pme == nil {
3435
return nil, &arduino.InvalidInstanceError{}
3536
}

Diff for: commands/core/install.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ import (
2222
"github.com/arduino/arduino-cli/arduino"
2323
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2424
"github.com/arduino/arduino-cli/commands"
25+
"github.com/arduino/arduino-cli/commands/internal/instances"
2526
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2627
)
2728

2829
// PlatformInstall FIXMEDOC
2930
func PlatformInstall(ctx context.Context, req *rpc.PlatformInstallRequest, downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB) (*rpc.PlatformInstallResponse, error) {
3031
install := func() error {
31-
pme, release := commands.GetPackageManagerExplorer(req)
32+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3233
if pme == nil {
3334
return &arduino.InvalidInstanceError{}
3435
}

Diff for: commands/core/list.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,14 @@ import (
2222

2323
"github.com/arduino/arduino-cli/arduino"
2424
"github.com/arduino/arduino-cli/commands"
25+
"github.com/arduino/arduino-cli/commands/internal/instances"
2526
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2627
)
2728

2829
// PlatformList returns a list of installed platforms, optionally filtered by
2930
// those requiring an update.
3031
func PlatformList(req *rpc.PlatformListRequest) (*rpc.PlatformListResponse, error) {
31-
pme, release := commands.GetPackageManagerExplorer(req)
32+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3233
if pme == nil {
3334
return nil, &arduino.InvalidInstanceError{}
3435
}

Diff for: commands/core/search.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,13 @@ import (
2424
"github.com/arduino/arduino-cli/arduino/cores"
2525
"github.com/arduino/arduino-cli/arduino/utils"
2626
"github.com/arduino/arduino-cli/commands"
27+
"github.com/arduino/arduino-cli/commands/internal/instances"
2728
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2829
)
2930

3031
// PlatformSearch FIXMEDOC
3132
func PlatformSearch(req *rpc.PlatformSearchRequest) (*rpc.PlatformSearchResponse, error) {
32-
pme, release := commands.GetPackageManagerExplorer(req)
33+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3334
if pme == nil {
3435
return nil, &arduino.InvalidInstanceError{}
3536
}

Diff for: commands/core/uninstall.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import (
2121
"github.com/arduino/arduino-cli/arduino"
2222
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2323
"github.com/arduino/arduino-cli/commands"
24+
"github.com/arduino/arduino-cli/commands/internal/instances"
2425
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2526
)
2627

@@ -37,7 +38,7 @@ func PlatformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, t
3738

3839
// platformUninstall is the implementation of platform unistaller
3940
func platformUninstall(ctx context.Context, req *rpc.PlatformUninstallRequest, taskCB rpc.TaskProgressCB) error {
40-
pme, release := commands.GetPackageManagerExplorer(req)
41+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
4142
if pme == nil {
4243
return &arduino.InvalidInstanceError{}
4344
}

Diff for: commands/core/upgrade.go

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,18 +18,18 @@ package core
1818
import (
1919
"context"
2020

21-
"github.com/arduino/arduino-cli/arduino/cores"
22-
2321
"github.com/arduino/arduino-cli/arduino"
22+
"github.com/arduino/arduino-cli/arduino/cores"
2423
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2524
"github.com/arduino/arduino-cli/commands"
25+
"github.com/arduino/arduino-cli/commands/internal/instances"
2626
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2727
)
2828

2929
// PlatformUpgrade FIXMEDOC
3030
func PlatformUpgrade(ctx context.Context, req *rpc.PlatformUpgradeRequest, downloadCB rpc.DownloadProgressCB, taskCB rpc.TaskProgressCB) (*rpc.PlatformUpgradeResponse, error) {
3131
upgrade := func() (*cores.PlatformRelease, error) {
32-
pme, release := commands.GetPackageManagerExplorer(req)
32+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3333
if pme == nil {
3434
return nil, &arduino.InvalidInstanceError{}
3535
}

Diff for: commands/debug/debug.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import (
2626

2727
"github.com/arduino/arduino-cli/arduino"
2828
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
29-
"github.com/arduino/arduino-cli/commands"
29+
"github.com/arduino/arduino-cli/commands/internal/instances"
3030
"github.com/arduino/arduino-cli/executils"
3131
"github.com/arduino/arduino-cli/i18n"
3232
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -45,7 +45,7 @@ var tr = i18n.Tr
4545
func Debug(ctx context.Context, req *rpc.GetDebugConfigRequest, inStream io.Reader, out io.Writer, interrupt <-chan os.Signal) (*rpc.DebugResponse, error) {
4646

4747
// Get debugging command line to run debugger
48-
pme, release := commands.GetPackageManagerExplorer(req)
48+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
4949
if pme == nil {
5050
return nil, &arduino.InvalidInstanceError{}
5151
}

Diff for: commands/debug/debug_info.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/arduino/arduino-cli/arduino/cores"
2626
"github.com/arduino/arduino-cli/arduino/cores/packagemanager"
2727
"github.com/arduino/arduino-cli/arduino/sketch"
28-
"github.com/arduino/arduino-cli/commands"
28+
"github.com/arduino/arduino-cli/commands/internal/instances"
2929
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3030
"github.com/arduino/go-paths-helper"
3131
"github.com/arduino/go-properties-orderedmap"
@@ -35,7 +35,7 @@ import (
3535

3636
// GetDebugConfig returns metadata to start debugging with the specified board
3737
func GetDebugConfig(ctx context.Context, req *rpc.GetDebugConfigRequest) (*rpc.GetDebugConfigResponse, error) {
38-
pme, release := commands.GetPackageManagerExplorer(req)
38+
pme, release := instances.GetPackageManagerExplorer(req.GetInstance())
3939
if pme == nil {
4040
return nil, &arduino.InvalidInstanceError{}
4141
}

0 commit comments

Comments
 (0)