From 7095862b5b0d1c603349bb9b5d646c60d92cf667 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 19 May 2020 17:54:25 +0200 Subject: [PATCH 01/10] Added fqbn.MustParseFQBN method --- arduino/cores/fqbn.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arduino/cores/fqbn.go b/arduino/cores/fqbn.go index 19b95d2f11c..16e63ae67ae 100644 --- a/arduino/cores/fqbn.go +++ b/arduino/cores/fqbn.go @@ -64,6 +64,16 @@ func ParseFQBN(fqbnIn string) (*FQBN, error) { return fqbn, nil } +// MustParseFQBN extract an FQBN object from the input string or panics +// if there is an error parsing the FQBN +func MustParseFQBN(fqbnIn string) *FQBN { + res, err := ParseFQBN(fqbnIn) + if err != nil { + panic(err.Error()) + } + return res +} + func (fqbn *FQBN) String() string { res := fqbn.StringWithoutConfig() if fqbn.Configs.Size() > 0 { From 86e568641ade0a238be8e767097bdf86146f95ad Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 14 Apr 2020 00:47:32 +0200 Subject: [PATCH 02/10] Factored FQBN.SetConfig method it will be used in next commits --- arduino/cores/fqbn.go | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) diff --git a/arduino/cores/fqbn.go b/arduino/cores/fqbn.go index 16e63ae67ae..11a5354493c 100644 --- a/arduino/cores/fqbn.go +++ b/arduino/cores/fqbn.go @@ -48,22 +48,31 @@ func ParseFQBN(fqbnIn string) (*FQBN, error) { return nil, fmt.Errorf("invalid fqbn: empty board identifier") } if len(fqbnParts) > 3 { - for _, pair := range strings.Split(fqbnParts[3], ",") { - parts := strings.SplitN(pair, "=", 2) - if len(parts) != 2 { - return nil, fmt.Errorf("invalid fqbn config: %s", pair) - } - k := strings.TrimSpace(parts[0]) - v := strings.TrimSpace(parts[1]) - if k == "" { - return nil, fmt.Errorf("invalid fqbn config: %s", pair) - } - fqbn.Configs.Set(k, v) + if err := fqbn.SetConfigs(strings.Split(fqbnParts[3], ",")); err != nil { + return nil, err } } return fqbn, nil } +// SetConfigs set the configs part of the FQBN with the provided config strings. +// Each config string must be a pair "config=value". +func (fqbn *FQBN) SetConfigs(configs []string) error { + for _, pair := range configs { + parts := strings.SplitN(pair, "=", 2) + if len(parts) != 2 { + return fmt.Errorf("invalid fqbn config: %s", pair) + } + k := strings.TrimSpace(parts[0]) + v := strings.TrimSpace(parts[1]) + if k == "" { + return fmt.Errorf("invalid fqbn config: %s", pair) + } + fqbn.Configs.Set(k, v) + } + return nil +} + // MustParseFQBN extract an FQBN object from the input string or panics // if there is an error parsing the FQBN func MustParseFQBN(fqbnIn string) *FQBN { From ffdd5333a03a9c350e9261d5367226b8f6269ad3 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Wed, 1 Apr 2020 16:52:00 +0200 Subject: [PATCH 03/10] Infrastructure for new boards commands --- cli/board/board.go | 4 +- cli/board/install.go | 69 ++++++ cli/board/search.go | 84 +++++++ cli/board/uninstall.go | 67 ++++++ commands/board/install.go | 32 +++ commands/board/search.go | 30 +++ commands/board/uninstall.go | 31 +++ commands/daemon/daemon.go | 28 +++ rpc/commands/board.pb.go | 422 ++++++++++++++++++++++++++++++------ rpc/commands/board.proto | 28 +++ rpc/commands/commands.pb.go | 396 ++++++++++++++++++++++++++------- rpc/commands/commands.proto | 6 + rpc/debug/debug.pb.go | 18 +- rpc/monitor/monitor.pb.go | 18 +- rpc/settings/settings.pb.go | 27 ++- 15 files changed, 1100 insertions(+), 160 deletions(-) create mode 100644 cli/board/install.go create mode 100644 cli/board/search.go create mode 100644 cli/board/uninstall.go create mode 100644 commands/board/install.go create mode 100644 commands/board/search.go create mode 100644 commands/board/uninstall.go diff --git a/cli/board/board.go b/cli/board/board.go index 613130a28b7..fa17886fcc5 100644 --- a/cli/board/board.go +++ b/cli/board/board.go @@ -37,6 +37,8 @@ func NewCommand() *cobra.Command { boardCommand.AddCommand(initDetailsCommand()) boardCommand.AddCommand(initListCommand()) boardCommand.AddCommand(listAllCommand) - + boardCommand.AddCommand(initInstallCommand()) + boardCommand.AddCommand(initUninstallCommand()) + boardCommand.AddCommand(initSearchCommand()) return boardCommand } diff --git a/cli/board/install.go b/cli/board/install.go new file mode 100644 index 00000000000..41254aa4a0e --- /dev/null +++ b/cli/board/install.go @@ -0,0 +1,69 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + "os" + + "github.com/arduino/arduino-cli/cli/errorcodes" + "github.com/arduino/arduino-cli/cli/feedback" + "github.com/arduino/arduino-cli/cli/globals" + "github.com/arduino/arduino-cli/cli/instance" + "github.com/arduino/arduino-cli/cli/output" + "github.com/arduino/arduino-cli/commands/board" + rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func initInstallCommand() *cobra.Command { + installCommand := &cobra.Command{ + Use: "install ", + Short: "Installs SDK for a board.", + Long: "Installs the platform and tools to support build and upload for the specified board.\n" + + "The board may be specified via FQBN or board alias.", + Example: " # install the SDK for the Arduino Zero.\n" + + " " + os.Args[0] + " board install zero\n\n" + + " # install the SDK for the Arduino UNO using the FQBN as parameter.\n" + + " " + os.Args[0] + " board install arduino:avr:uno", + Args: cobra.ExactArgs(1), + Run: runInstallCommand, + } + return installCommand +} + +func runInstallCommand(cmd *cobra.Command, args []string) { + inst, err := instance.CreateInstance() + if err != nil { + feedback.Errorf("Error installing: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + boardArg := args[1] + logrus.WithField("board", boardArg).Info("Executing `board install`") + + boardInstallReq := &rpc.BoardInstallReq{ + Instance: inst, + Board: boardArg, + } + _, err = board.Install(context.Background(), boardInstallReq, output.ProgressBar(), + output.TaskProgress(), globals.NewHTTPClientHeader()) + if err != nil { + feedback.Errorf("Error installing board: %v", err) + os.Exit(errorcodes.ErrGeneric) + } +} diff --git a/cli/board/search.go b/cli/board/search.go new file mode 100644 index 00000000000..f5892364f3d --- /dev/null +++ b/cli/board/search.go @@ -0,0 +1,84 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + "fmt" + "os" + "strings" + + "github.com/arduino/arduino-cli/cli/errorcodes" + "github.com/arduino/arduino-cli/cli/feedback" + "github.com/arduino/arduino-cli/cli/instance" + "github.com/arduino/arduino-cli/commands/board" + rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func initSearchCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "search ...", + Short: "Search for a board.", + Long: "List all boards that have name or description or other properties matching \n" + + "the provided KEYWORDS.", + Example: " # search info about Arduino Zero.\n" + + " " + os.Args[0] + " board search zero", + Args: cobra.MinimumNArgs(1), + Run: runSearchCommand, + } + return cmd +} + +func runSearchCommand(cmd *cobra.Command, args []string) { + inst, err := instance.CreateInstance() + if err != nil { + feedback.Errorf("Error searching: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + query := strings.Join(args[1:], " ") + logrus.WithField("query", query).Info("Executing `board search`") + + boardSearchReq := &rpc.BoardSearchReq{ + Instance: inst, + Query: query, + } + if res, err := board.Search(context.Background(), boardSearchReq); err != nil { + feedback.Errorf("Error installing board: %v", err) + os.Exit(errorcodes.ErrGeneric) + } else { + feedback.PrintResult(searchResult{res}) + } +} + +// output from this command requires special formatting, let's create a dedicated +// feedback.Result implementation +type searchResult struct { + boards *rpc.BoardSearchResp +} + +func (res searchResult) Data() interface{} { + return res.boards +} + +func (res searchResult) String() string { + + // TODO + + return fmt.Sprintf("%+v\n", res.boards) +} diff --git a/cli/board/uninstall.go b/cli/board/uninstall.go new file mode 100644 index 00000000000..203c18e5ce5 --- /dev/null +++ b/cli/board/uninstall.go @@ -0,0 +1,67 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + "os" + + "github.com/arduino/arduino-cli/cli/errorcodes" + "github.com/arduino/arduino-cli/cli/feedback" + "github.com/arduino/arduino-cli/cli/instance" + "github.com/arduino/arduino-cli/cli/output" + "github.com/arduino/arduino-cli/commands/board" + rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/sirupsen/logrus" + "github.com/spf13/cobra" +) + +func initUninstallCommand() *cobra.Command { + installCommand := &cobra.Command{ + Use: "uninstall ", + Short: "Uninstalls SDK for a board.", + Long: "Uninstalls the platform and tools to support build and upload for the specified board.\n" + + "The board may be specified via FQBN or board alias.", + Example: " # uninstall the SDK for the Arduino Zero.\n" + + " " + os.Args[0] + " board uninstall zero\n\n" + + " # uninstall the SDK for the Arduino UNO using the FQBN as parameter.\n" + + " " + os.Args[0] + " board uninstall arduino:avr:uno", + Args: cobra.ExactArgs(1), + Run: runUninstallCommand, + } + return installCommand +} + +func runUninstallCommand(cmd *cobra.Command, args []string) { + inst, err := instance.CreateInstance() + if err != nil { + feedback.Errorf("Error uninstalling: %v", err) + os.Exit(errorcodes.ErrGeneric) + } + + boardArg := args[1] + logrus.WithField("board", boardArg).Info("Executing `board uninstall`") + + boardUninstallReq := &rpc.BoardUninstallReq{ + Instance: inst, + Board: boardArg, + } + _, err = board.Uninstall(context.Background(), boardUninstallReq, output.TaskProgress()) + if err != nil { + feedback.Errorf("Error uninstalling board: %v", err) + os.Exit(errorcodes.ErrGeneric) + } +} diff --git a/commands/board/install.go b/commands/board/install.go new file mode 100644 index 00000000000..d20a06d6633 --- /dev/null +++ b/commands/board/install.go @@ -0,0 +1,32 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + + "github.com/arduino/arduino-cli/commands" + rpc "github.com/arduino/arduino-cli/rpc/commands" +) + +// Install FIXMEDOC +func Install(ctx context.Context, req *rpc.BoardInstallReq, + downloadCB commands.DownloadProgressCB, taskCB commands.TaskProgressCB) (r *rpc.BoardInstallResp, e error) { + + // TODO + + return nil, nil +} diff --git a/commands/board/search.go b/commands/board/search.go new file mode 100644 index 00000000000..9294ef6ece5 --- /dev/null +++ b/commands/board/search.go @@ -0,0 +1,30 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + + rpc "github.com/arduino/arduino-cli/rpc/commands" +) + +// Search FIXMEDOC +func Search(ctx context.Context, req *rpc.BoardSearchReq) (r *rpc.BoardSearchResp, e error) { + + // TODO + + return nil, nil +} diff --git a/commands/board/uninstall.go b/commands/board/uninstall.go new file mode 100644 index 00000000000..f13c919f0d5 --- /dev/null +++ b/commands/board/uninstall.go @@ -0,0 +1,31 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package board + +import ( + "context" + + "github.com/arduino/arduino-cli/commands" + rpc "github.com/arduino/arduino-cli/rpc/commands" +) + +// Uninstall FIXMEDOC +func Uninstall(ctx context.Context, req *rpc.BoardUninstallReq, taskCB commands.TaskProgressCB) (r *rpc.BoardUninstallResp, e error) { + + // TODO + + return nil, nil +} diff --git a/commands/daemon/daemon.go b/commands/daemon/daemon.go index 2dd088beff9..7288f74f5f1 100644 --- a/commands/daemon/daemon.go +++ b/commands/daemon/daemon.go @@ -69,6 +69,34 @@ func (s *ArduinoCoreServerImpl) BoardAttach(req *rpc.BoardAttachReq, stream rpc. return stream.Send(resp) } +// BoardInstall FIXMEDOC +func (s *ArduinoCoreServerImpl) BoardInstall(req *rpc.BoardInstallReq, stream rpc.ArduinoCore_BoardInstallServer) error { + resp, err := board.Install(stream.Context(), req, + func(p *rpc.DownloadProgress) { stream.Send(&rpc.BoardInstallResp{DownloadProgress: p}) }, + func(p *rpc.TaskProgress) { stream.Send(&rpc.BoardInstallResp{TaskProgress: p}) }, + ) + if err != nil { + return err + } + return stream.Send(resp) +} + +// BoardUninstall FIXMEDOC +func (s *ArduinoCoreServerImpl) BoardUninstall(req *rpc.BoardUninstallReq, stream rpc.ArduinoCore_BoardUninstallServer) error { + resp, err := board.Uninstall(stream.Context(), req, + func(p *rpc.TaskProgress) { stream.Send(&rpc.BoardUninstallResp{TaskProgress: p}) }, + ) + if err != nil { + return err + } + return stream.Send(resp) +} + +// BoardSearch FIXMEDOC +func (s *ArduinoCoreServerImpl) BoardSearch(ctx context.Context, req *rpc.BoardSearchReq) (*rpc.BoardSearchResp, error) { + return board.Search(ctx, req) +} + // Destroy FIXMEDOC func (s *ArduinoCoreServerImpl) Destroy(ctx context.Context, req *rpc.DestroyReq) (*rpc.DestroyResp, error) { return commands.Destroy(ctx, req) diff --git a/rpc/commands/board.pb.go b/rpc/commands/board.pb.go index 865d1f3989d..67e413a7ffa 100644 --- a/rpc/commands/board.pb.go +++ b/rpc/commands/board.pb.go @@ -967,6 +967,272 @@ func (m *BoardListResp) GetPorts() []*DetectedPort { return nil } +type BoardInstallReq struct { + Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + Board string `protobuf:"bytes,2,opt,name=board,proto3" json:"board,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardInstallReq) Reset() { *m = BoardInstallReq{} } +func (m *BoardInstallReq) String() string { return proto.CompactTextString(m) } +func (*BoardInstallReq) ProtoMessage() {} +func (*BoardInstallReq) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{15} +} + +func (m *BoardInstallReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardInstallReq.Unmarshal(m, b) +} +func (m *BoardInstallReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardInstallReq.Marshal(b, m, deterministic) +} +func (m *BoardInstallReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardInstallReq.Merge(m, src) +} +func (m *BoardInstallReq) XXX_Size() int { + return xxx_messageInfo_BoardInstallReq.Size(m) +} +func (m *BoardInstallReq) XXX_DiscardUnknown() { + xxx_messageInfo_BoardInstallReq.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardInstallReq proto.InternalMessageInfo + +func (m *BoardInstallReq) GetInstance() *Instance { + if m != nil { + return m.Instance + } + return nil +} + +func (m *BoardInstallReq) GetBoard() string { + if m != nil { + return m.Board + } + return "" +} + +type BoardInstallResp struct { + DownloadProgress *DownloadProgress `protobuf:"bytes,1,opt,name=download_progress,json=downloadProgress,proto3" json:"download_progress,omitempty"` + TaskProgress *TaskProgress `protobuf:"bytes,2,opt,name=task_progress,json=taskProgress,proto3" json:"task_progress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardInstallResp) Reset() { *m = BoardInstallResp{} } +func (m *BoardInstallResp) String() string { return proto.CompactTextString(m) } +func (*BoardInstallResp) ProtoMessage() {} +func (*BoardInstallResp) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{16} +} + +func (m *BoardInstallResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardInstallResp.Unmarshal(m, b) +} +func (m *BoardInstallResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardInstallResp.Marshal(b, m, deterministic) +} +func (m *BoardInstallResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardInstallResp.Merge(m, src) +} +func (m *BoardInstallResp) XXX_Size() int { + return xxx_messageInfo_BoardInstallResp.Size(m) +} +func (m *BoardInstallResp) XXX_DiscardUnknown() { + xxx_messageInfo_BoardInstallResp.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardInstallResp proto.InternalMessageInfo + +func (m *BoardInstallResp) GetDownloadProgress() *DownloadProgress { + if m != nil { + return m.DownloadProgress + } + return nil +} + +func (m *BoardInstallResp) GetTaskProgress() *TaskProgress { + if m != nil { + return m.TaskProgress + } + return nil +} + +type BoardUninstallReq struct { + Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + Board string `protobuf:"bytes,2,opt,name=board,proto3" json:"board,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardUninstallReq) Reset() { *m = BoardUninstallReq{} } +func (m *BoardUninstallReq) String() string { return proto.CompactTextString(m) } +func (*BoardUninstallReq) ProtoMessage() {} +func (*BoardUninstallReq) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{17} +} + +func (m *BoardUninstallReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardUninstallReq.Unmarshal(m, b) +} +func (m *BoardUninstallReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardUninstallReq.Marshal(b, m, deterministic) +} +func (m *BoardUninstallReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardUninstallReq.Merge(m, src) +} +func (m *BoardUninstallReq) XXX_Size() int { + return xxx_messageInfo_BoardUninstallReq.Size(m) +} +func (m *BoardUninstallReq) XXX_DiscardUnknown() { + xxx_messageInfo_BoardUninstallReq.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardUninstallReq proto.InternalMessageInfo + +func (m *BoardUninstallReq) GetInstance() *Instance { + if m != nil { + return m.Instance + } + return nil +} + +func (m *BoardUninstallReq) GetBoard() string { + if m != nil { + return m.Board + } + return "" +} + +type BoardUninstallResp struct { + TaskProgress *TaskProgress `protobuf:"bytes,1,opt,name=task_progress,json=taskProgress,proto3" json:"task_progress,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardUninstallResp) Reset() { *m = BoardUninstallResp{} } +func (m *BoardUninstallResp) String() string { return proto.CompactTextString(m) } +func (*BoardUninstallResp) ProtoMessage() {} +func (*BoardUninstallResp) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{18} +} + +func (m *BoardUninstallResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardUninstallResp.Unmarshal(m, b) +} +func (m *BoardUninstallResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardUninstallResp.Marshal(b, m, deterministic) +} +func (m *BoardUninstallResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardUninstallResp.Merge(m, src) +} +func (m *BoardUninstallResp) XXX_Size() int { + return xxx_messageInfo_BoardUninstallResp.Size(m) +} +func (m *BoardUninstallResp) XXX_DiscardUnknown() { + xxx_messageInfo_BoardUninstallResp.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardUninstallResp proto.InternalMessageInfo + +func (m *BoardUninstallResp) GetTaskProgress() *TaskProgress { + if m != nil { + return m.TaskProgress + } + return nil +} + +type BoardSearchReq struct { + Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + Query string `protobuf:"bytes,2,opt,name=query,proto3" json:"query,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardSearchReq) Reset() { *m = BoardSearchReq{} } +func (m *BoardSearchReq) String() string { return proto.CompactTextString(m) } +func (*BoardSearchReq) ProtoMessage() {} +func (*BoardSearchReq) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{19} +} + +func (m *BoardSearchReq) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardSearchReq.Unmarshal(m, b) +} +func (m *BoardSearchReq) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardSearchReq.Marshal(b, m, deterministic) +} +func (m *BoardSearchReq) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardSearchReq.Merge(m, src) +} +func (m *BoardSearchReq) XXX_Size() int { + return xxx_messageInfo_BoardSearchReq.Size(m) +} +func (m *BoardSearchReq) XXX_DiscardUnknown() { + xxx_messageInfo_BoardSearchReq.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardSearchReq proto.InternalMessageInfo + +func (m *BoardSearchReq) GetInstance() *Instance { + if m != nil { + return m.Instance + } + return nil +} + +func (m *BoardSearchReq) GetQuery() string { + if m != nil { + return m.Query + } + return "" +} + +type BoardSearchResp struct { + Fqbn []string `protobuf:"bytes,1,rep,name=fqbn,proto3" json:"fqbn,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *BoardSearchResp) Reset() { *m = BoardSearchResp{} } +func (m *BoardSearchResp) String() string { return proto.CompactTextString(m) } +func (*BoardSearchResp) ProtoMessage() {} +func (*BoardSearchResp) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{20} +} + +func (m *BoardSearchResp) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_BoardSearchResp.Unmarshal(m, b) +} +func (m *BoardSearchResp) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_BoardSearchResp.Marshal(b, m, deterministic) +} +func (m *BoardSearchResp) XXX_Merge(src proto.Message) { + xxx_messageInfo_BoardSearchResp.Merge(m, src) +} +func (m *BoardSearchResp) XXX_Size() int { + return xxx_messageInfo_BoardSearchResp.Size(m) +} +func (m *BoardSearchResp) XXX_DiscardUnknown() { + xxx_messageInfo_BoardSearchResp.DiscardUnknown(m) +} + +var xxx_messageInfo_BoardSearchResp proto.InternalMessageInfo + +func (m *BoardSearchResp) GetFqbn() []string { + if m != nil { + return m.Fqbn + } + return nil +} + type DetectedPort struct { // Address of the port (e.g., `serial:///dev/ttyACM0`). Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` @@ -985,7 +1251,7 @@ func (m *DetectedPort) Reset() { *m = DetectedPort{} } func (m *DetectedPort) String() string { return proto.CompactTextString(m) } func (*DetectedPort) ProtoMessage() {} func (*DetectedPort) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{15} + return fileDescriptor_0882eeddaa6507ab, []int{21} } func (m *DetectedPort) XXX_Unmarshal(b []byte) error { @@ -1048,7 +1314,7 @@ func (m *BoardListAllReq) Reset() { *m = BoardListAllReq{} } func (m *BoardListAllReq) String() string { return proto.CompactTextString(m) } func (*BoardListAllReq) ProtoMessage() {} func (*BoardListAllReq) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{16} + return fileDescriptor_0882eeddaa6507ab, []int{22} } func (m *BoardListAllReq) XXX_Unmarshal(b []byte) error { @@ -1095,7 +1361,7 @@ func (m *BoardListAllResp) Reset() { *m = BoardListAllResp{} } func (m *BoardListAllResp) String() string { return proto.CompactTextString(m) } func (*BoardListAllResp) ProtoMessage() {} func (*BoardListAllResp) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{17} + return fileDescriptor_0882eeddaa6507ab, []int{23} } func (m *BoardListAllResp) XXX_Unmarshal(b []byte) error { @@ -1137,7 +1403,7 @@ func (m *BoardListItem) Reset() { *m = BoardListItem{} } func (m *BoardListItem) String() string { return proto.CompactTextString(m) } func (*BoardListItem) ProtoMessage() {} func (*BoardListItem) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{18} + return fileDescriptor_0882eeddaa6507ab, []int{24} } func (m *BoardListItem) XXX_Unmarshal(b []byte) error { @@ -1188,6 +1454,12 @@ func init() { proto.RegisterType((*BoardAttachResp)(nil), "cc.arduino.cli.commands.BoardAttachResp") proto.RegisterType((*BoardListReq)(nil), "cc.arduino.cli.commands.BoardListReq") proto.RegisterType((*BoardListResp)(nil), "cc.arduino.cli.commands.BoardListResp") + proto.RegisterType((*BoardInstallReq)(nil), "cc.arduino.cli.commands.BoardInstallReq") + proto.RegisterType((*BoardInstallResp)(nil), "cc.arduino.cli.commands.BoardInstallResp") + proto.RegisterType((*BoardUninstallReq)(nil), "cc.arduino.cli.commands.BoardUninstallReq") + proto.RegisterType((*BoardUninstallResp)(nil), "cc.arduino.cli.commands.BoardUninstallResp") + proto.RegisterType((*BoardSearchReq)(nil), "cc.arduino.cli.commands.BoardSearchReq") + proto.RegisterType((*BoardSearchResp)(nil), "cc.arduino.cli.commands.BoardSearchResp") proto.RegisterType((*DetectedPort)(nil), "cc.arduino.cli.commands.DetectedPort") proto.RegisterType((*BoardListAllReq)(nil), "cc.arduino.cli.commands.BoardListAllReq") proto.RegisterType((*BoardListAllResp)(nil), "cc.arduino.cli.commands.BoardListAllResp") @@ -1197,72 +1469,78 @@ func init() { func init() { proto.RegisterFile("commands/board.proto", fileDescriptor_0882eeddaa6507ab) } var fileDescriptor_0882eeddaa6507ab = []byte{ - // 1066 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x56, 0xdf, 0x6e, 0x1b, 0xc5, - 0x17, 0xd6, 0xd6, 0x76, 0xec, 0x1c, 0x3b, 0x69, 0x3b, 0xbf, 0xfe, 0x60, 0x15, 0x44, 0x70, 0x57, - 0x14, 0x45, 0x44, 0x75, 0x44, 0x40, 0x42, 0x2a, 0x7f, 0xa4, 0x04, 0xab, 0xc2, 0x55, 0x28, 0x66, - 0x9a, 0x54, 0x08, 0x81, 0xcc, 0x78, 0x3c, 0xb6, 0x47, 0x59, 0xef, 0x6c, 0x66, 0x66, 0x83, 0xca, - 0x0b, 0x20, 0x1e, 0x81, 0x67, 0xe0, 0x96, 0x0b, 0x1e, 0x81, 0x3b, 0x5e, 0x09, 0xcd, 0xbf, 0xcd, - 0xba, 0xe9, 0x52, 0x01, 0xbd, 0xf2, 0x39, 0xdf, 0x9e, 0x6f, 0x66, 0xce, 0x39, 0xdf, 0x99, 0x31, - 0xdc, 0xa1, 0x62, 0xb5, 0x22, 0xd9, 0x4c, 0x1d, 0x4c, 0x05, 0x91, 0xb3, 0x41, 0x2e, 0x85, 0x16, - 0xe8, 0x75, 0x4a, 0x07, 0x44, 0xce, 0x0a, 0x9e, 0x89, 0x01, 0x4d, 0xf9, 0x20, 0x04, 0xed, 0xfc, - 0xbf, 0x0c, 0x37, 0x86, 0xc8, 0x5c, 0x7c, 0x32, 0x83, 0x9b, 0xc7, 0x86, 0x3e, 0x64, 0x9a, 0xf0, - 0x54, 0x61, 0x76, 0x81, 0x3e, 0x81, 0x0e, 0xcf, 0x94, 0x26, 0x19, 0x65, 0x71, 0xd4, 0x8f, 0xf6, - 0xba, 0x87, 0x77, 0x07, 0x35, 0xab, 0x0e, 0x46, 0x3e, 0x10, 0x97, 0x14, 0x84, 0xa0, 0x39, 0xbf, - 0x98, 0x66, 0xf1, 0x8d, 0x7e, 0xb4, 0xb7, 0x89, 0xad, 0x9d, 0xfc, 0xd1, 0x84, 0x5b, 0xeb, 0xdb, - 0xa8, 0xbc, 0x0c, 0x8c, 0xae, 0x02, 0x0d, 0x96, 0x91, 0x15, 0x0b, 0x64, 0x63, 0xa3, 0x18, 0xda, - 0x97, 0x4c, 0x2a, 0x2e, 0xb2, 0xb8, 0x61, 0xe1, 0xe0, 0xa2, 0x04, 0x7a, 0xb9, 0x14, 0x39, 0x93, - 0x9a, 0x33, 0x35, 0x9a, 0xc5, 0x4d, 0xfb, 0x79, 0x0d, 0x43, 0x77, 0xa0, 0x45, 0x52, 0x4e, 0x54, - 0xdc, 0xb2, 0x1f, 0x9d, 0x83, 0x76, 0xa0, 0x23, 0xe6, 0x73, 0x4e, 0x39, 0x49, 0xe3, 0x8d, 0x7e, - 0xb4, 0xd7, 0xc1, 0xa5, 0x8f, 0x5e, 0x83, 0x8d, 0x9c, 0x67, 0xa2, 0xd0, 0x71, 0xdb, 0x52, 0xbc, - 0x87, 0x1e, 0x40, 0x3b, 0x27, 0xf4, 0x9c, 0x2c, 0x58, 0xdc, 0xb1, 0x65, 0xe9, 0xd7, 0x96, 0x65, - 0xec, 0xe2, 0x70, 0x20, 0xa0, 0x63, 0xe8, 0xe4, 0x29, 0xd1, 0x73, 0x21, 0x57, 0xf1, 0xa6, 0x25, - 0xbf, 0x53, 0x4b, 0xb6, 0x85, 0x1a, 0xfb, 0x68, 0x5c, 0xf2, 0xd0, 0xd7, 0x70, 0x5b, 0x0b, 0x91, - 0xaa, 0x21, 0xcb, 0x59, 0x36, 0x63, 0x19, 0xe5, 0x4c, 0xc5, 0xd0, 0x6f, 0xec, 0x75, 0x0f, 0xdf, - 0xad, 0x5d, 0xec, 0xf4, 0x79, 0x06, 0xbe, 0xbe, 0x08, 0x3a, 0x81, 0x6d, 0x2a, 0xb2, 0x39, 0x5f, - 0x4c, 0x44, 0xae, 0xb9, 0xc8, 0x54, 0xdc, 0xb5, 0xcb, 0xde, 0xab, 0x5d, 0xf6, 0x33, 0x1b, 0xfe, - 0xa5, 0x8d, 0xc6, 0x5b, 0xb4, 0xe2, 0x29, 0xf4, 0x2d, 0xfc, 0x8f, 0xcf, 0x58, 0xa6, 0xf9, 0x9c, - 0x53, 0x62, 0xa0, 0x49, 0x2e, 0xd9, 0x3c, 0xee, 0xd9, 0x25, 0xf7, 0xeb, 0xa5, 0xb4, 0xc6, 0x19, - 0x4b, 0x36, 0xc7, 0x88, 0x5f, 0xc3, 0x92, 0x47, 0x80, 0xae, 0x47, 0xa2, 0x0f, 0xa0, 0x55, 0xa8, - 0xe9, 0x68, 0xe8, 0x05, 0xbb, 0x5b, 0xbb, 0xcb, 0xd9, 0x93, 0xe3, 0xd1, 0x10, 0xbb, 0xe0, 0x64, - 0x1f, 0x5a, 0xd6, 0x47, 0xb7, 0xa0, 0xf1, 0xd4, 0x93, 0x37, 0xb1, 0x31, 0x0d, 0x32, 0x1e, 0x0d, - 0xbd, 0x0e, 0x8d, 0x99, 0xfc, 0x1e, 0x41, 0xdb, 0xf7, 0x15, 0xed, 0x02, 0xac, 0x08, 0xcf, 0x34, - 0xe1, 0x19, 0x93, 0x9e, 0x56, 0x41, 0x0c, 0xbb, 0x90, 0x69, 0x60, 0x17, 0x32, 0x35, 0x8c, 0x1f, - 0xd8, 0x54, 0x71, 0xcd, 0xce, 0xf0, 0x89, 0xd7, 0x71, 0x05, 0x31, 0x32, 0x65, 0x2b, 0xc2, 0x53, - 0xaf, 0x61, 0xe7, 0x94, 0xe3, 0xd0, 0xaa, 0x8c, 0xc3, 0x7b, 0xd0, 0x5c, 0xb2, 0x34, 0xb7, 0xb2, - 0xed, 0x1e, 0xbe, 0x59, 0x9b, 0xe9, 0xe7, 0x2c, 0xcd, 0xb1, 0x0d, 0x4d, 0x76, 0xa1, 0x69, 0x3c, - 0xa3, 0x6c, 0x91, 0xa5, 0x3c, 0x63, 0xfe, 0xc8, 0xde, 0x4b, 0xfe, 0x8c, 0x60, 0x6b, 0x4d, 0x75, - 0x66, 0xb2, 0x88, 0xa4, 0x4b, 0xae, 0x19, 0xd5, 0x85, 0x0c, 0xf1, 0x6b, 0x98, 0x99, 0x21, 0x4a, - 0x34, 0x5b, 0x08, 0xf9, 0xcc, 0x67, 0x5a, 0xfa, 0xa1, 0x00, 0x8d, 0xab, 0x02, 0xec, 0xc1, 0x4d, - 0xcb, 0xbe, 0x64, 0x0f, 0x79, 0xca, 0x1e, 0x9b, 0xac, 0x5c, 0xaa, 0xcf, 0xc3, 0x76, 0xdd, 0x25, - 0xa3, 0xe7, 0xaa, 0x58, 0xf9, 0xc4, 0x4b, 0xdf, 0x14, 0x44, 0xf1, 0x1f, 0x99, 0x4d, 0xbe, 0x81, - 0xad, 0x5d, 0x16, 0xa9, 0x7d, 0x55, 0xa4, 0xe4, 0x97, 0x08, 0x6e, 0x5f, 0x93, 0xbe, 0x59, 0xd9, - 0x0f, 0x64, 0x68, 0x5a, 0xe9, 0xff, 0xc3, 0x9b, 0xe7, 0x01, 0xb4, 0xd5, 0x33, 0xa5, 0xd9, 0x4a, - 0xc5, 0x4d, 0xab, 0xeb, 0xfa, 0xbb, 0xe0, 0x89, 0x8b, 0xc3, 0x81, 0x90, 0xfc, 0x1c, 0x41, 0xdb, - 0x83, 0x6b, 0xb9, 0x46, 0xd7, 0x73, 0x5d, 0x0a, 0xa5, 0xc3, 0x89, 0x8c, 0xfd, 0xa2, 0x2a, 0x36, - 0x5e, 0x5c, 0x45, 0xdf, 0x81, 0xe6, 0x55, 0x07, 0x42, 0xed, 0x5a, 0x57, 0xb5, 0x4b, 0x7e, 0x8a, - 0xa0, 0x57, 0x9d, 0x65, 0x2b, 0x11, 0x6b, 0x95, 0x12, 0x71, 0xf8, 0x5d, 0xe8, 0x39, 0x6b, 0x92, - 0x92, 0x29, 0x0b, 0xd2, 0xee, 0x3a, 0xec, 0xc4, 0x40, 0xe8, 0x63, 0xd8, 0xb8, 0x24, 0x69, 0xc1, - 0x54, 0xdc, 0xb0, 0x25, 0x79, 0xfb, 0x25, 0xb7, 0xc7, 0x53, 0x13, 0x8c, 0x3d, 0x27, 0xf9, 0x1e, - 0xba, 0x15, 0xd8, 0xcc, 0x83, 0xfd, 0xe0, 0x8f, 0xe1, 0x1c, 0xf4, 0x16, 0x74, 0xad, 0xb1, 0x76, - 0x08, 0xb0, 0x90, 0x3b, 0xc3, 0x0e, 0x74, 0x14, 0x4b, 0x19, 0xd5, 0x6c, 0x66, 0x0b, 0xd3, 0xc1, - 0xa5, 0x9f, 0xfc, 0x16, 0xc1, 0xb6, 0x55, 0xf9, 0x91, 0xd6, 0x84, 0x2e, 0x5f, 0xc1, 0x53, 0xf7, - 0x06, 0x6c, 0xda, 0xb7, 0x77, 0x52, 0x48, 0x1e, 0x46, 0xc0, 0x02, 0x67, 0x92, 0x9b, 0xb3, 0xaa, - 0x73, 0xa6, 0xe9, 0x72, 0x92, 0x13, 0xbd, 0x0c, 0x23, 0xef, 0xa0, 0x31, 0xd1, 0x4b, 0x74, 0x0f, - 0xb6, 0x15, 0x33, 0x6d, 0x9b, 0x68, 0xbe, 0x62, 0xe6, 0xbd, 0x71, 0xcd, 0xda, 0x72, 0xe8, 0xa9, - 0x03, 0x93, 0xef, 0xfc, 0x0b, 0x1d, 0x4e, 0xad, 0x72, 0xf4, 0x08, 0xb6, 0x34, 0x51, 0xe7, 0x93, - 0x5c, 0x8a, 0x85, 0x64, 0x4a, 0xf9, 0xb3, 0xd7, 0x5f, 0xd7, 0xa7, 0x44, 0x9d, 0x8f, 0x7d, 0x30, - 0xee, 0xe9, 0x8a, 0x97, 0x7c, 0x01, 0x3d, 0xbb, 0xfc, 0x09, 0x57, 0xfa, 0xbf, 0x97, 0x24, 0x39, - 0xf1, 0x37, 0x89, 0x5b, 0x4e, 0xe5, 0xe8, 0x23, 0x68, 0xe5, 0x42, 0x6a, 0x73, 0xc6, 0xbf, 0x7f, - 0x52, 0x86, 0x4c, 0xdb, 0x3e, 0x8d, 0x85, 0xd4, 0xd8, 0x71, 0x92, 0x5f, 0x23, 0xe8, 0x55, 0x71, - 0x33, 0x91, 0x64, 0x36, 0x2b, 0x73, 0xde, 0xc4, 0xc1, 0xb5, 0xb3, 0x6d, 0xfe, 0xd1, 0x50, 0x11, - 0x74, 0x51, 0xfa, 0xa6, 0xd2, 0xc1, 0xf6, 0xca, 0x71, 0xdd, 0xd8, 0x0a, 0xa8, 0x13, 0xcf, 0xa7, - 0xb0, 0x61, 0xbb, 0x17, 0x66, 0xfa, 0x25, 0x4f, 0xb4, 0x49, 0x71, 0xa4, 0xd9, 0x0a, 0x7b, 0x56, - 0x72, 0xe1, 0x3b, 0x65, 0x3e, 0x1c, 0xa5, 0xe9, 0x2b, 0x10, 0x98, 0xd1, 0x90, 0x93, 0x08, 0x91, - 0x0b, 0x15, 0xdf, 0xe8, 0x37, 0xac, 0x86, 0x2c, 0x74, 0x24, 0x17, 0x2a, 0xc1, 0xfe, 0x7f, 0x55, - 0xb9, 0xa5, 0xca, 0x2b, 0x69, 0x44, 0xff, 0x2a, 0x8d, 0x0f, 0x2b, 0x2d, 0x34, 0x1f, 0xca, 0xab, - 0x31, 0xaa, 0x5c, 0x8d, 0x08, 0x9a, 0x0f, 0xbf, 0x3a, 0x7e, 0x1c, 0x2e, 0x27, 0x63, 0x1f, 0xdf, - 0xff, 0x66, 0x7f, 0xc1, 0xf5, 0xb2, 0x98, 0x9a, 0x1d, 0x0e, 0xfc, 0x8e, 0xe1, 0xf7, 0x3e, 0x4d, - 0xf9, 0x81, 0xcc, 0xe9, 0x41, 0xd8, 0x7d, 0xba, 0x61, 0xab, 0xff, 0xfe, 0x5f, 0x01, 0x00, 0x00, - 0xff, 0xff, 0x09, 0x63, 0xfa, 0x64, 0xc9, 0x0a, 0x00, 0x00, + // 1166 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xef, 0x6e, 0x1b, 0x45, + 0x10, 0xd7, 0xd5, 0x76, 0xec, 0x8c, 0x9d, 0x34, 0x59, 0x02, 0x9c, 0x82, 0x08, 0xe9, 0x89, 0xa0, + 0x40, 0x54, 0x47, 0x04, 0x24, 0xa4, 0xf2, 0x47, 0x4a, 0xb0, 0x2a, 0x5c, 0x85, 0x62, 0x36, 0x7f, + 0x84, 0x10, 0xc8, 0x5d, 0xdf, 0xad, 0xed, 0x55, 0xce, 0xb7, 0x97, 0xdd, 0x75, 0xaa, 0xf2, 0x02, + 0x88, 0x47, 0xe0, 0x19, 0xf8, 0x8a, 0x10, 0x8f, 0xc0, 0x37, 0x5e, 0x09, 0xed, 0xbf, 0x8b, 0x1d, + 0xf7, 0xa8, 0x28, 0xe9, 0x27, 0xcf, 0xfc, 0x3c, 0xb3, 0xbb, 0x33, 0xf3, 0x9b, 0x99, 0x83, 0x8d, + 0x98, 0x4f, 0x26, 0x24, 0x4b, 0xe4, 0xfe, 0x80, 0x13, 0x91, 0xb4, 0x73, 0xc1, 0x15, 0x47, 0x6f, + 0xc6, 0x71, 0x9b, 0x88, 0x64, 0xca, 0x32, 0xde, 0x8e, 0x53, 0xd6, 0xf6, 0x46, 0x9b, 0xaf, 0x17, + 0xe6, 0x5a, 0xe0, 0x99, 0xb5, 0x8f, 0x12, 0xb8, 0x7b, 0xa4, 0xdd, 0x3b, 0x54, 0x11, 0x96, 0x4a, + 0x4c, 0x2f, 0xd1, 0xe7, 0xd0, 0x60, 0x99, 0x54, 0x24, 0x8b, 0x69, 0x18, 0x6c, 0x07, 0xbb, 0xcd, + 0x83, 0x7b, 0xed, 0x92, 0x53, 0xdb, 0x5d, 0x67, 0x88, 0x0b, 0x17, 0x84, 0xa0, 0x3a, 0xbc, 0x1c, + 0x64, 0xe1, 0x9d, 0xed, 0x60, 0x77, 0x19, 0x1b, 0x39, 0xfa, 0xab, 0x0a, 0x6b, 0xf3, 0xd7, 0xc8, + 0xbc, 0x30, 0x0c, 0xae, 0x0d, 0x35, 0x96, 0x91, 0x09, 0xf5, 0xce, 0x5a, 0x46, 0x21, 0xd4, 0xaf, + 0xa8, 0x90, 0x8c, 0x67, 0x61, 0xc5, 0xc0, 0x5e, 0x45, 0x11, 0xb4, 0x72, 0xc1, 0x73, 0x2a, 0x14, + 0xa3, 0xb2, 0x9b, 0x84, 0x55, 0xf3, 0xf7, 0x1c, 0x86, 0x36, 0xa0, 0x46, 0x52, 0x46, 0x64, 0x58, + 0x33, 0x7f, 0x5a, 0x05, 0x6d, 0x42, 0x83, 0x0f, 0x87, 0x2c, 0x66, 0x24, 0x0d, 0x97, 0xb6, 0x83, + 0xdd, 0x06, 0x2e, 0x74, 0xf4, 0x06, 0x2c, 0xe5, 0x2c, 0xe3, 0x53, 0x15, 0xd6, 0x8d, 0x8b, 0xd3, + 0xd0, 0x03, 0xa8, 0xe7, 0x24, 0xbe, 0x20, 0x23, 0x1a, 0x36, 0x4c, 0x5a, 0xb6, 0x4b, 0xd3, 0xd2, + 0xb3, 0x76, 0xd8, 0x3b, 0xa0, 0x23, 0x68, 0xe4, 0x29, 0x51, 0x43, 0x2e, 0x26, 0xe1, 0xb2, 0x71, + 0x7e, 0xaf, 0xd4, 0xd9, 0x24, 0xaa, 0xe7, 0xac, 0x71, 0xe1, 0x87, 0xbe, 0x83, 0x75, 0xc5, 0x79, + 0x2a, 0x3b, 0x34, 0xa7, 0x59, 0x42, 0xb3, 0x98, 0x51, 0x19, 0xc2, 0x76, 0x65, 0xb7, 0x79, 0xf0, + 0x41, 0xe9, 0x61, 0xa7, 0x37, 0x3d, 0xf0, 0xe2, 0x21, 0xe8, 0x18, 0x56, 0x63, 0x9e, 0x0d, 0xd9, + 0xa8, 0xcf, 0x73, 0xc5, 0x78, 0x26, 0xc3, 0xa6, 0x39, 0x76, 0xa7, 0xf4, 0xd8, 0x2f, 0x8d, 0xf9, + 0x37, 0xc6, 0x1a, 0xaf, 0xc4, 0x33, 0x9a, 0x44, 0x3f, 0xc0, 0x6b, 0x2c, 0xa1, 0x99, 0x62, 0x43, + 0x16, 0x13, 0x0d, 0xf5, 0x73, 0x41, 0x87, 0x61, 0xcb, 0x1c, 0xb9, 0x57, 0x4e, 0xa5, 0x39, 0x9f, + 0x9e, 0xa0, 0x43, 0x8c, 0xd8, 0x02, 0x16, 0x3d, 0x02, 0xb4, 0x68, 0x89, 0x3e, 0x86, 0xda, 0x54, + 0x0e, 0xba, 0x1d, 0x47, 0xd8, 0xad, 0xd2, 0x5b, 0xce, 0x4e, 0x8e, 0xba, 0x1d, 0x6c, 0x8d, 0xa3, + 0x3d, 0xa8, 0x19, 0x1d, 0xad, 0x41, 0xe5, 0xdc, 0x39, 0x2f, 0x63, 0x2d, 0x6a, 0xa4, 0xd7, 0xed, + 0x38, 0x1e, 0x6a, 0x31, 0xfa, 0x33, 0x80, 0xba, 0xab, 0x2b, 0xda, 0x02, 0x98, 0x10, 0x96, 0x29, + 0xc2, 0x32, 0x2a, 0x9c, 0xdb, 0x0c, 0xa2, 0xbd, 0xa7, 0x22, 0xf5, 0xde, 0x53, 0x91, 0x6a, 0x8f, + 0xa7, 0x74, 0x20, 0x99, 0xa2, 0x67, 0xf8, 0xd8, 0xf1, 0x78, 0x06, 0xd1, 0x34, 0xa5, 0x13, 0xc2, + 0x52, 0xc7, 0x61, 0xab, 0x14, 0xed, 0x50, 0x9b, 0x69, 0x87, 0x0f, 0xa1, 0x3a, 0xa6, 0x69, 0x6e, + 0x68, 0xdb, 0x3c, 0x78, 0xbb, 0x34, 0xd2, 0xaf, 0x68, 0x9a, 0x63, 0x63, 0x1a, 0x6d, 0x41, 0x55, + 0x6b, 0x9a, 0xd9, 0x3c, 0x4b, 0x59, 0x46, 0xdd, 0x93, 0x9d, 0x16, 0xfd, 0x1d, 0xc0, 0xca, 0x1c, + 0xeb, 0x74, 0x67, 0x11, 0x11, 0x8f, 0x99, 0xa2, 0xb1, 0x9a, 0x0a, 0x6f, 0x3f, 0x87, 0xe9, 0x1e, + 0x8a, 0x89, 0xa2, 0x23, 0x2e, 0x9e, 0xb9, 0x48, 0x0b, 0xdd, 0x27, 0xa0, 0x72, 0x9d, 0x80, 0x5d, + 0xb8, 0x6b, 0xbc, 0xaf, 0xe8, 0x43, 0x96, 0xd2, 0xc7, 0x3a, 0x2a, 0x1b, 0xea, 0x4d, 0xd8, 0x9c, + 0x3b, 0xa6, 0xf1, 0x85, 0x9c, 0x4e, 0x5c, 0xe0, 0x85, 0xae, 0x13, 0x22, 0xd9, 0x4f, 0xd4, 0x04, + 0x5f, 0xc1, 0x46, 0x2e, 0x92, 0x54, 0xbf, 0x4e, 0x52, 0xf4, 0x6b, 0x00, 0xeb, 0x0b, 0xd4, 0xd7, + 0x27, 0xbb, 0x86, 0xf4, 0x45, 0x2b, 0xf4, 0xff, 0x38, 0x79, 0x1e, 0x40, 0x5d, 0x3e, 0x93, 0x8a, + 0x4e, 0x64, 0x58, 0x35, 0xbc, 0x2e, 0x9f, 0x05, 0x27, 0xd6, 0x0e, 0x7b, 0x87, 0xe8, 0x97, 0x00, + 0xea, 0x0e, 0x9c, 0x8b, 0x35, 0x58, 0x8c, 0x75, 0xcc, 0xa5, 0xf2, 0x2f, 0xd2, 0xf2, 0xf3, 0xb2, + 0x58, 0x79, 0x7e, 0x16, 0x5d, 0x05, 0xaa, 0xd7, 0x15, 0xf0, 0xb9, 0xab, 0x5d, 0xe7, 0x2e, 0xfa, + 0x39, 0x80, 0xd6, 0x6c, 0x2f, 0x1b, 0x8a, 0x18, 0xa9, 0xa0, 0x88, 0xc5, 0xef, 0x41, 0xcb, 0x4a, + 0xfd, 0x94, 0x0c, 0xa8, 0xa7, 0x76, 0xd3, 0x62, 0xc7, 0x1a, 0x42, 0x9f, 0xc1, 0xd2, 0x15, 0x49, + 0xa7, 0x54, 0x86, 0x15, 0x93, 0x92, 0x77, 0x5f, 0x30, 0x3d, 0xce, 0xb5, 0x31, 0x76, 0x3e, 0xd1, + 0x13, 0x68, 0xce, 0xc0, 0xba, 0x1f, 0xcc, 0x1f, 0xee, 0x19, 0x56, 0x41, 0xef, 0x40, 0xd3, 0x08, + 0x73, 0x8f, 0x00, 0x03, 0xd9, 0x37, 0x6c, 0x42, 0x43, 0xd2, 0x94, 0xc6, 0x8a, 0x26, 0x26, 0x31, + 0x0d, 0x5c, 0xe8, 0xd1, 0xef, 0x01, 0xac, 0x1a, 0x96, 0x1f, 0x2a, 0x45, 0xe2, 0xf1, 0x2d, 0xac, + 0xba, 0xb7, 0x60, 0xd9, 0xec, 0xde, 0xfe, 0x54, 0x30, 0xdf, 0x02, 0x06, 0x38, 0x13, 0x4c, 0xbf, + 0x55, 0x5e, 0x50, 0x15, 0x8f, 0xfb, 0x39, 0x51, 0x63, 0xdf, 0xf2, 0x16, 0xea, 0x11, 0x35, 0x46, + 0x3b, 0xb0, 0x2a, 0xa9, 0x2e, 0x5b, 0x5f, 0xb1, 0x09, 0xd5, 0xfb, 0xc6, 0x16, 0x6b, 0xc5, 0xa2, + 0xa7, 0x16, 0x8c, 0x7e, 0x74, 0x1b, 0xda, 0xbf, 0x5a, 0xe6, 0xe8, 0x11, 0xac, 0x28, 0x22, 0x2f, + 0xfa, 0xb9, 0xe0, 0x23, 0x41, 0xa5, 0x74, 0x6f, 0x2f, 0x1f, 0xd7, 0xa7, 0x44, 0x5e, 0xf4, 0x9c, + 0x31, 0x6e, 0xa9, 0x19, 0x2d, 0xfa, 0x1a, 0x5a, 0xe6, 0xf8, 0x63, 0x26, 0xd5, 0xff, 0x4f, 0x49, + 0x74, 0xec, 0x26, 0x89, 0x3d, 0x4e, 0xe6, 0xe8, 0x53, 0xa8, 0xe5, 0x5c, 0x28, 0xfd, 0xc6, 0x7f, + 0x5f, 0x29, 0x1d, 0xaa, 0x4c, 0x9d, 0x7a, 0x5c, 0x28, 0x6c, 0x7d, 0xa2, 0xa1, 0x8b, 0xdd, 0x5c, + 0x94, 0xa6, 0xb7, 0x50, 0xb2, 0x0d, 0xa8, 0x99, 0x0a, 0xb9, 0x72, 0x59, 0x25, 0xfa, 0x23, 0x70, + 0xdf, 0x27, 0xc5, 0x45, 0x32, 0x47, 0xe7, 0xb0, 0x9e, 0xf0, 0xa7, 0x59, 0xca, 0x49, 0x72, 0x33, + 0xd3, 0xef, 0x97, 0x47, 0xe1, 0x3c, 0x8a, 0x6c, 0xaf, 0x25, 0x37, 0x90, 0xc5, 0xea, 0xdd, 0x79, + 0xf9, 0xea, 0x8d, 0x61, 0xdd, 0xbc, 0xfb, 0x2c, 0x63, 0xaf, 0x38, 0x45, 0x4f, 0x00, 0xdd, 0xbc, + 0xe9, 0x96, 0x99, 0x48, 0x5d, 0x7b, 0x9e, 0x18, 0xfa, 0xdf, 0x4e, 0x20, 0x97, 0x53, 0x5a, 0x6c, + 0x27, 0xab, 0x44, 0x3b, 0x8e, 0x53, 0xfe, 0x9a, 0xb9, 0x2f, 0xd1, 0x4a, 0xf1, 0xc9, 0xfa, 0x5b, + 0x00, 0xad, 0x59, 0x4a, 0xea, 0x65, 0x40, 0x92, 0xa4, 0x08, 0x72, 0x19, 0x7b, 0xd5, 0xac, 0x15, + 0xfd, 0x31, 0x1d, 0x73, 0x3f, 0x92, 0x0a, 0x5d, 0x37, 0xb9, 0x97, 0xdd, 0xd0, 0xb2, 0x83, 0x60, + 0xc5, 0xa3, 0x76, 0x6e, 0x7d, 0x01, 0x4b, 0x26, 0xcd, 0x7e, 0x9d, 0xbc, 0xe0, 0xeb, 0x50, 0x77, + 0x57, 0x57, 0xd1, 0x09, 0x76, 0x5e, 0xd1, 0xa5, 0x0b, 0x4a, 0xff, 0x71, 0x78, 0x2b, 0x2c, 0xd0, + 0xe3, 0xcb, 0x4e, 0x27, 0x22, 0x46, 0x9a, 0xa3, 0x15, 0x33, 0xbe, 0x0c, 0x74, 0x28, 0x46, 0x32, + 0xc2, 0xae, 0x65, 0x8a, 0x2b, 0x65, 0x3e, 0x13, 0x46, 0xf0, 0x52, 0x61, 0x7c, 0x32, 0x33, 0x3d, + 0xf4, 0x1f, 0xc5, 0x56, 0x0e, 0x66, 0xb6, 0x32, 0x82, 0xea, 0xc3, 0x6f, 0x8f, 0x1e, 0xfb, 0xbd, + 0xa8, 0xe5, 0xa3, 0xfb, 0xdf, 0xef, 0x8d, 0x98, 0x1a, 0x4f, 0x07, 0xfa, 0x86, 0x7d, 0x77, 0xa3, + 0xff, 0xbd, 0x1f, 0xa7, 0x6c, 0x5f, 0xe4, 0xf1, 0xbe, 0xbf, 0x7d, 0xb0, 0x64, 0xb2, 0xff, 0xd1, + 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x76, 0x9a, 0x55, 0x98, 0x44, 0x0d, 0x00, 0x00, } diff --git a/rpc/commands/board.proto b/rpc/commands/board.proto index 1d3f5e1f57e..0595683ebbf 100644 --- a/rpc/commands/board.proto +++ b/rpc/commands/board.proto @@ -179,6 +179,34 @@ message BoardListResp { repeated DetectedPort ports = 1; } +message BoardInstallReq { + Instance instance = 1; + string board = 2; // Board FQBN or Board alias +} + +message BoardInstallResp { + DownloadProgress download_progress = 1; + TaskProgress task_progress = 2; +} + +message BoardUninstallReq { + Instance instance = 1; + string board = 2; // Board FQBN or Board alias +} + +message BoardUninstallResp { + TaskProgress task_progress = 1; +} + +message BoardSearchReq { + Instance instance = 1; + string query = 2; +} + +message BoardSearchResp { + repeated string fqbn = 1; +} + message DetectedPort { // Address of the port (e.g., `serial:///dev/ttyACM0`). string address = 1; diff --git a/rpc/commands/commands.pb.go b/rpc/commands/commands.pb.go index 7aa41ab7f05..e608e221122 100644 --- a/rpc/commands/commands.pb.go +++ b/rpc/commands/commands.pb.go @@ -8,6 +8,8 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -552,76 +554,78 @@ func init() { func init() { proto.RegisterFile("commands/commands.proto", fileDescriptor_3690061a1131852d) } var fileDescriptor_3690061a1131852d = []byte{ - // 948 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x97, 0xdd, 0x52, 0x1b, 0x37, - 0x14, 0xc7, 0xb3, 0x24, 0x05, 0x7c, 0x0c, 0x24, 0x51, 0x9c, 0xe0, 0xf1, 0x95, 0xb3, 0x69, 0x8a, - 0x81, 0x62, 0x28, 0xed, 0xb4, 0x17, 0x9d, 0x5e, 0x90, 0xd0, 0x0b, 0xd2, 0x74, 0xc8, 0x2c, 0x85, - 0xe9, 0xe4, 0xc6, 0x95, 0x77, 0x15, 0xd0, 0xb0, 0xac, 0x14, 0x69, 0xa1, 0xf5, 0x55, 0x9f, 0xa0, - 0x2f, 0xd4, 0x17, 0xe9, 0xeb, 0x74, 0xa4, 0x95, 0xe4, 0x35, 0x78, 0x3f, 0x1c, 0xc8, 0x15, 0xec, - 0x39, 0xbf, 0xf3, 0x3f, 0xab, 0xf3, 0x21, 0xdb, 0xb0, 0x1a, 0xb2, 0x8b, 0x0b, 0x9c, 0x44, 0x72, - 0xdb, 0xfe, 0xd3, 0xe7, 0x82, 0xa5, 0x0c, 0xad, 0x86, 0x61, 0x1f, 0x8b, 0xe8, 0x92, 0x26, 0xac, - 0x1f, 0xc6, 0xb4, 0x6f, 0xdd, 0x9d, 0xa7, 0x13, 0x11, 0x2c, 0xc9, 0xf8, 0x4e, 0xcb, 0x99, 0x87, - 0x0c, 0x8b, 0xc8, 0x58, 0x9f, 0xe5, 0x61, 0x4e, 0x63, 0x62, 0xec, 0x4f, 0x72, 0x76, 0x61, 0x8d, - 0x63, 0xe5, 0x4b, 0x1e, 0x33, 0x6c, 0x35, 0x90, 0x33, 0xc7, 0x74, 0x98, 0xd9, 0xfc, 0x1f, 0x61, - 0xe1, 0x20, 0xa1, 0x69, 0x40, 0x3e, 0xa2, 0x1d, 0x68, 0xc5, 0x74, 0x28, 0xb0, 0x18, 0x0d, 0x2e, - 0x70, 0x82, 0x4f, 0x89, 0x18, 0xb0, 0x24, 0x1e, 0xb5, 0xe7, 0xba, 0x5e, 0x6f, 0x31, 0x40, 0xc6, - 0xf7, 0x6b, 0xe6, 0x3a, 0x4c, 0xe2, 0x91, 0xff, 0xdf, 0x1c, 0x2c, 0x66, 0xd1, 0x92, 0xa3, 0x9f, - 0x60, 0x91, 0x26, 0x32, 0xc5, 0x49, 0x48, 0xda, 0x5e, 0xd7, 0xeb, 0x35, 0x77, 0x9f, 0xf7, 0x0b, - 0x8e, 0xde, 0x3f, 0x30, 0x60, 0xe0, 0x42, 0xd0, 0x77, 0xf0, 0x8c, 0xc7, 0x38, 0xfd, 0xc0, 0xc4, - 0x85, 0x1c, 0xd0, 0x24, 0x22, 0x7f, 0x0d, 0x88, 0x10, 0x4c, 0xc8, 0xf6, 0x5c, 0xf7, 0x7e, 0xaf, - 0x11, 0xb4, 0x9c, 0xf7, 0x40, 0x39, 0x7f, 0xd6, 0x3e, 0xb4, 0x0b, 0x4f, 0xb3, 0xf7, 0xa2, 0x64, - 0x22, 0xaa, 0x7d, 0xbf, 0xeb, 0xf5, 0x1a, 0xc1, 0x13, 0xe7, 0x1c, 0x07, 0xa1, 0x13, 0x78, 0x1c, - 0xb1, 0x3f, 0x13, 0x55, 0x98, 0x01, 0x17, 0xec, 0x54, 0x10, 0x29, 0xdb, 0x0f, 0xf4, 0x1b, 0xaf, - 0x17, 0xbe, 0xf1, 0xbe, 0x89, 0x78, 0x67, 0x02, 0x82, 0x47, 0xd1, 0x35, 0x0b, 0x7a, 0x03, 0xcb, - 0x29, 0x96, 0xe7, 0x63, 0xcd, 0x2f, 0xb4, 0xe6, 0xcb, 0x42, 0xcd, 0xdf, 0xb0, 0x3c, 0x77, 0x7a, - 0x4b, 0x69, 0xee, 0xc9, 0xff, 0x05, 0x60, 0x9f, 0xc8, 0x54, 0xb0, 0x91, 0xea, 0xcc, 0xed, 0x4a, - 0xeb, 0x2f, 0x43, 0xd3, 0x89, 0x49, 0xee, 0xbf, 0x81, 0x46, 0x40, 0x64, 0x88, 0x93, 0x3b, 0x90, - 0xbe, 0x02, 0xb0, 0x5a, 0x92, 0x97, 0xf4, 0xd0, 0xfb, 0x94, 0x1e, 0xce, 0x15, 0xf6, 0xd0, 0x3f, - 0x84, 0x95, 0x63, 0x1e, 0xe1, 0x94, 0x68, 0xdb, 0x1d, 0x1c, 0x84, 0xc2, 0xc3, 0x09, 0x41, 0xc9, - 0xa7, 0xcf, 0x89, 0x77, 0xeb, 0x39, 0xf1, 0x7f, 0x87, 0xd5, 0x2c, 0xd5, 0xdb, 0x89, 0x83, 0xdd, - 0xc1, 0x21, 0x04, 0xb4, 0xa7, 0x2b, 0x7f, 0xc6, 0xd3, 0x2c, 0x01, 0x9c, 0x10, 0x21, 0x29, 0x53, - 0xe3, 0xe4, 0xaf, 0x41, 0xd3, 0x3d, 0x49, 0x8e, 0xda, 0xb0, 0x70, 0x95, 0x3d, 0xea, 0x54, 0x8d, - 0xc0, 0x3e, 0xee, 0xfe, 0xdb, 0x82, 0xe6, 0x5e, 0x96, 0xf2, 0x35, 0x13, 0x04, 0x1d, 0xc2, 0x03, - 0x75, 0x93, 0xa0, 0x6e, 0xc9, 0x79, 0xf5, 0x35, 0xd5, 0x79, 0x5e, 0x41, 0x48, 0xee, 0xdf, 0xdb, - 0xf1, 0xd0, 0x09, 0x2c, 0x98, 0xa1, 0x47, 0x2f, 0x8a, 0xcf, 0xe7, 0x76, 0xac, 0xf3, 0x65, 0x35, - 0xa4, 0x94, 0xd1, 0x11, 0xcc, 0x67, 0x13, 0x8f, 0xfc, 0xc2, 0x08, 0xb7, 0x5e, 0x9d, 0x17, 0x95, - 0x8c, 0x16, 0x8d, 0xa0, 0x99, 0x9b, 0x3e, 0xb4, 0x56, 0x18, 0x35, 0x39, 0xf4, 0x9d, 0x5e, 0x3d, - 0xd0, 0x94, 0xe4, 0x6f, 0x68, 0x4d, 0x1b, 0x0f, 0xb4, 0x53, 0xa1, 0x72, 0x63, 0x4e, 0x3b, 0xdf, - 0xcc, 0x18, 0x31, 0xee, 0x89, 0x99, 0x8e, 0x92, 0x9e, 0x8c, 0xa7, 0xa9, 0xa4, 0x27, 0xb9, 0x21, - 0xf3, 0xef, 0xa1, 0x10, 0x96, 0x5e, 0xa9, 0xcf, 0xca, 0x7d, 0x92, 0x62, 0x1a, 0x4b, 0x54, 0x5c, - 0x96, 0x3c, 0xa6, 0x32, 0xac, 0xd7, 0x24, 0x25, 0x47, 0x43, 0x68, 0x6a, 0xdb, 0x5e, 0x9a, 0xe2, - 0xf0, 0xac, 0xa4, 0x47, 0x39, 0xaa, 0xbc, 0x47, 0x13, 0xa0, 0xe4, 0x3b, 0x1e, 0x7a, 0x0f, 0x0d, - 0x6d, 0x7c, 0x4b, 0x65, 0x8a, 0x5e, 0x96, 0x07, 0x2a, 0x46, 0xe9, 0x7f, 0x55, 0x07, 0x93, 0xdc, - 0x15, 0x49, 0x19, 0xf6, 0xe2, 0xb8, 0xaa, 0x48, 0x06, 0xab, 0x51, 0x24, 0x47, 0xea, 0x5b, 0x66, - 0xe1, 0x75, 0xf6, 0xfd, 0xa4, 0xa4, 0xc3, 0x86, 0x28, 0xef, 0xb0, 0x83, 0x74, 0x61, 0x12, 0x78, - 0xf8, 0xce, 0x7c, 0x76, 0xe8, 0x7b, 0x2f, 0x8e, 0xd1, 0x66, 0x61, 0xe8, 0x35, 0x52, 0xe5, 0xf9, - 0xba, 0x3e, 0xac, 0xf3, 0x7d, 0x84, 0x47, 0xd6, 0x61, 0xef, 0x40, 0x54, 0xad, 0x61, 0x51, 0x95, - 0x71, 0x6b, 0x06, 0x5a, 0xa7, 0x4c, 0xe1, 0xb1, 0xf5, 0x1c, 0x27, 0xd4, 0x1c, 0xb2, 0x5a, 0xc5, - 0xb1, 0x2a, 0x69, 0x7f, 0x16, 0xfc, 0x7a, 0x61, 0x8f, 0xf9, 0xa9, 0xc0, 0x11, 0xa9, 0x51, 0x58, - 0x43, 0xd6, 0x2b, 0xac, 0x83, 0x75, 0xbe, 0x23, 0x98, 0x3f, 0xd6, 0xdf, 0x49, 0x4b, 0xae, 0xcf, - 0x0c, 0x28, 0xbf, 0x3e, 0x2d, 0xa3, 0x45, 0x29, 0xac, 0xd8, 0x6c, 0x47, 0x04, 0x8b, 0xf0, 0x0c, - 0x6d, 0x54, 0xbe, 0x56, 0x06, 0xaa, 0x24, 0x9b, 0xb5, 0xd9, 0x6c, 0x8b, 0xac, 0x55, 0x2f, 0x69, - 0xaf, 0x32, 0xd8, 0xee, 0xe9, 0x7a, 0x4d, 0x52, 0x72, 0xd5, 0x94, 0xec, 0x06, 0x1d, 0xb9, 0xe1, - 0x2b, 0x7e, 0xc9, 0x6b, 0x64, 0x79, 0x53, 0x6e, 0xc0, 0xba, 0x7e, 0xe7, 0xb0, 0x62, 0x1c, 0x76, - 0xb9, 0x36, 0xaa, 0x14, 0x72, 0xbb, 0xb5, 0x59, 0x9b, 0xb5, 0xab, 0x65, 0xec, 0xe3, 0x31, 0xaf, - 0x7c, 0xe1, 0x89, 0x29, 0xdf, 0x9a, 0x81, 0xb6, 0xab, 0x65, 0x3d, 0xd9, 0x30, 0xee, 0x95, 0xae, - 0xd6, 0x0d, 0xb6, 0x7c, 0xb5, 0xa6, 0xe0, 0x3a, 0xeb, 0x3f, 0x1e, 0x74, 0x8c, 0x2f, 0x20, 0x92, - 0xc5, 0x57, 0x64, 0x9f, 0x70, 0x92, 0x44, 0x24, 0x09, 0x29, 0x91, 0xe8, 0xfb, 0x2a, 0xc1, 0x29, - 0x41, 0xea, 0x45, 0x7e, 0xf8, 0xa4, 0x38, 0xc9, 0xd1, 0x07, 0x58, 0x36, 0x84, 0x59, 0x92, 0xf5, - 0x2a, 0xa5, 0xf1, 0x8e, 0x6c, 0xd4, 0x45, 0x25, 0x47, 0x7f, 0x40, 0xd3, 0x18, 0xf5, 0x86, 0xac, - 0x55, 0x85, 0xda, 0x05, 0xe9, 0xd5, 0x03, 0x25, 0x7f, 0xb5, 0xf5, 0x7e, 0xf3, 0x94, 0xa6, 0x67, - 0x97, 0x43, 0x85, 0x6c, 0x9b, 0x10, 0xfb, 0x77, 0x2b, 0x8c, 0xe9, 0xb6, 0xe0, 0xa1, 0xfb, 0x1d, - 0x3e, 0x9c, 0xd7, 0x3f, 0x75, 0xbf, 0xfd, 0x3f, 0x00, 0x00, 0xff, 0xff, 0xd5, 0xf5, 0x48, 0xa1, - 0xa3, 0x0f, 0x00, 0x00, + // 985 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x98, 0x4f, 0x53, 0xdc, 0x36, + 0x14, 0xc0, 0x63, 0x92, 0x02, 0xfb, 0x16, 0x48, 0xa2, 0x10, 0xd8, 0xf1, 0x69, 0xe3, 0x34, 0x65, + 0x81, 0xb2, 0x50, 0xda, 0x69, 0x0f, 0x9d, 0x1e, 0x48, 0xe8, 0x81, 0x34, 0x1d, 0x32, 0xa6, 0x30, + 0x9d, 0x5c, 0xb6, 0x5a, 0x5b, 0x21, 0x1a, 0x8c, 0xad, 0x48, 0x86, 0x76, 0x4f, 0xfd, 0x04, 0xfd, + 0x7c, 0xfd, 0x1a, 0xfd, 0x08, 0x1d, 0xc9, 0x92, 0xbc, 0x5e, 0xd6, 0x7f, 0x36, 0x90, 0x13, 0xe8, + 0xbd, 0xdf, 0x7b, 0x4f, 0x7a, 0x7f, 0xa4, 0x1d, 0xc3, 0x7a, 0x90, 0x5c, 0x5e, 0xe2, 0x38, 0x14, + 0xbb, 0xe6, 0x9f, 0x3e, 0xe3, 0x49, 0x9a, 0xa0, 0xf5, 0x20, 0xe8, 0x63, 0x1e, 0x5e, 0xd1, 0x38, + 0xe9, 0x07, 0x11, 0xed, 0x1b, 0xb5, 0xfb, 0xb4, 0x60, 0x91, 0xc4, 0x19, 0xef, 0xae, 0x5a, 0xf1, + 0x30, 0xc1, 0x3c, 0xd4, 0xd2, 0xb5, 0x71, 0x98, 0xd1, 0x88, 0x68, 0xf9, 0x93, 0x31, 0x39, 0x37, + 0xc2, 0xdc, 0xf3, 0x15, 0x8b, 0x12, 0x6c, 0x7c, 0x20, 0x2b, 0x8e, 0xe8, 0x30, 0x93, 0x79, 0x3f, + 0xc2, 0xc2, 0x51, 0x4c, 0x53, 0x9f, 0x7c, 0x44, 0x7b, 0xb0, 0x1a, 0xd1, 0x21, 0xc7, 0x7c, 0x34, + 0xb8, 0xc4, 0x31, 0x3e, 0x27, 0x7c, 0x90, 0xc4, 0xd1, 0xa8, 0x33, 0xd7, 0x75, 0x7a, 0x8b, 0x3e, + 0xd2, 0xba, 0x5f, 0x33, 0xd5, 0x71, 0x1c, 0x8d, 0xbc, 0x7f, 0xe7, 0x60, 0x31, 0xb3, 0x16, 0x0c, + 0xfd, 0x04, 0x8b, 0x34, 0x16, 0x29, 0x8e, 0x03, 0xd2, 0x71, 0xba, 0x4e, 0xaf, 0xbd, 0xff, 0xac, + 0x5f, 0x72, 0xf4, 0xfe, 0x91, 0x06, 0x7d, 0x6b, 0x82, 0xbe, 0x83, 0x35, 0x16, 0xe1, 0xf4, 0x7d, + 0xc2, 0x2f, 0xc5, 0x80, 0xc6, 0x21, 0xf9, 0x6b, 0x40, 0x38, 0x4f, 0xb8, 0xe8, 0xcc, 0x75, 0xef, + 0xf7, 0x5a, 0xfe, 0xaa, 0xd5, 0x1e, 0x49, 0xe5, 0xcf, 0x4a, 0x87, 0xf6, 0xe1, 0x69, 0xb6, 0x2f, + 0x4a, 0x0a, 0x56, 0x9d, 0xfb, 0x5d, 0xa7, 0xd7, 0xf2, 0x9f, 0x58, 0x65, 0x6e, 0x84, 0xce, 0xe0, + 0x71, 0x98, 0xfc, 0x19, 0xcb, 0xc4, 0x0c, 0x18, 0x4f, 0xce, 0x39, 0x11, 0xa2, 0xf3, 0x40, 0xed, + 0x78, 0xb3, 0x74, 0xc7, 0x87, 0xda, 0xe2, 0xad, 0x36, 0xf0, 0x1f, 0x85, 0x13, 0x12, 0xf4, 0x1a, + 0x96, 0x53, 0x2c, 0x2e, 0x72, 0x9f, 0x5f, 0x28, 0x9f, 0x2f, 0x4a, 0x7d, 0xfe, 0x86, 0xc5, 0x85, + 0xf5, 0xb7, 0x94, 0x8e, 0xad, 0xbc, 0x5f, 0x00, 0x0e, 0x89, 0x48, 0x79, 0x32, 0x92, 0x95, 0xb9, + 0x5d, 0x6a, 0xbd, 0x65, 0x68, 0x5b, 0x67, 0x82, 0x79, 0xaf, 0xa1, 0xe5, 0x13, 0x11, 0xe0, 0xf8, + 0x0e, 0x5c, 0x5f, 0x03, 0x18, 0x5f, 0x82, 0x55, 0xd4, 0xd0, 0xf9, 0x94, 0x1a, 0xce, 0x95, 0xd6, + 0xd0, 0x3b, 0x86, 0x95, 0x53, 0x16, 0xe2, 0x94, 0x28, 0xd9, 0x1d, 0x1c, 0x84, 0xc2, 0xc3, 0x82, + 0x43, 0xc1, 0xa6, 0xf7, 0x89, 0x73, 0xeb, 0x3e, 0xf1, 0x7e, 0x87, 0xf5, 0x2c, 0xd4, 0x9b, 0xc2, + 0xc1, 0xee, 0xe0, 0x10, 0x1c, 0x3a, 0xd3, 0x3d, 0x7f, 0xc6, 0xd3, 0x2c, 0x01, 0x9c, 0x11, 0x2e, + 0x68, 0x22, 0xdb, 0xc9, 0xdb, 0x80, 0xb6, 0x5d, 0x09, 0x86, 0x3a, 0xb0, 0x70, 0x9d, 0x2d, 0x55, + 0xa8, 0x96, 0x6f, 0x96, 0xfb, 0xff, 0xad, 0x41, 0xfb, 0x20, 0x0b, 0xf9, 0x2a, 0xe1, 0x04, 0x1d, + 0xc3, 0x03, 0x79, 0x93, 0xa0, 0x6e, 0xc5, 0x79, 0xd5, 0x35, 0xe5, 0x3e, 0xab, 0x21, 0x04, 0xf3, + 0xee, 0xed, 0x39, 0xe8, 0x0c, 0x16, 0x74, 0xd3, 0xa3, 0xe7, 0xe5, 0xe7, 0xb3, 0x33, 0xe6, 0x7e, + 0x59, 0x0f, 0x49, 0xcf, 0xe8, 0x04, 0xe6, 0xb3, 0x8e, 0x47, 0x5e, 0xa9, 0x85, 0x1d, 0x2f, 0xf7, + 0x79, 0x2d, 0xa3, 0x9c, 0x86, 0xd0, 0x1e, 0xeb, 0x3e, 0xb4, 0x51, 0x6a, 0x55, 0x6c, 0x7a, 0xb7, + 0xd7, 0x0c, 0xd4, 0x29, 0xf9, 0x1b, 0x56, 0xa7, 0xb5, 0x07, 0xda, 0xab, 0xf1, 0x72, 0xa3, 0x4f, + 0xdd, 0x6f, 0x66, 0xb4, 0xc8, 0x6b, 0xa2, 0xbb, 0xa3, 0xa2, 0x26, 0x79, 0x37, 0x55, 0xd4, 0x64, + 0xac, 0xc9, 0xbc, 0x7b, 0x28, 0x80, 0xa5, 0x97, 0xf2, 0xad, 0x3c, 0x24, 0x29, 0xa6, 0x91, 0x40, + 0xe5, 0x69, 0x19, 0xc7, 0x64, 0x84, 0xcd, 0x86, 0xa4, 0x60, 0x68, 0x08, 0x6d, 0x25, 0x3b, 0x48, + 0x53, 0x1c, 0x7c, 0xa8, 0xa8, 0xd1, 0x18, 0x55, 0x5d, 0xa3, 0x02, 0x28, 0xd8, 0x9e, 0x83, 0xde, + 0x41, 0x4b, 0x09, 0xdf, 0x50, 0x91, 0xa2, 0x17, 0xd5, 0x86, 0x92, 0x91, 0xfe, 0xbf, 0x6a, 0x82, + 0x09, 0x66, 0x93, 0x24, 0x05, 0x07, 0x51, 0x54, 0x97, 0x24, 0x8d, 0x35, 0x48, 0x92, 0x25, 0x05, + 0x43, 0x44, 0x07, 0x51, 0x97, 0x53, 0x7d, 0x10, 0x8d, 0x35, 0x08, 0x62, 0x49, 0x95, 0xa7, 0x0b, + 0x58, 0x51, 0xd2, 0xd3, 0x98, 0xea, 0x40, 0x5b, 0xd5, 0xe6, 0x16, 0x94, 0xa1, 0xb6, 0x1b, 0xb3, + 0x2a, 0xd8, 0x1f, 0xba, 0xf0, 0x27, 0x04, 0xf3, 0xfa, 0xc2, 0x67, 0x54, 0x83, 0xc2, 0x1b, 0x50, + 0xdd, 0xcd, 0x0b, 0xaf, 0xb2, 0x5f, 0x75, 0x15, 0x73, 0xa1, 0x89, 0xea, 0xb9, 0xb0, 0x90, 0xda, + 0x79, 0x0c, 0x0f, 0xdf, 0xea, 0x17, 0xd7, 0x14, 0xa4, 0xfc, 0xec, 0x13, 0xa4, 0x8c, 0xf3, 0x75, + 0x73, 0x58, 0xc5, 0xfb, 0x08, 0x8f, 0x8c, 0xc2, 0xbc, 0x1c, 0xa8, 0xde, 0x87, 0x41, 0x65, 0xc4, + 0x9d, 0x19, 0x68, 0x15, 0x32, 0x85, 0xc7, 0x46, 0x93, 0x37, 0x43, 0xbd, 0x97, 0x42, 0x3f, 0xf4, + 0x67, 0xc1, 0x27, 0x13, 0x7b, 0xca, 0xce, 0x39, 0x0e, 0x49, 0x83, 0xc4, 0x6a, 0xb2, 0x59, 0x62, + 0x2d, 0xac, 0xe2, 0x9d, 0xc0, 0xfc, 0xa9, 0xfa, 0x25, 0x5f, 0xf1, 0xe8, 0x64, 0x40, 0xf5, 0xa3, + 0x63, 0x18, 0xe5, 0x94, 0xc2, 0x8a, 0x89, 0xa6, 0x5b, 0x7b, 0xab, 0x76, 0x5b, 0x79, 0x77, 0x6f, + 0x37, 0x66, 0xb3, 0xbb, 0xc7, 0x48, 0xd5, 0xd5, 0xd6, 0xab, 0x35, 0x36, 0xb7, 0xdb, 0x66, 0x43, + 0x52, 0x30, 0x59, 0x94, 0xec, 0xdd, 0x19, 0xd9, 0xe6, 0x2b, 0xdf, 0xe4, 0x04, 0x59, 0x5d, 0x94, + 0x1b, 0xb0, 0xb9, 0x84, 0xb4, 0xe2, 0xa8, 0xf6, 0x12, 0x2a, 0x82, 0xd5, 0xf9, 0x9b, 0x64, 0xcd, + 0x68, 0x69, 0x79, 0xde, 0xe6, 0xb5, 0x1b, 0x2e, 0x74, 0xf9, 0xce, 0x0c, 0xb4, 0x19, 0x2d, 0xa3, + 0xc9, 0x9a, 0xf1, 0xa0, 0x72, 0xb4, 0x6e, 0xb0, 0xd5, 0xa3, 0x35, 0x05, 0x57, 0x51, 0xff, 0x71, + 0xc0, 0xd5, 0x3a, 0x9f, 0x88, 0x24, 0xba, 0x26, 0x87, 0x84, 0x91, 0x38, 0x24, 0x71, 0x40, 0x89, + 0x40, 0xdf, 0xd7, 0x39, 0x9c, 0x62, 0x24, 0x37, 0xf2, 0xc3, 0x27, 0xd9, 0x09, 0x86, 0xde, 0xc3, + 0xb2, 0x26, 0xf4, 0x90, 0x6c, 0xd6, 0x79, 0xca, 0x67, 0x64, 0xab, 0x29, 0x2a, 0x98, 0x7c, 0x65, + 0xb4, 0x50, 0x4d, 0xc8, 0x46, 0x9d, 0xa9, 0x19, 0x90, 0x5e, 0x33, 0x50, 0xb0, 0x97, 0x3b, 0xef, + 0xb6, 0xcf, 0x69, 0xfa, 0xe1, 0x6a, 0x28, 0x91, 0x5d, 0x6d, 0x62, 0xfe, 0xee, 0x04, 0x11, 0xdd, + 0xe5, 0x2c, 0xb0, 0x5f, 0x2f, 0x86, 0xf3, 0xea, 0x03, 0xc1, 0xb7, 0xff, 0x07, 0x00, 0x00, 0xff, + 0xff, 0x21, 0xf8, 0x69, 0x20, 0xd9, 0x10, 0x00, 0x00, } // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConn +var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +const _ = grpc.SupportPackageIsVersion6 // ArduinoCoreClient is the client API for ArduinoCore service. // @@ -648,6 +652,9 @@ type ArduinoCoreClient interface { BoardList(ctx context.Context, in *BoardListReq, opts ...grpc.CallOption) (*BoardListResp, error) // List all the boards provided by installed platforms. BoardListAll(ctx context.Context, in *BoardListAllReq, opts ...grpc.CallOption) (*BoardListAllResp, error) + BoardInstall(ctx context.Context, in *BoardInstallReq, opts ...grpc.CallOption) (ArduinoCore_BoardInstallClient, error) + BoardUninstall(ctx context.Context, in *BoardUninstallReq, opts ...grpc.CallOption) (ArduinoCore_BoardUninstallClient, error) + BoardSearch(ctx context.Context, in *BoardSearchReq, opts ...grpc.CallOption) (*BoardSearchResp, error) Compile(ctx context.Context, in *CompileReq, opts ...grpc.CallOption) (ArduinoCore_CompileClient, error) // Download and install a platform and its tool dependencies. PlatformInstall(ctx context.Context, in *PlatformInstallReq, opts ...grpc.CallOption) (ArduinoCore_PlatformInstallClient, error) @@ -674,10 +681,10 @@ type ArduinoCoreClient interface { } type arduinoCoreClient struct { - cc *grpc.ClientConn + cc grpc.ClientConnInterface } -func NewArduinoCoreClient(cc *grpc.ClientConn) ArduinoCoreClient { +func NewArduinoCoreClient(cc grpc.ClientConnInterface) ArduinoCoreClient { return &arduinoCoreClient{cc} } @@ -863,8 +870,81 @@ func (c *arduinoCoreClient) BoardListAll(ctx context.Context, in *BoardListAllRe return out, nil } +func (c *arduinoCoreClient) BoardInstall(ctx context.Context, in *BoardInstallReq, opts ...grpc.CallOption) (ArduinoCore_BoardInstallClient, error) { + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[4], "/cc.arduino.cli.commands.ArduinoCore/BoardInstall", opts...) + if err != nil { + return nil, err + } + x := &arduinoCoreBoardInstallClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ArduinoCore_BoardInstallClient interface { + Recv() (*BoardInstallResp, error) + grpc.ClientStream +} + +type arduinoCoreBoardInstallClient struct { + grpc.ClientStream +} + +func (x *arduinoCoreBoardInstallClient) Recv() (*BoardInstallResp, error) { + m := new(BoardInstallResp) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *arduinoCoreClient) BoardUninstall(ctx context.Context, in *BoardUninstallReq, opts ...grpc.CallOption) (ArduinoCore_BoardUninstallClient, error) { + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[5], "/cc.arduino.cli.commands.ArduinoCore/BoardUninstall", opts...) + if err != nil { + return nil, err + } + x := &arduinoCoreBoardUninstallClient{stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +type ArduinoCore_BoardUninstallClient interface { + Recv() (*BoardUninstallResp, error) + grpc.ClientStream +} + +type arduinoCoreBoardUninstallClient struct { + grpc.ClientStream +} + +func (x *arduinoCoreBoardUninstallClient) Recv() (*BoardUninstallResp, error) { + m := new(BoardUninstallResp) + if err := x.ClientStream.RecvMsg(m); err != nil { + return nil, err + } + return m, nil +} + +func (c *arduinoCoreClient) BoardSearch(ctx context.Context, in *BoardSearchReq, opts ...grpc.CallOption) (*BoardSearchResp, error) { + out := new(BoardSearchResp) + err := c.cc.Invoke(ctx, "/cc.arduino.cli.commands.ArduinoCore/BoardSearch", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *arduinoCoreClient) Compile(ctx context.Context, in *CompileReq, opts ...grpc.CallOption) (ArduinoCore_CompileClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[4], "/cc.arduino.cli.commands.ArduinoCore/Compile", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[6], "/cc.arduino.cli.commands.ArduinoCore/Compile", opts...) if err != nil { return nil, err } @@ -896,7 +976,7 @@ func (x *arduinoCoreCompileClient) Recv() (*CompileResp, error) { } func (c *arduinoCoreClient) PlatformInstall(ctx context.Context, in *PlatformInstallReq, opts ...grpc.CallOption) (ArduinoCore_PlatformInstallClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[5], "/cc.arduino.cli.commands.ArduinoCore/PlatformInstall", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[7], "/cc.arduino.cli.commands.ArduinoCore/PlatformInstall", opts...) if err != nil { return nil, err } @@ -928,7 +1008,7 @@ func (x *arduinoCorePlatformInstallClient) Recv() (*PlatformInstallResp, error) } func (c *arduinoCoreClient) PlatformDownload(ctx context.Context, in *PlatformDownloadReq, opts ...grpc.CallOption) (ArduinoCore_PlatformDownloadClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[6], "/cc.arduino.cli.commands.ArduinoCore/PlatformDownload", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[8], "/cc.arduino.cli.commands.ArduinoCore/PlatformDownload", opts...) if err != nil { return nil, err } @@ -960,7 +1040,7 @@ func (x *arduinoCorePlatformDownloadClient) Recv() (*PlatformDownloadResp, error } func (c *arduinoCoreClient) PlatformUninstall(ctx context.Context, in *PlatformUninstallReq, opts ...grpc.CallOption) (ArduinoCore_PlatformUninstallClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[7], "/cc.arduino.cli.commands.ArduinoCore/PlatformUninstall", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[9], "/cc.arduino.cli.commands.ArduinoCore/PlatformUninstall", opts...) if err != nil { return nil, err } @@ -992,7 +1072,7 @@ func (x *arduinoCorePlatformUninstallClient) Recv() (*PlatformUninstallResp, err } func (c *arduinoCoreClient) PlatformUpgrade(ctx context.Context, in *PlatformUpgradeReq, opts ...grpc.CallOption) (ArduinoCore_PlatformUpgradeClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[8], "/cc.arduino.cli.commands.ArduinoCore/PlatformUpgrade", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[10], "/cc.arduino.cli.commands.ArduinoCore/PlatformUpgrade", opts...) if err != nil { return nil, err } @@ -1024,7 +1104,7 @@ func (x *arduinoCorePlatformUpgradeClient) Recv() (*PlatformUpgradeResp, error) } func (c *arduinoCoreClient) Upload(ctx context.Context, in *UploadReq, opts ...grpc.CallOption) (ArduinoCore_UploadClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[9], "/cc.arduino.cli.commands.ArduinoCore/Upload", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[11], "/cc.arduino.cli.commands.ArduinoCore/Upload", opts...) if err != nil { return nil, err } @@ -1074,7 +1154,7 @@ func (c *arduinoCoreClient) PlatformList(ctx context.Context, in *PlatformListRe } func (c *arduinoCoreClient) LibraryDownload(ctx context.Context, in *LibraryDownloadReq, opts ...grpc.CallOption) (ArduinoCore_LibraryDownloadClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[10], "/cc.arduino.cli.commands.ArduinoCore/LibraryDownload", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[12], "/cc.arduino.cli.commands.ArduinoCore/LibraryDownload", opts...) if err != nil { return nil, err } @@ -1106,7 +1186,7 @@ func (x *arduinoCoreLibraryDownloadClient) Recv() (*LibraryDownloadResp, error) } func (c *arduinoCoreClient) LibraryInstall(ctx context.Context, in *LibraryInstallReq, opts ...grpc.CallOption) (ArduinoCore_LibraryInstallClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[11], "/cc.arduino.cli.commands.ArduinoCore/LibraryInstall", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[13], "/cc.arduino.cli.commands.ArduinoCore/LibraryInstall", opts...) if err != nil { return nil, err } @@ -1138,7 +1218,7 @@ func (x *arduinoCoreLibraryInstallClient) Recv() (*LibraryInstallResp, error) { } func (c *arduinoCoreClient) LibraryUninstall(ctx context.Context, in *LibraryUninstallReq, opts ...grpc.CallOption) (ArduinoCore_LibraryUninstallClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[12], "/cc.arduino.cli.commands.ArduinoCore/LibraryUninstall", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[14], "/cc.arduino.cli.commands.ArduinoCore/LibraryUninstall", opts...) if err != nil { return nil, err } @@ -1170,7 +1250,7 @@ func (x *arduinoCoreLibraryUninstallClient) Recv() (*LibraryUninstallResp, error } func (c *arduinoCoreClient) LibraryUpgradeAll(ctx context.Context, in *LibraryUpgradeAllReq, opts ...grpc.CallOption) (ArduinoCore_LibraryUpgradeAllClient, error) { - stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[13], "/cc.arduino.cli.commands.ArduinoCore/LibraryUpgradeAll", opts...) + stream, err := c.cc.NewStream(ctx, &_ArduinoCore_serviceDesc.Streams[15], "/cc.arduino.cli.commands.ArduinoCore/LibraryUpgradeAll", opts...) if err != nil { return nil, err } @@ -1251,6 +1331,9 @@ type ArduinoCoreServer interface { BoardList(context.Context, *BoardListReq) (*BoardListResp, error) // List all the boards provided by installed platforms. BoardListAll(context.Context, *BoardListAllReq) (*BoardListAllResp, error) + BoardInstall(*BoardInstallReq, ArduinoCore_BoardInstallServer) error + BoardUninstall(*BoardUninstallReq, ArduinoCore_BoardUninstallServer) error + BoardSearch(context.Context, *BoardSearchReq) (*BoardSearchResp, error) Compile(*CompileReq, ArduinoCore_CompileServer) error // Download and install a platform and its tool dependencies. PlatformInstall(*PlatformInstallReq, ArduinoCore_PlatformInstallServer) error @@ -1276,6 +1359,95 @@ type ArduinoCoreServer interface { LibraryList(context.Context, *LibraryListReq) (*LibraryListResp, error) } +// UnimplementedArduinoCoreServer can be embedded to have forward compatible implementations. +type UnimplementedArduinoCoreServer struct { +} + +func (*UnimplementedArduinoCoreServer) Init(req *InitReq, srv ArduinoCore_InitServer) error { + return status.Errorf(codes.Unimplemented, "method Init not implemented") +} +func (*UnimplementedArduinoCoreServer) Destroy(ctx context.Context, req *DestroyReq) (*DestroyResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Destroy not implemented") +} +func (*UnimplementedArduinoCoreServer) Rescan(ctx context.Context, req *RescanReq) (*RescanResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Rescan not implemented") +} +func (*UnimplementedArduinoCoreServer) UpdateIndex(req *UpdateIndexReq, srv ArduinoCore_UpdateIndexServer) error { + return status.Errorf(codes.Unimplemented, "method UpdateIndex not implemented") +} +func (*UnimplementedArduinoCoreServer) UpdateLibrariesIndex(req *UpdateLibrariesIndexReq, srv ArduinoCore_UpdateLibrariesIndexServer) error { + return status.Errorf(codes.Unimplemented, "method UpdateLibrariesIndex not implemented") +} +func (*UnimplementedArduinoCoreServer) Version(ctx context.Context, req *VersionReq) (*VersionResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method Version not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardDetails(ctx context.Context, req *BoardDetailsReq) (*BoardDetailsResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method BoardDetails not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardAttach(req *BoardAttachReq, srv ArduinoCore_BoardAttachServer) error { + return status.Errorf(codes.Unimplemented, "method BoardAttach not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardList(ctx context.Context, req *BoardListReq) (*BoardListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method BoardList not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardListAll(ctx context.Context, req *BoardListAllReq) (*BoardListAllResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method BoardListAll not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardInstall(req *BoardInstallReq, srv ArduinoCore_BoardInstallServer) error { + return status.Errorf(codes.Unimplemented, "method BoardInstall not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardUninstall(req *BoardUninstallReq, srv ArduinoCore_BoardUninstallServer) error { + return status.Errorf(codes.Unimplemented, "method BoardUninstall not implemented") +} +func (*UnimplementedArduinoCoreServer) BoardSearch(ctx context.Context, req *BoardSearchReq) (*BoardSearchResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method BoardSearch not implemented") +} +func (*UnimplementedArduinoCoreServer) Compile(req *CompileReq, srv ArduinoCore_CompileServer) error { + return status.Errorf(codes.Unimplemented, "method Compile not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformInstall(req *PlatformInstallReq, srv ArduinoCore_PlatformInstallServer) error { + return status.Errorf(codes.Unimplemented, "method PlatformInstall not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformDownload(req *PlatformDownloadReq, srv ArduinoCore_PlatformDownloadServer) error { + return status.Errorf(codes.Unimplemented, "method PlatformDownload not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformUninstall(req *PlatformUninstallReq, srv ArduinoCore_PlatformUninstallServer) error { + return status.Errorf(codes.Unimplemented, "method PlatformUninstall not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformUpgrade(req *PlatformUpgradeReq, srv ArduinoCore_PlatformUpgradeServer) error { + return status.Errorf(codes.Unimplemented, "method PlatformUpgrade not implemented") +} +func (*UnimplementedArduinoCoreServer) Upload(req *UploadReq, srv ArduinoCore_UploadServer) error { + return status.Errorf(codes.Unimplemented, "method Upload not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformSearch(ctx context.Context, req *PlatformSearchReq) (*PlatformSearchResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method PlatformSearch not implemented") +} +func (*UnimplementedArduinoCoreServer) PlatformList(ctx context.Context, req *PlatformListReq) (*PlatformListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method PlatformList not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryDownload(req *LibraryDownloadReq, srv ArduinoCore_LibraryDownloadServer) error { + return status.Errorf(codes.Unimplemented, "method LibraryDownload not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryInstall(req *LibraryInstallReq, srv ArduinoCore_LibraryInstallServer) error { + return status.Errorf(codes.Unimplemented, "method LibraryInstall not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryUninstall(req *LibraryUninstallReq, srv ArduinoCore_LibraryUninstallServer) error { + return status.Errorf(codes.Unimplemented, "method LibraryUninstall not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryUpgradeAll(req *LibraryUpgradeAllReq, srv ArduinoCore_LibraryUpgradeAllServer) error { + return status.Errorf(codes.Unimplemented, "method LibraryUpgradeAll not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryResolveDependencies(ctx context.Context, req *LibraryResolveDependenciesReq) (*LibraryResolveDependenciesResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method LibraryResolveDependencies not implemented") +} +func (*UnimplementedArduinoCoreServer) LibrarySearch(ctx context.Context, req *LibrarySearchReq) (*LibrarySearchResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method LibrarySearch not implemented") +} +func (*UnimplementedArduinoCoreServer) LibraryList(ctx context.Context, req *LibraryListReq) (*LibraryListResp, error) { + return nil, status.Errorf(codes.Unimplemented, "method LibraryList not implemented") +} + func RegisterArduinoCoreServer(s *grpc.Server, srv ArduinoCoreServer) { s.RegisterService(&_ArduinoCore_serviceDesc, srv) } @@ -1472,6 +1644,66 @@ func _ArduinoCore_BoardListAll_Handler(srv interface{}, ctx context.Context, dec return interceptor(ctx, in, info, handler) } +func _ArduinoCore_BoardInstall_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(BoardInstallReq) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ArduinoCoreServer).BoardInstall(m, &arduinoCoreBoardInstallServer{stream}) +} + +type ArduinoCore_BoardInstallServer interface { + Send(*BoardInstallResp) error + grpc.ServerStream +} + +type arduinoCoreBoardInstallServer struct { + grpc.ServerStream +} + +func (x *arduinoCoreBoardInstallServer) Send(m *BoardInstallResp) error { + return x.ServerStream.SendMsg(m) +} + +func _ArduinoCore_BoardUninstall_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(BoardUninstallReq) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(ArduinoCoreServer).BoardUninstall(m, &arduinoCoreBoardUninstallServer{stream}) +} + +type ArduinoCore_BoardUninstallServer interface { + Send(*BoardUninstallResp) error + grpc.ServerStream +} + +type arduinoCoreBoardUninstallServer struct { + grpc.ServerStream +} + +func (x *arduinoCoreBoardUninstallServer) Send(m *BoardUninstallResp) error { + return x.ServerStream.SendMsg(m) +} + +func _ArduinoCore_BoardSearch_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(BoardSearchReq) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(ArduinoCoreServer).BoardSearch(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/cc.arduino.cli.commands.ArduinoCore/BoardSearch", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(ArduinoCoreServer).BoardSearch(ctx, req.(*BoardSearchReq)) + } + return interceptor(ctx, in, info, handler) +} + func _ArduinoCore_Compile_Handler(srv interface{}, stream grpc.ServerStream) error { m := new(CompileReq) if err := stream.RecvMsg(m); err != nil { @@ -1800,6 +2032,10 @@ var _ArduinoCore_serviceDesc = grpc.ServiceDesc{ MethodName: "BoardListAll", Handler: _ArduinoCore_BoardListAll_Handler, }, + { + MethodName: "BoardSearch", + Handler: _ArduinoCore_BoardSearch_Handler, + }, { MethodName: "PlatformSearch", Handler: _ArduinoCore_PlatformSearch_Handler, @@ -1842,6 +2078,16 @@ var _ArduinoCore_serviceDesc = grpc.ServiceDesc{ Handler: _ArduinoCore_BoardAttach_Handler, ServerStreams: true, }, + { + StreamName: "BoardInstall", + Handler: _ArduinoCore_BoardInstall_Handler, + ServerStreams: true, + }, + { + StreamName: "BoardUninstall", + Handler: _ArduinoCore_BoardUninstall_Handler, + ServerStreams: true, + }, { StreamName: "Compile", Handler: _ArduinoCore_Compile_Handler, diff --git a/rpc/commands/commands.proto b/rpc/commands/commands.proto index f2201d0f4f3..1f05ef0df94 100644 --- a/rpc/commands/commands.proto +++ b/rpc/commands/commands.proto @@ -65,6 +65,12 @@ service ArduinoCore { // List all the boards provided by installed platforms. rpc BoardListAll(BoardListAllReq) returns (BoardListAllResp); + rpc BoardInstall(BoardInstallReq) returns (stream BoardInstallResp); + + rpc BoardUninstall(BoardUninstallReq) returns (stream BoardUninstallResp); + + rpc BoardSearch(BoardSearchReq) returns (BoardSearchResp); + rpc Compile(CompileReq) returns (stream CompileResp); // Download and install a platform and its tool dependencies. diff --git a/rpc/debug/debug.pb.go b/rpc/debug/debug.pb.go index 1b80d774d02..0ef7d3c0fb4 100644 --- a/rpc/debug/debug.pb.go +++ b/rpc/debug/debug.pb.go @@ -9,6 +9,8 @@ import ( commands "github.com/arduino/arduino-cli/rpc/commands" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -252,11 +254,11 @@ var fileDescriptor_5ae24eab94cb53d5 = []byte{ // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConn +var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +const _ = grpc.SupportPackageIsVersion6 // DebugClient is the client API for Debug service. // @@ -266,10 +268,10 @@ type DebugClient interface { } type debugClient struct { - cc *grpc.ClientConn + cc grpc.ClientConnInterface } -func NewDebugClient(cc *grpc.ClientConn) DebugClient { +func NewDebugClient(cc grpc.ClientConnInterface) DebugClient { return &debugClient{cc} } @@ -309,6 +311,14 @@ type DebugServer interface { Debug(Debug_DebugServer) error } +// UnimplementedDebugServer can be embedded to have forward compatible implementations. +type UnimplementedDebugServer struct { +} + +func (*UnimplementedDebugServer) Debug(srv Debug_DebugServer) error { + return status.Errorf(codes.Unimplemented, "method Debug not implemented") +} + func RegisterDebugServer(s *grpc.Server, srv DebugServer) { s.RegisterService(&_Debug_serviceDesc, srv) } diff --git a/rpc/monitor/monitor.pb.go b/rpc/monitor/monitor.pb.go index 74dc8680d57..3f68a33920f 100644 --- a/rpc/monitor/monitor.pb.go +++ b/rpc/monitor/monitor.pb.go @@ -9,6 +9,8 @@ import ( proto "github.com/golang/protobuf/proto" _struct "github.com/golang/protobuf/ptypes/struct" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -270,11 +272,11 @@ var fileDescriptor_94d5950496a7550d = []byte{ // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConn +var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +const _ = grpc.SupportPackageIsVersion6 // MonitorClient is the client API for Monitor service. // @@ -286,10 +288,10 @@ type MonitorClient interface { } type monitorClient struct { - cc *grpc.ClientConn + cc grpc.ClientConnInterface } -func NewMonitorClient(cc *grpc.ClientConn) MonitorClient { +func NewMonitorClient(cc grpc.ClientConnInterface) MonitorClient { return &monitorClient{cc} } @@ -331,6 +333,14 @@ type MonitorServer interface { StreamingOpen(Monitor_StreamingOpenServer) error } +// UnimplementedMonitorServer can be embedded to have forward compatible implementations. +type UnimplementedMonitorServer struct { +} + +func (*UnimplementedMonitorServer) StreamingOpen(srv Monitor_StreamingOpenServer) error { + return status.Errorf(codes.Unimplemented, "method StreamingOpen not implemented") +} + func RegisterMonitorServer(s *grpc.Server, srv MonitorServer) { s.RegisterService(&_Monitor_serviceDesc, srv) } diff --git a/rpc/settings/settings.pb.go b/rpc/settings/settings.pb.go index fc5a583eb53..212048e452b 100644 --- a/rpc/settings/settings.pb.go +++ b/rpc/settings/settings.pb.go @@ -8,6 +8,8 @@ import ( fmt "fmt" proto "github.com/golang/protobuf/proto" grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" math "math" ) @@ -279,11 +281,11 @@ var fileDescriptor_a4bfd59e429426d0 = []byte{ // Reference imports to suppress errors if they are not otherwise used. var _ context.Context -var _ grpc.ClientConn +var _ grpc.ClientConnInterface // This is a compile-time assertion to ensure that this generated file // is compatible with the grpc package it is being compiled against. -const _ = grpc.SupportPackageIsVersion4 +const _ = grpc.SupportPackageIsVersion6 // SettingsClient is the client API for Settings service. // @@ -300,10 +302,10 @@ type SettingsClient interface { } type settingsClient struct { - cc *grpc.ClientConn + cc grpc.ClientConnInterface } -func NewSettingsClient(cc *grpc.ClientConn) SettingsClient { +func NewSettingsClient(cc grpc.ClientConnInterface) SettingsClient { return &settingsClient{cc} } @@ -355,6 +357,23 @@ type SettingsServer interface { SetValue(context.Context, *Value) (*SetValueResponse, error) } +// UnimplementedSettingsServer can be embedded to have forward compatible implementations. +type UnimplementedSettingsServer struct { +} + +func (*UnimplementedSettingsServer) GetAll(ctx context.Context, req *GetAllRequest) (*RawData, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetAll not implemented") +} +func (*UnimplementedSettingsServer) Merge(ctx context.Context, req *RawData) (*MergeResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Merge not implemented") +} +func (*UnimplementedSettingsServer) GetValue(ctx context.Context, req *GetValueRequest) (*Value, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetValue not implemented") +} +func (*UnimplementedSettingsServer) SetValue(ctx context.Context, req *Value) (*SetValueResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method SetValue not implemented") +} + func RegisterSettingsServer(s *grpc.Server, srv SettingsServer) { s.RegisterService(&_Settings_serviceDesc, srv) } From 18097cb18c44d5694e5e43eb24edb5e6b5ac1dec Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 19 May 2020 17:54:39 +0200 Subject: [PATCH 04/10] Added 'board search' command and sketched board registry --- .../cores/packagemanager/package_manager.go | 4 + arduino/cores/packagemanager/registry.go | 92 +++++++ cli/board/search.go | 28 ++- commands/board/search.go | 27 +- rpc/commands/board.pb.go | 235 +++++++++++------- rpc/commands/board.proto | 9 +- 6 files changed, 301 insertions(+), 94 deletions(-) create mode 100644 arduino/cores/packagemanager/registry.go diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 7c7437d0384..5ca1521d5e0 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -38,6 +38,7 @@ import ( type PackageManager struct { Log logrus.FieldLogger Packages cores.Packages + Registry *BoardsRegistry IndexDir *paths.Path PackagesDir *paths.Path DownloadDir *paths.Path @@ -47,9 +48,12 @@ type PackageManager struct { // NewPackageManager returns a new instance of the PackageManager func NewPackageManager(indexDir, packagesDir, downloadDir, tempDir *paths.Path) *PackageManager { + registry, _ := LoadBoardRegistry(nil) // TODO ... + return &PackageManager{ Log: logrus.StandardLogger(), Packages: cores.NewPackages(), + Registry: registry, IndexDir: indexDir, PackagesDir: packagesDir, DownloadDir: downloadDir, diff --git a/arduino/cores/packagemanager/registry.go b/arduino/cores/packagemanager/registry.go new file mode 100644 index 00000000000..15b1ae7a9d1 --- /dev/null +++ b/arduino/cores/packagemanager/registry.go @@ -0,0 +1,92 @@ +// This file is part of arduino-cli. +// +// Copyright 2020 ARDUINO SA (http://www.arduino.cc/) +// +// This software is released under the GNU General Public License version 3, +// which covers the main part of arduino-cli. +// The terms of this license can be found at: +// https://www.gnu.org/licenses/gpl-3.0.en.html +// +// You can be released from the requirements of the above licenses by purchasing +// a commercial license. Buying such a license is mandatory if you want to +// modify or otherwise use the software for commercial activities involving the +// Arduino software without disclosing the source code of your own applications. +// To purchase a commercial license, send an email to license@arduino.cc. + +package packagemanager + +import ( + "net/url" + "strings" + + "github.com/arduino/arduino-cli/arduino/cores" + "github.com/arduino/go-paths-helper" +) + +type BoardsRegistry struct { + Boards []*RegisteredBoard + fqbnToBoard map[string]*RegisteredBoard + aliastToBoard map[string]*RegisteredBoard +} + +type RegisteredBoard struct { + FQBN *cores.FQBN + Alias string + Name string + ExternalPlatformURL *url.URL +} + +func NewBoardRegistry() *BoardsRegistry { + return &BoardsRegistry{ + Boards: []*RegisteredBoard{}, + fqbnToBoard: map[string]*RegisteredBoard{}, + aliastToBoard: map[string]*RegisteredBoard{}, + } +} + +func (r *BoardsRegistry) addBoard(board *RegisteredBoard) { + r.Boards = append(r.Boards, board) + r.fqbnToBoard[board.FQBN.String()] = board + r.aliastToBoard[board.Alias] = board +} + +func (r *BoardsRegistry) FindBoard(fqbnOrAlias string) *RegisteredBoard { + if found, ok := r.aliastToBoard[fqbnOrAlias]; ok { + return found + } + if found, ok := r.fqbnToBoard[fqbnOrAlias]; ok { + return found + } + return nil +} + +func (r *BoardsRegistry) SearchBoards(query string) []*RegisteredBoard { + found := []*RegisteredBoard{} + contains := func(a string, b string) bool { + return strings.Contains(strings.ToLower(a), strings.ToLower(b)) + } + for _, board := range r.Boards { + if contains(board.Name, query) || contains(board.Alias, query) { + found = append(found, board) + } + } + return found +} + +func LoadBoardRegistry(file *paths.Path) (*BoardsRegistry, error) { + + // TODO... + + fake := NewBoardRegistry() + fake.addBoard(&RegisteredBoard{ + Name: "Arduino Uno", + FQBN: cores.MustParseFQBN("arduino:avr:uno"), + Alias: "uno", + }) + fake.addBoard(&RegisteredBoard{ + Name: "Arduino Zero", + FQBN: cores.MustParseFQBN("arduino:samd:arduino_zero_edbg"), + Alias: "zero", + }) + return fake, nil +} diff --git a/cli/board/search.go b/cli/board/search.go index f5892364f3d..4944795529f 100644 --- a/cli/board/search.go +++ b/cli/board/search.go @@ -17,8 +17,8 @@ package board import ( "context" - "fmt" "os" + "sort" "strings" "github.com/arduino/arduino-cli/cli/errorcodes" @@ -26,6 +26,7 @@ import ( "github.com/arduino/arduino-cli/cli/instance" "github.com/arduino/arduino-cli/commands/board" rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/arduino/arduino-cli/table" "github.com/sirupsen/logrus" "github.com/spf13/cobra" ) @@ -59,17 +60,17 @@ func runSearchCommand(cmd *cobra.Command, args []string) { Query: query, } if res, err := board.Search(context.Background(), boardSearchReq); err != nil { - feedback.Errorf("Error installing board: %v", err) + feedback.Errorf("Error searching for board: %v", err) os.Exit(errorcodes.ErrGeneric) } else { - feedback.PrintResult(searchResult{res}) + feedback.PrintResult(searchResult{res.GetBoards()}) } } // output from this command requires special formatting, let's create a dedicated // feedback.Result implementation type searchResult struct { - boards *rpc.BoardSearchResp + boards []*rpc.SearchedBoard } func (res searchResult) Data() interface{} { @@ -77,8 +78,23 @@ func (res searchResult) Data() interface{} { } func (res searchResult) String() string { + if len(res.boards) == 0 { + return "No boards found." + } - // TODO + sort.Slice(res.boards, func(i, j int) bool { + x, y := res.boards[i], res.boards[j] + return x.GetName() < y.GetName() + }) - return fmt.Sprintf("%+v\n", res.boards) + t := table.New() + t.SetHeader("Board", "Board Name", "FQBN", "Platform") + for _, board := range res.boards { + platform := "Arduino" + if board.GetExternalPlatformUrl() != "" { + platform = "3rd party" + } + t.AddRow(board.GetAlias(), board.GetName(), board.GetFqbn(), platform) + } + return t.Render() } diff --git a/commands/board/search.go b/commands/board/search.go index 9294ef6ece5..9bc0fcef328 100644 --- a/commands/board/search.go +++ b/commands/board/search.go @@ -18,13 +18,34 @@ package board import ( "context" + "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/pkg/errors" ) // Search FIXMEDOC func Search(ctx context.Context, req *rpc.BoardSearchReq) (r *rpc.BoardSearchResp, e error) { + pm := commands.GetPackageManager(req.GetInstance().GetId()) + if pm == nil { + return nil, errors.New("invalid instance") + } - // TODO - - return nil, nil + boards := pm.Registry.SearchBoards(req.GetQuery()) + resBoards := []*rpc.SearchedBoard{} + for _, board := range boards { + extURL := "" + if board.ExternalPlatformURL != nil { + extURL = board.ExternalPlatformURL.String() + } + resBoards = append(resBoards, &rpc.SearchedBoard{ + Name: board.Name, + Alias: board.Alias, + Fqbn: board.FQBN.String(), + ExternalPlatformUrl: extURL, + }) + } + res := &rpc.BoardSearchResp{ + Boards: resBoards, + } + return res, nil } diff --git a/rpc/commands/board.pb.go b/rpc/commands/board.pb.go index 67e413a7ffa..d5fb8843526 100644 --- a/rpc/commands/board.pb.go +++ b/rpc/commands/board.pb.go @@ -1195,10 +1195,10 @@ func (m *BoardSearchReq) GetQuery() string { } type BoardSearchResp struct { - Fqbn []string `protobuf:"bytes,1,rep,name=fqbn,proto3" json:"fqbn,omitempty"` - XXX_NoUnkeyedLiteral struct{} `json:"-"` - XXX_unrecognized []byte `json:"-"` - XXX_sizecache int32 `json:"-"` + Boards []*SearchedBoard `protobuf:"bytes,1,rep,name=boards,proto3" json:"boards,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` } func (m *BoardSearchResp) Reset() { *m = BoardSearchResp{} } @@ -1226,13 +1226,76 @@ func (m *BoardSearchResp) XXX_DiscardUnknown() { var xxx_messageInfo_BoardSearchResp proto.InternalMessageInfo -func (m *BoardSearchResp) GetFqbn() []string { +func (m *BoardSearchResp) GetBoards() []*SearchedBoard { if m != nil { - return m.Fqbn + return m.Boards } return nil } +type SearchedBoard struct { + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Alias string `protobuf:"bytes,2,opt,name=alias,proto3" json:"alias,omitempty"` + Fqbn string `protobuf:"bytes,3,opt,name=fqbn,proto3" json:"fqbn,omitempty"` + ExternalPlatformUrl string `protobuf:"bytes,4,opt,name=externalPlatformUrl,proto3" json:"externalPlatformUrl,omitempty"` + XXX_NoUnkeyedLiteral struct{} `json:"-"` + XXX_unrecognized []byte `json:"-"` + XXX_sizecache int32 `json:"-"` +} + +func (m *SearchedBoard) Reset() { *m = SearchedBoard{} } +func (m *SearchedBoard) String() string { return proto.CompactTextString(m) } +func (*SearchedBoard) ProtoMessage() {} +func (*SearchedBoard) Descriptor() ([]byte, []int) { + return fileDescriptor_0882eeddaa6507ab, []int{21} +} + +func (m *SearchedBoard) XXX_Unmarshal(b []byte) error { + return xxx_messageInfo_SearchedBoard.Unmarshal(m, b) +} +func (m *SearchedBoard) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) { + return xxx_messageInfo_SearchedBoard.Marshal(b, m, deterministic) +} +func (m *SearchedBoard) XXX_Merge(src proto.Message) { + xxx_messageInfo_SearchedBoard.Merge(m, src) +} +func (m *SearchedBoard) XXX_Size() int { + return xxx_messageInfo_SearchedBoard.Size(m) +} +func (m *SearchedBoard) XXX_DiscardUnknown() { + xxx_messageInfo_SearchedBoard.DiscardUnknown(m) +} + +var xxx_messageInfo_SearchedBoard proto.InternalMessageInfo + +func (m *SearchedBoard) GetName() string { + if m != nil { + return m.Name + } + return "" +} + +func (m *SearchedBoard) GetAlias() string { + if m != nil { + return m.Alias + } + return "" +} + +func (m *SearchedBoard) GetFqbn() string { + if m != nil { + return m.Fqbn + } + return "" +} + +func (m *SearchedBoard) GetExternalPlatformUrl() string { + if m != nil { + return m.ExternalPlatformUrl + } + return "" +} + type DetectedPort struct { // Address of the port (e.g., `serial:///dev/ttyACM0`). Address string `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` @@ -1251,7 +1314,7 @@ func (m *DetectedPort) Reset() { *m = DetectedPort{} } func (m *DetectedPort) String() string { return proto.CompactTextString(m) } func (*DetectedPort) ProtoMessage() {} func (*DetectedPort) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{21} + return fileDescriptor_0882eeddaa6507ab, []int{22} } func (m *DetectedPort) XXX_Unmarshal(b []byte) error { @@ -1314,7 +1377,7 @@ func (m *BoardListAllReq) Reset() { *m = BoardListAllReq{} } func (m *BoardListAllReq) String() string { return proto.CompactTextString(m) } func (*BoardListAllReq) ProtoMessage() {} func (*BoardListAllReq) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{22} + return fileDescriptor_0882eeddaa6507ab, []int{23} } func (m *BoardListAllReq) XXX_Unmarshal(b []byte) error { @@ -1361,7 +1424,7 @@ func (m *BoardListAllResp) Reset() { *m = BoardListAllResp{} } func (m *BoardListAllResp) String() string { return proto.CompactTextString(m) } func (*BoardListAllResp) ProtoMessage() {} func (*BoardListAllResp) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{23} + return fileDescriptor_0882eeddaa6507ab, []int{24} } func (m *BoardListAllResp) XXX_Unmarshal(b []byte) error { @@ -1403,7 +1466,7 @@ func (m *BoardListItem) Reset() { *m = BoardListItem{} } func (m *BoardListItem) String() string { return proto.CompactTextString(m) } func (*BoardListItem) ProtoMessage() {} func (*BoardListItem) Descriptor() ([]byte, []int) { - return fileDescriptor_0882eeddaa6507ab, []int{24} + return fileDescriptor_0882eeddaa6507ab, []int{25} } func (m *BoardListItem) XXX_Unmarshal(b []byte) error { @@ -1460,6 +1523,7 @@ func init() { proto.RegisterType((*BoardUninstallResp)(nil), "cc.arduino.cli.commands.BoardUninstallResp") proto.RegisterType((*BoardSearchReq)(nil), "cc.arduino.cli.commands.BoardSearchReq") proto.RegisterType((*BoardSearchResp)(nil), "cc.arduino.cli.commands.BoardSearchResp") + proto.RegisterType((*SearchedBoard)(nil), "cc.arduino.cli.commands.SearchedBoard") proto.RegisterType((*DetectedPort)(nil), "cc.arduino.cli.commands.DetectedPort") proto.RegisterType((*BoardListAllReq)(nil), "cc.arduino.cli.commands.BoardListAllReq") proto.RegisterType((*BoardListAllResp)(nil), "cc.arduino.cli.commands.BoardListAllResp") @@ -1469,78 +1533,81 @@ func init() { func init() { proto.RegisterFile("commands/board.proto", fileDescriptor_0882eeddaa6507ab) } var fileDescriptor_0882eeddaa6507ab = []byte{ - // 1166 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xef, 0x6e, 0x1b, 0x45, - 0x10, 0xd7, 0xd5, 0x76, 0xec, 0x8c, 0x9d, 0x34, 0x59, 0x02, 0x9c, 0x82, 0x08, 0xe9, 0x89, 0xa0, - 0x40, 0x54, 0x47, 0x04, 0x24, 0xa4, 0xf2, 0x47, 0x4a, 0xb0, 0x2a, 0x5c, 0x85, 0x62, 0x36, 0x7f, - 0x84, 0x10, 0xc8, 0x5d, 0xdf, 0xad, 0xed, 0x55, 0xce, 0xb7, 0x97, 0xdd, 0x75, 0xaa, 0xf2, 0x02, - 0x88, 0x47, 0xe0, 0x19, 0xf8, 0x8a, 0x10, 0x8f, 0xc0, 0x37, 0x5e, 0x09, 0xed, 0xbf, 0x8b, 0x1d, - 0xf7, 0xa8, 0x28, 0xe9, 0x27, 0xcf, 0xfc, 0x3c, 0xb3, 0xbb, 0x33, 0xf3, 0x9b, 0x99, 0x83, 0x8d, - 0x98, 0x4f, 0x26, 0x24, 0x4b, 0xe4, 0xfe, 0x80, 0x13, 0x91, 0xb4, 0x73, 0xc1, 0x15, 0x47, 0x6f, - 0xc6, 0x71, 0x9b, 0x88, 0x64, 0xca, 0x32, 0xde, 0x8e, 0x53, 0xd6, 0xf6, 0x46, 0x9b, 0xaf, 0x17, - 0xe6, 0x5a, 0xe0, 0x99, 0xb5, 0x8f, 0x12, 0xb8, 0x7b, 0xa4, 0xdd, 0x3b, 0x54, 0x11, 0x96, 0x4a, - 0x4c, 0x2f, 0xd1, 0xe7, 0xd0, 0x60, 0x99, 0x54, 0x24, 0x8b, 0x69, 0x18, 0x6c, 0x07, 0xbb, 0xcd, - 0x83, 0x7b, 0xed, 0x92, 0x53, 0xdb, 0x5d, 0x67, 0x88, 0x0b, 0x17, 0x84, 0xa0, 0x3a, 0xbc, 0x1c, - 0x64, 0xe1, 0x9d, 0xed, 0x60, 0x77, 0x19, 0x1b, 0x39, 0xfa, 0xab, 0x0a, 0x6b, 0xf3, 0xd7, 0xc8, - 0xbc, 0x30, 0x0c, 0xae, 0x0d, 0x35, 0x96, 0x91, 0x09, 0xf5, 0xce, 0x5a, 0x46, 0x21, 0xd4, 0xaf, - 0xa8, 0x90, 0x8c, 0x67, 0x61, 0xc5, 0xc0, 0x5e, 0x45, 0x11, 0xb4, 0x72, 0xc1, 0x73, 0x2a, 0x14, - 0xa3, 0xb2, 0x9b, 0x84, 0x55, 0xf3, 0xf7, 0x1c, 0x86, 0x36, 0xa0, 0x46, 0x52, 0x46, 0x64, 0x58, - 0x33, 0x7f, 0x5a, 0x05, 0x6d, 0x42, 0x83, 0x0f, 0x87, 0x2c, 0x66, 0x24, 0x0d, 0x97, 0xb6, 0x83, - 0xdd, 0x06, 0x2e, 0x74, 0xf4, 0x06, 0x2c, 0xe5, 0x2c, 0xe3, 0x53, 0x15, 0xd6, 0x8d, 0x8b, 0xd3, - 0xd0, 0x03, 0xa8, 0xe7, 0x24, 0xbe, 0x20, 0x23, 0x1a, 0x36, 0x4c, 0x5a, 0xb6, 0x4b, 0xd3, 0xd2, - 0xb3, 0x76, 0xd8, 0x3b, 0xa0, 0x23, 0x68, 0xe4, 0x29, 0x51, 0x43, 0x2e, 0x26, 0xe1, 0xb2, 0x71, - 0x7e, 0xaf, 0xd4, 0xd9, 0x24, 0xaa, 0xe7, 0xac, 0x71, 0xe1, 0x87, 0xbe, 0x83, 0x75, 0xc5, 0x79, - 0x2a, 0x3b, 0x34, 0xa7, 0x59, 0x42, 0xb3, 0x98, 0x51, 0x19, 0xc2, 0x76, 0x65, 0xb7, 0x79, 0xf0, - 0x41, 0xe9, 0x61, 0xa7, 0x37, 0x3d, 0xf0, 0xe2, 0x21, 0xe8, 0x18, 0x56, 0x63, 0x9e, 0x0d, 0xd9, - 0xa8, 0xcf, 0x73, 0xc5, 0x78, 0x26, 0xc3, 0xa6, 0x39, 0x76, 0xa7, 0xf4, 0xd8, 0x2f, 0x8d, 0xf9, - 0x37, 0xc6, 0x1a, 0xaf, 0xc4, 0x33, 0x9a, 0x44, 0x3f, 0xc0, 0x6b, 0x2c, 0xa1, 0x99, 0x62, 0x43, - 0x16, 0x13, 0x0d, 0xf5, 0x73, 0x41, 0x87, 0x61, 0xcb, 0x1c, 0xb9, 0x57, 0x4e, 0xa5, 0x39, 0x9f, - 0x9e, 0xa0, 0x43, 0x8c, 0xd8, 0x02, 0x16, 0x3d, 0x02, 0xb4, 0x68, 0x89, 0x3e, 0x86, 0xda, 0x54, - 0x0e, 0xba, 0x1d, 0x47, 0xd8, 0xad, 0xd2, 0x5b, 0xce, 0x4e, 0x8e, 0xba, 0x1d, 0x6c, 0x8d, 0xa3, - 0x3d, 0xa8, 0x19, 0x1d, 0xad, 0x41, 0xe5, 0xdc, 0x39, 0x2f, 0x63, 0x2d, 0x6a, 0xa4, 0xd7, 0xed, - 0x38, 0x1e, 0x6a, 0x31, 0xfa, 0x33, 0x80, 0xba, 0xab, 0x2b, 0xda, 0x02, 0x98, 0x10, 0x96, 0x29, - 0xc2, 0x32, 0x2a, 0x9c, 0xdb, 0x0c, 0xa2, 0xbd, 0xa7, 0x22, 0xf5, 0xde, 0x53, 0x91, 0x6a, 0x8f, - 0xa7, 0x74, 0x20, 0x99, 0xa2, 0x67, 0xf8, 0xd8, 0xf1, 0x78, 0x06, 0xd1, 0x34, 0xa5, 0x13, 0xc2, - 0x52, 0xc7, 0x61, 0xab, 0x14, 0xed, 0x50, 0x9b, 0x69, 0x87, 0x0f, 0xa1, 0x3a, 0xa6, 0x69, 0x6e, - 0x68, 0xdb, 0x3c, 0x78, 0xbb, 0x34, 0xd2, 0xaf, 0x68, 0x9a, 0x63, 0x63, 0x1a, 0x6d, 0x41, 0x55, - 0x6b, 0x9a, 0xd9, 0x3c, 0x4b, 0x59, 0x46, 0xdd, 0x93, 0x9d, 0x16, 0xfd, 0x1d, 0xc0, 0xca, 0x1c, - 0xeb, 0x74, 0x67, 0x11, 0x11, 0x8f, 0x99, 0xa2, 0xb1, 0x9a, 0x0a, 0x6f, 0x3f, 0x87, 0xe9, 0x1e, - 0x8a, 0x89, 0xa2, 0x23, 0x2e, 0x9e, 0xb9, 0x48, 0x0b, 0xdd, 0x27, 0xa0, 0x72, 0x9d, 0x80, 0x5d, - 0xb8, 0x6b, 0xbc, 0xaf, 0xe8, 0x43, 0x96, 0xd2, 0xc7, 0x3a, 0x2a, 0x1b, 0xea, 0x4d, 0xd8, 0x9c, - 0x3b, 0xa6, 0xf1, 0x85, 0x9c, 0x4e, 0x5c, 0xe0, 0x85, 0xae, 0x13, 0x22, 0xd9, 0x4f, 0xd4, 0x04, - 0x5f, 0xc1, 0x46, 0x2e, 0x92, 0x54, 0xbf, 0x4e, 0x52, 0xf4, 0x6b, 0x00, 0xeb, 0x0b, 0xd4, 0xd7, - 0x27, 0xbb, 0x86, 0xf4, 0x45, 0x2b, 0xf4, 0xff, 0x38, 0x79, 0x1e, 0x40, 0x5d, 0x3e, 0x93, 0x8a, - 0x4e, 0x64, 0x58, 0x35, 0xbc, 0x2e, 0x9f, 0x05, 0x27, 0xd6, 0x0e, 0x7b, 0x87, 0xe8, 0x97, 0x00, - 0xea, 0x0e, 0x9c, 0x8b, 0x35, 0x58, 0x8c, 0x75, 0xcc, 0xa5, 0xf2, 0x2f, 0xd2, 0xf2, 0xf3, 0xb2, - 0x58, 0x79, 0x7e, 0x16, 0x5d, 0x05, 0xaa, 0xd7, 0x15, 0xf0, 0xb9, 0xab, 0x5d, 0xe7, 0x2e, 0xfa, - 0x39, 0x80, 0xd6, 0x6c, 0x2f, 0x1b, 0x8a, 0x18, 0xa9, 0xa0, 0x88, 0xc5, 0xef, 0x41, 0xcb, 0x4a, - 0xfd, 0x94, 0x0c, 0xa8, 0xa7, 0x76, 0xd3, 0x62, 0xc7, 0x1a, 0x42, 0x9f, 0xc1, 0xd2, 0x15, 0x49, - 0xa7, 0x54, 0x86, 0x15, 0x93, 0x92, 0x77, 0x5f, 0x30, 0x3d, 0xce, 0xb5, 0x31, 0x76, 0x3e, 0xd1, - 0x13, 0x68, 0xce, 0xc0, 0xba, 0x1f, 0xcc, 0x1f, 0xee, 0x19, 0x56, 0x41, 0xef, 0x40, 0xd3, 0x08, - 0x73, 0x8f, 0x00, 0x03, 0xd9, 0x37, 0x6c, 0x42, 0x43, 0xd2, 0x94, 0xc6, 0x8a, 0x26, 0x26, 0x31, - 0x0d, 0x5c, 0xe8, 0xd1, 0xef, 0x01, 0xac, 0x1a, 0x96, 0x1f, 0x2a, 0x45, 0xe2, 0xf1, 0x2d, 0xac, - 0xba, 0xb7, 0x60, 0xd9, 0xec, 0xde, 0xfe, 0x54, 0x30, 0xdf, 0x02, 0x06, 0x38, 0x13, 0x4c, 0xbf, - 0x55, 0x5e, 0x50, 0x15, 0x8f, 0xfb, 0x39, 0x51, 0x63, 0xdf, 0xf2, 0x16, 0xea, 0x11, 0x35, 0x46, - 0x3b, 0xb0, 0x2a, 0xa9, 0x2e, 0x5b, 0x5f, 0xb1, 0x09, 0xd5, 0xfb, 0xc6, 0x16, 0x6b, 0xc5, 0xa2, - 0xa7, 0x16, 0x8c, 0x7e, 0x74, 0x1b, 0xda, 0xbf, 0x5a, 0xe6, 0xe8, 0x11, 0xac, 0x28, 0x22, 0x2f, - 0xfa, 0xb9, 0xe0, 0x23, 0x41, 0xa5, 0x74, 0x6f, 0x2f, 0x1f, 0xd7, 0xa7, 0x44, 0x5e, 0xf4, 0x9c, - 0x31, 0x6e, 0xa9, 0x19, 0x2d, 0xfa, 0x1a, 0x5a, 0xe6, 0xf8, 0x63, 0x26, 0xd5, 0xff, 0x4f, 0x49, - 0x74, 0xec, 0x26, 0x89, 0x3d, 0x4e, 0xe6, 0xe8, 0x53, 0xa8, 0xe5, 0x5c, 0x28, 0xfd, 0xc6, 0x7f, - 0x5f, 0x29, 0x1d, 0xaa, 0x4c, 0x9d, 0x7a, 0x5c, 0x28, 0x6c, 0x7d, 0xa2, 0xa1, 0x8b, 0xdd, 0x5c, - 0x94, 0xa6, 0xb7, 0x50, 0xb2, 0x0d, 0xa8, 0x99, 0x0a, 0xb9, 0x72, 0x59, 0x25, 0xfa, 0x23, 0x70, - 0xdf, 0x27, 0xc5, 0x45, 0x32, 0x47, 0xe7, 0xb0, 0x9e, 0xf0, 0xa7, 0x59, 0xca, 0x49, 0x72, 0x33, - 0xd3, 0xef, 0x97, 0x47, 0xe1, 0x3c, 0x8a, 0x6c, 0xaf, 0x25, 0x37, 0x90, 0xc5, 0xea, 0xdd, 0x79, - 0xf9, 0xea, 0x8d, 0x61, 0xdd, 0xbc, 0xfb, 0x2c, 0x63, 0xaf, 0x38, 0x45, 0x4f, 0x00, 0xdd, 0xbc, - 0xe9, 0x96, 0x99, 0x48, 0x5d, 0x7b, 0x9e, 0x18, 0xfa, 0xdf, 0x4e, 0x20, 0x97, 0x53, 0x5a, 0x6c, - 0x27, 0xab, 0x44, 0x3b, 0x8e, 0x53, 0xfe, 0x9a, 0xb9, 0x2f, 0xd1, 0x4a, 0xf1, 0xc9, 0xfa, 0x5b, - 0x00, 0xad, 0x59, 0x4a, 0xea, 0x65, 0x40, 0x92, 0xa4, 0x08, 0x72, 0x19, 0x7b, 0xd5, 0xac, 0x15, - 0xfd, 0x31, 0x1d, 0x73, 0x3f, 0x92, 0x0a, 0x5d, 0x37, 0xb9, 0x97, 0xdd, 0xd0, 0xb2, 0x83, 0x60, - 0xc5, 0xa3, 0x76, 0x6e, 0x7d, 0x01, 0x4b, 0x26, 0xcd, 0x7e, 0x9d, 0xbc, 0xe0, 0xeb, 0x50, 0x77, - 0x57, 0x57, 0xd1, 0x09, 0x76, 0x5e, 0xd1, 0xa5, 0x0b, 0x4a, 0xff, 0x71, 0x78, 0x2b, 0x2c, 0xd0, - 0xe3, 0xcb, 0x4e, 0x27, 0x22, 0x46, 0x9a, 0xa3, 0x15, 0x33, 0xbe, 0x0c, 0x74, 0x28, 0x46, 0x32, - 0xc2, 0xae, 0x65, 0x8a, 0x2b, 0x65, 0x3e, 0x13, 0x46, 0xf0, 0x52, 0x61, 0x7c, 0x32, 0x33, 0x3d, - 0xf4, 0x1f, 0xc5, 0x56, 0x0e, 0x66, 0xb6, 0x32, 0x82, 0xea, 0xc3, 0x6f, 0x8f, 0x1e, 0xfb, 0xbd, - 0xa8, 0xe5, 0xa3, 0xfb, 0xdf, 0xef, 0x8d, 0x98, 0x1a, 0x4f, 0x07, 0xfa, 0x86, 0x7d, 0x77, 0xa3, - 0xff, 0xbd, 0x1f, 0xa7, 0x6c, 0x5f, 0xe4, 0xf1, 0xbe, 0xbf, 0x7d, 0xb0, 0x64, 0xb2, 0xff, 0xd1, - 0x3f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x76, 0x9a, 0x55, 0x98, 0x44, 0x0d, 0x00, 0x00, + // 1210 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45, + 0x14, 0xd6, 0xd6, 0x76, 0xec, 0x1c, 0xdb, 0x6d, 0x33, 0x0d, 0xb0, 0x0a, 0x22, 0xa4, 0x2b, 0x8a, + 0x02, 0x51, 0x1d, 0x08, 0x48, 0x48, 0xe5, 0x47, 0x4a, 0xb0, 0x2a, 0x5c, 0x85, 0xe2, 0x6e, 0x7e, + 0x84, 0x10, 0xc8, 0x1d, 0xef, 0x8e, 0xed, 0x51, 0xd6, 0x3b, 0x9b, 0x99, 0x71, 0x4a, 0xb9, 0xe1, + 0x12, 0xf1, 0x08, 0x3c, 0x03, 0xb7, 0x08, 0xf1, 0x08, 0xdc, 0xf1, 0x4a, 0x68, 0xfe, 0xd6, 0xeb, + 0x38, 0x4b, 0x55, 0x08, 0x57, 0x3b, 0xe7, 0xdb, 0x73, 0x66, 0xe6, 0x7c, 0xe7, 0x6f, 0x60, 0x3d, + 0x62, 0xd3, 0x29, 0x4e, 0x63, 0xb1, 0x3b, 0x64, 0x98, 0xc7, 0x9d, 0x8c, 0x33, 0xc9, 0xd0, 0x6b, + 0x51, 0xd4, 0xc1, 0x3c, 0x9e, 0xd1, 0x94, 0x75, 0xa2, 0x84, 0x76, 0x9c, 0xd2, 0xc6, 0x2b, 0xb9, + 0xba, 0x5a, 0xb0, 0xd4, 0xe8, 0x07, 0x31, 0xdc, 0x3a, 0x50, 0xe6, 0x5d, 0x22, 0x31, 0x4d, 0x44, + 0x48, 0xce, 0xd1, 0xa7, 0xd0, 0xa0, 0xa9, 0x90, 0x38, 0x8d, 0x88, 0xef, 0x6d, 0x79, 0xdb, 0xcd, + 0xbd, 0xbb, 0x9d, 0x92, 0x5d, 0x3b, 0x3d, 0xab, 0x18, 0xe6, 0x26, 0x08, 0x41, 0x75, 0x74, 0x3e, + 0x4c, 0xfd, 0x1b, 0x5b, 0xde, 0xf6, 0x6a, 0xa8, 0xd7, 0xc1, 0x9f, 0x55, 0xb8, 0xbd, 0x78, 0x8c, + 0xc8, 0x72, 0x45, 0x6f, 0xae, 0xa8, 0xb0, 0x14, 0x4f, 0x89, 0x33, 0x56, 0x6b, 0xe4, 0x43, 0xfd, + 0x82, 0x70, 0x41, 0x59, 0xea, 0x57, 0x34, 0xec, 0x44, 0x14, 0x40, 0x2b, 0xe3, 0x2c, 0x23, 0x5c, + 0x52, 0x22, 0x7a, 0xb1, 0x5f, 0xd5, 0xbf, 0x17, 0x30, 0xb4, 0x0e, 0x35, 0x9c, 0x50, 0x2c, 0xfc, + 0x9a, 0xfe, 0x69, 0x04, 0xb4, 0x01, 0x0d, 0x36, 0x1a, 0xd1, 0x88, 0xe2, 0xc4, 0x5f, 0xd9, 0xf2, + 0xb6, 0x1b, 0x61, 0x2e, 0xa3, 0x57, 0x61, 0x25, 0xa3, 0x29, 0x9b, 0x49, 0xbf, 0xae, 0x4d, 0xac, + 0x84, 0x1e, 0x40, 0x3d, 0xc3, 0xd1, 0x19, 0x1e, 0x13, 0xbf, 0xa1, 0x69, 0xd9, 0x2a, 0xa5, 0xa5, + 0x6f, 0xf4, 0x42, 0x67, 0x80, 0x0e, 0xa0, 0x91, 0x25, 0x58, 0x8e, 0x18, 0x9f, 0xfa, 0xab, 0xda, + 0xf8, 0xed, 0x52, 0x63, 0x4d, 0x54, 0xdf, 0x6a, 0x87, 0xb9, 0x1d, 0xfa, 0x1a, 0xd6, 0x24, 0x63, + 0x89, 0xe8, 0x92, 0x8c, 0xa4, 0x31, 0x49, 0x23, 0x4a, 0x84, 0x0f, 0x5b, 0x95, 0xed, 0xe6, 0xde, + 0xbb, 0xa5, 0x9b, 0x1d, 0x5f, 0xb6, 0x08, 0x97, 0x37, 0x41, 0x87, 0x70, 0x33, 0x62, 0xe9, 0x88, + 0x8e, 0x07, 0x2c, 0x93, 0x94, 0xa5, 0xc2, 0x6f, 0xea, 0x6d, 0xef, 0x95, 0x6e, 0xfb, 0xb9, 0x56, + 0xff, 0x4a, 0x6b, 0x87, 0xed, 0xa8, 0x20, 0x09, 0xf4, 0x2d, 0xdc, 0xa1, 0x31, 0x49, 0x25, 0x1d, + 0xd1, 0x08, 0x2b, 0x68, 0x90, 0x71, 0x32, 0xf2, 0x5b, 0x7a, 0xcb, 0x9d, 0xf2, 0x54, 0x5a, 0xb0, + 0xe9, 0x73, 0x32, 0x0a, 0x11, 0x5d, 0xc2, 0x82, 0x47, 0x80, 0x96, 0x35, 0xd1, 0x87, 0x50, 0x9b, + 0x89, 0x61, 0xaf, 0x6b, 0x13, 0x76, 0xb3, 0xf4, 0x94, 0x93, 0xa3, 0x83, 0x5e, 0x37, 0x34, 0xca, + 0xc1, 0x0e, 0xd4, 0xb4, 0x8c, 0x6e, 0x43, 0xe5, 0xd4, 0x1a, 0xaf, 0x86, 0x6a, 0xa9, 0x90, 0x7e, + 0xaf, 0x6b, 0xf3, 0x50, 0x2d, 0x83, 0x3f, 0x3c, 0xa8, 0xdb, 0xb8, 0xa2, 0x4d, 0x80, 0x29, 0xa6, + 0xa9, 0xc4, 0x34, 0x25, 0xdc, 0x9a, 0x15, 0x10, 0x65, 0x3d, 0xe3, 0x89, 0xb3, 0x9e, 0xf1, 0x44, + 0x59, 0x3c, 0x23, 0x43, 0x41, 0x25, 0x39, 0x09, 0x0f, 0x6d, 0x1e, 0x17, 0x10, 0x95, 0xa6, 0x64, + 0x8a, 0x69, 0x62, 0x73, 0xd8, 0x08, 0x79, 0x39, 0xd4, 0x0a, 0xe5, 0xf0, 0x3e, 0x54, 0x27, 0x24, + 0xc9, 0x74, 0xda, 0x36, 0xf7, 0xde, 0x28, 0xf5, 0xf4, 0x0b, 0x92, 0x64, 0xa1, 0x56, 0x0d, 0x36, + 0xa1, 0xaa, 0x24, 0x95, 0xd9, 0x2c, 0x4d, 0x68, 0x4a, 0xec, 0x95, 0xad, 0x14, 0xfc, 0xe5, 0x41, + 0x7b, 0x21, 0xeb, 0x54, 0x65, 0x61, 0x1e, 0x4d, 0xa8, 0x24, 0x91, 0x9c, 0x71, 0xa7, 0xbf, 0x80, + 0xa9, 0x1a, 0x8a, 0xb0, 0x24, 0x63, 0xc6, 0x9f, 0x5b, 0x4f, 0x73, 0xd9, 0x11, 0x50, 0x99, 0x13, + 0xb0, 0x0d, 0xb7, 0xb4, 0xf5, 0x05, 0x79, 0x48, 0x13, 0xf2, 0x58, 0x79, 0x65, 0x5c, 0xbd, 0x0c, + 0xeb, 0x7d, 0x27, 0x24, 0x3a, 0x13, 0xb3, 0xa9, 0x75, 0x3c, 0x97, 0x15, 0x21, 0x82, 0xfe, 0x40, + 0xb4, 0xf3, 0x95, 0x50, 0xaf, 0x73, 0x92, 0xea, 0x73, 0x92, 0x82, 0x5f, 0x3c, 0x58, 0x5b, 0x4a, + 0x7d, 0xb5, 0xb3, 0x2d, 0x48, 0x17, 0xb4, 0x5c, 0x7e, 0xc9, 0xce, 0xf3, 0x00, 0xea, 0xe2, 0xb9, + 0x90, 0x64, 0x2a, 0xfc, 0xaa, 0xce, 0xeb, 0xf2, 0x5e, 0x70, 0x64, 0xf4, 0x42, 0x67, 0x10, 0xfc, + 0xec, 0x41, 0xdd, 0x82, 0x0b, 0xbe, 0x7a, 0xcb, 0xbe, 0x4e, 0x98, 0x90, 0xee, 0x46, 0x6a, 0x7d, + 0x15, 0x8b, 0x95, 0xab, 0x59, 0xb4, 0x11, 0xa8, 0xce, 0x23, 0xe0, 0xb8, 0xab, 0xcd, 0xb9, 0x0b, + 0x7e, 0xf2, 0xa0, 0x55, 0xac, 0x65, 0x9d, 0x22, 0x7a, 0x95, 0xa7, 0x88, 0xc1, 0xef, 0x42, 0xcb, + 0xac, 0x06, 0x09, 0x1e, 0x12, 0x97, 0xda, 0x4d, 0x83, 0x1d, 0x2a, 0x08, 0x7d, 0x02, 0x2b, 0x17, + 0x38, 0x99, 0x11, 0xe1, 0x57, 0x34, 0x25, 0x6f, 0xbd, 0xa0, 0x7b, 0x9c, 0x2a, 0xe5, 0xd0, 0xda, + 0x04, 0x4f, 0xa1, 0x59, 0x80, 0x55, 0x3d, 0xe8, 0x1f, 0xf6, 0x1a, 0x46, 0x40, 0x6f, 0x42, 0x53, + 0x2f, 0x16, 0x2e, 0x01, 0x1a, 0x32, 0x77, 0xd8, 0x80, 0x86, 0x20, 0x09, 0x89, 0x24, 0x89, 0x35, + 0x31, 0x8d, 0x30, 0x97, 0x83, 0xdf, 0x3c, 0xb8, 0xa9, 0xb3, 0x7c, 0x5f, 0x4a, 0x1c, 0x4d, 0xae, + 0x61, 0xd4, 0xbd, 0x0e, 0xab, 0x7a, 0xf6, 0x0e, 0x66, 0x9c, 0xba, 0x12, 0xd0, 0xc0, 0x09, 0xa7, + 0xea, 0xae, 0xe2, 0x8c, 0xc8, 0x68, 0x32, 0xc8, 0xb0, 0x9c, 0xb8, 0x92, 0x37, 0x50, 0x1f, 0xcb, + 0x09, 0xba, 0x07, 0x37, 0x05, 0x51, 0x61, 0x1b, 0x48, 0x3a, 0x25, 0x6a, 0xde, 0x98, 0x60, 0xb5, + 0x0d, 0x7a, 0x6c, 0xc0, 0xe0, 0x3b, 0x3b, 0xa1, 0xdd, 0xad, 0x45, 0x86, 0x1e, 0x41, 0x5b, 0x62, + 0x71, 0x36, 0xc8, 0x38, 0x1b, 0x73, 0x22, 0x84, 0xbd, 0x7b, 0x79, 0xbb, 0x3e, 0xc6, 0xe2, 0xac, + 0x6f, 0x95, 0xc3, 0x96, 0x2c, 0x48, 0xc1, 0x97, 0xd0, 0xd2, 0xdb, 0x1f, 0x52, 0x21, 0xff, 0x3b, + 0x25, 0xc1, 0xa1, 0xed, 0x24, 0x66, 0x3b, 0x91, 0xa1, 0x8f, 0xa1, 0x96, 0x31, 0x2e, 0xd5, 0x1d, + 0xff, 0x79, 0xa4, 0x74, 0x89, 0xd4, 0x71, 0xea, 0x33, 0x2e, 0x43, 0x63, 0x13, 0x8c, 0xac, 0xef, + 0xfa, 0xa0, 0x24, 0xb9, 0x86, 0x90, 0xad, 0x43, 0x4d, 0x47, 0xc8, 0x86, 0xcb, 0x08, 0xc1, 0xef, + 0x9e, 0x7d, 0x9f, 0xe4, 0x07, 0x89, 0x0c, 0x9d, 0xc2, 0x5a, 0xcc, 0x9e, 0xa5, 0x09, 0xc3, 0xf1, + 0x65, 0xa6, 0xdf, 0x29, 0xf7, 0xc2, 0x5a, 0xe4, 0x6c, 0xdf, 0x8e, 0x2f, 0x21, 0xcb, 0xd1, 0xbb, + 0xf1, 0xef, 0xa3, 0x37, 0x81, 0x35, 0x7d, 0xef, 0x93, 0x94, 0xfe, 0xcf, 0x14, 0x3d, 0x05, 0x74, + 0xf9, 0xa4, 0x6b, 0xce, 0x44, 0x62, 0xcb, 0xf3, 0x48, 0xa7, 0xff, 0xf5, 0x38, 0x72, 0x3e, 0x23, + 0xf9, 0x74, 0x32, 0x42, 0xf0, 0xc4, 0xe6, 0x94, 0x3b, 0x46, 0x64, 0xe8, 0x33, 0x58, 0xd1, 0x4e, + 0xba, 0x24, 0x2d, 0x7f, 0x9b, 0x19, 0x23, 0x12, 0xeb, 0x1d, 0x42, 0x6b, 0x15, 0xfc, 0x08, 0xed, + 0x85, 0x1f, 0xf9, 0x30, 0xf1, 0x0a, 0xc3, 0x24, 0x7f, 0x88, 0xde, 0x28, 0x3e, 0x44, 0xdd, 0x23, + 0xb8, 0x52, 0x78, 0x04, 0xbf, 0x07, 0x77, 0xc8, 0xf7, 0x92, 0xf0, 0x14, 0x27, 0x6e, 0x20, 0x9f, + 0xe4, 0xad, 0xfc, 0xaa, 0x5f, 0xc1, 0xaf, 0x1e, 0xb4, 0x8a, 0xf5, 0xa3, 0x26, 0x17, 0x8e, 0xe3, + 0x3c, 0x22, 0xab, 0xa1, 0x13, 0xf5, 0x0c, 0x54, 0x2f, 0xff, 0x88, 0xb9, 0xfe, 0x99, 0xcb, 0xaa, + 0x23, 0xb9, 0xb5, 0xed, 0xb0, 0xe6, 0x5a, 0x6d, 0x87, 0x9a, 0x26, 0x3b, 0xa7, 0xab, 0xfa, 0x02, + 0xba, 0xf2, 0x56, 0xd0, 0x93, 0x64, 0x9a, 0xd3, 0x75, 0x6e, 0x23, 0xa0, 0x7e, 0xec, 0x5f, 0x4b, + 0xca, 0xaa, 0x5e, 0x6b, 0x5a, 0x29, 0xe6, 0x63, 0xc5, 0x70, 0x45, 0xf7, 0x5a, 0x0d, 0xed, 0xf3, + 0xb1, 0x08, 0x42, 0x5b, 0xdf, 0xf9, 0x91, 0x2f, 0x15, 0xf5, 0xab, 0xdd, 0xf8, 0xa8, 0xd0, 0xea, + 0xd4, 0x8f, 0x2b, 0xa3, 0x8e, 0xa0, 0xfa, 0xf0, 0xc9, 0xc1, 0x63, 0x37, 0xc4, 0xd5, 0xfa, 0xe0, + 0xfe, 0x37, 0x3b, 0x63, 0x2a, 0x27, 0xb3, 0xa1, 0x3a, 0x61, 0xd7, 0x9e, 0xe8, 0xbe, 0xf7, 0xa3, + 0x84, 0xee, 0xf2, 0x2c, 0xda, 0x75, 0xa7, 0x0f, 0x57, 0x34, 0xfb, 0x1f, 0xfc, 0x1d, 0x00, 0x00, + 0xff, 0xff, 0x3a, 0x2d, 0xa5, 0x01, 0xf1, 0x0d, 0x00, 0x00, } diff --git a/rpc/commands/board.proto b/rpc/commands/board.proto index 0595683ebbf..c7051e9f726 100644 --- a/rpc/commands/board.proto +++ b/rpc/commands/board.proto @@ -204,7 +204,14 @@ message BoardSearchReq { } message BoardSearchResp { - repeated string fqbn = 1; + repeated SearchedBoard boards = 1; +} + +message SearchedBoard { + string name = 1; + string alias = 2; + string fqbn = 3; + string externalPlatformUrl = 4; } message DetectedPort { From 7afe3fdca871590e27cf992ff026f9f1bdf7b6d8 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 3 Apr 2020 11:12:50 +0200 Subject: [PATCH 05/10] Added 'board install' command --- cli/board/install.go | 6 ++---- commands/board/install.go | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 6 deletions(-) diff --git a/cli/board/install.go b/cli/board/install.go index 41254aa4a0e..c1f226957af 100644 --- a/cli/board/install.go +++ b/cli/board/install.go @@ -21,7 +21,6 @@ import ( "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" - "github.com/arduino/arduino-cli/cli/globals" "github.com/arduino/arduino-cli/cli/instance" "github.com/arduino/arduino-cli/cli/output" "github.com/arduino/arduino-cli/commands/board" @@ -53,15 +52,14 @@ func runInstallCommand(cmd *cobra.Command, args []string) { os.Exit(errorcodes.ErrGeneric) } - boardArg := args[1] + boardArg := args[0] logrus.WithField("board", boardArg).Info("Executing `board install`") boardInstallReq := &rpc.BoardInstallReq{ Instance: inst, Board: boardArg, } - _, err = board.Install(context.Background(), boardInstallReq, output.ProgressBar(), - output.TaskProgress(), globals.NewHTTPClientHeader()) + _, err = board.Install(context.Background(), boardInstallReq, output.ProgressBar(), output.TaskProgress()) if err != nil { feedback.Errorf("Error installing board: %v", err) os.Exit(errorcodes.ErrGeneric) diff --git a/commands/board/install.go b/commands/board/install.go index d20a06d6633..8e35c4cd053 100644 --- a/commands/board/install.go +++ b/commands/board/install.go @@ -19,14 +19,32 @@ import ( "context" "github.com/arduino/arduino-cli/commands" + "github.com/arduino/arduino-cli/commands/core" rpc "github.com/arduino/arduino-cli/rpc/commands" + "github.com/pkg/errors" ) // Install FIXMEDOC func Install(ctx context.Context, req *rpc.BoardInstallReq, downloadCB commands.DownloadProgressCB, taskCB commands.TaskProgressCB) (r *rpc.BoardInstallResp, e error) { - // TODO + pm := commands.GetPackageManager(req.GetInstance().GetId()) + if pm == nil { + return nil, errors.New("invalid instance") + } - return nil, nil + board := pm.Registry.FindBoard(req.GetBoard()) + if board == nil { + return nil, errors.Errorf("board '%s' not found", req.GetBoard()) + } + + platformInstallReq := &rpc.PlatformInstallReq{ + Instance: req.GetInstance(), + PlatformPackage: board.FQBN.Package, + Architecture: board.FQBN.PlatformArch, + } + if _, err := core.PlatformInstall(ctx, platformInstallReq, downloadCB, taskCB); err != nil { + return nil, errors.WithMessage(err, "installing board platforms") + } + return &rpc.BoardInstallResp{}, nil } From 634b77b333c1f3da8f5380e469e1f51bda10e839 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Thu, 9 Apr 2020 15:54:07 +0200 Subject: [PATCH 06/10] Upload and Compile now accept both Alias and FQBN --- .../cores/packagemanager/package_manager.go | 15 ++-- .../packagemanager/package_manager_test.go | 12 ++-- arduino/cores/packagemanager/registry.go | 14 ++-- cli/compile/compile.go | 10 +-- cli/upload/upload.go | 8 ++- commands/board/install.go | 10 +-- commands/compile/compile.go | 24 ++++--- commands/upload/upload.go | 22 +++--- rpc/commands/compile.pb.go | 70 +++++++++++-------- rpc/commands/compile.proto | 3 +- rpc/commands/upload.pb.go | 52 ++++++++------ rpc/commands/upload.proto | 3 +- 12 files changed, 144 insertions(+), 99 deletions(-) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 5ca1521d5e0..4e848ddc974 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -116,13 +116,20 @@ func (pm *PackageManager) FindBoardsWithID(id string) []*cores.Board { return res } -// FindBoardWithFQBN returns the board identified by the fqbn, or an error -func (pm *PackageManager) FindBoardWithFQBN(fqbnIn string) (*cores.Board, error) { - fqbn, err := cores.ParseFQBN(fqbnIn) +// FindBoard search the board identified by boardArg (board alias or board fqbn). +// It returns FQBN, RegistereBoard and Board or an error if not found. +// The board may be present in registry but not installed, in this case o +func (pm *PackageManager) FindBoard(boardArg string) (*cores.FQBN, *RegisteredBoard, *cores.Board, error) { + fqbn, registeredBoard, err := pm.Registry.FindBoard(boardArg) if err != nil { - return nil, fmt.Errorf("parsing fqbn: %s", err) + return fqbn, registeredBoard, nil, err } + board, err := pm.FindBoardWithFQBN(fqbn) + return fqbn, registeredBoard, board, err +} +// FindBoardWithFQBN returns the board identified by the fqbn, or an error +func (pm *PackageManager) FindBoardWithFQBN(fqbn *cores.FQBN) (*cores.Board, error) { _, _, board, _, _, err := pm.ResolveFQBN(fqbn) return board, err } diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 3e6de20d054..52cbcb90317 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -41,12 +41,12 @@ func TestFindBoardWithFQBN(t *testing.T) { pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware) pm.LoadHardwareFromDirectory(customHardware) - board, err := pm.FindBoardWithFQBN("arduino:avr:uno") + _, _, board, err := pm.FindBoard("arduino:avr:uno") require.Nil(t, err) require.NotNil(t, board) require.Equal(t, board.Name(), "Arduino/Genuino Uno") - board, err = pm.FindBoardWithFQBN("arduino:avr:mega") + _, _, board, err = pm.FindBoard("arduino:avr:mega") require.Nil(t, err) require.NotNil(t, board) require.Equal(t, board.Name(), "Arduino/Genuino Mega or Mega 2560") @@ -178,7 +178,7 @@ func TestBoardOptionsFunctions(t *testing.T) { pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware) pm.LoadHardwareFromDirectory(customHardware) - nano, err := pm.FindBoardWithFQBN("arduino:avr:nano") + _, _, nano, err := pm.FindBoard("arduino:avr:nano") require.Nil(t, err) require.NotNil(t, nano) require.Equal(t, nano.Name(), "Arduino Nano") @@ -194,7 +194,7 @@ func TestBoardOptionsFunctions(t *testing.T) { expectedNanoCPUValues.Set("atmega168", "ATmega168") require.EqualValues(t, expectedNanoCPUValues, nanoCPUValues) - esp8266, err := pm.FindBoardWithFQBN("esp8266:esp8266:generic") + _, _, esp8266, err := pm.FindBoard("esp8266:esp8266:generic") require.Nil(t, err) require.NotNil(t, esp8266) require.Equal(t, esp8266.Name(), "Generic ESP8266 Module") @@ -230,7 +230,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) { loadIndex("http://arduino.esp8266.com/stable/package_esp8266com_index.json") loadIndex("https://adafruit.github.io/arduino-board-index/package_adafruit_index.json") require.NoError(t, pm.LoadHardware()) - esp32, err := pm.FindBoardWithFQBN("esp32:esp32:esp32") + _, _, esp32, err := pm.FindBoard("esp32:esp32:esp32") require.NoError(t, err) esptool231 := pm.FindToolDependency(&cores.ToolDependency{ ToolPackager: "esp32", @@ -266,7 +266,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) { testConflictingToolsInDifferentPackages() testConflictingToolsInDifferentPackages() - feather, err := pm.FindBoardWithFQBN("adafruit:samd:adafruit_feather_m0_express") + _, _, feather, err := pm.FindBoard("adafruit:samd:adafruit_feather_m0_express") require.NoError(t, err) require.NotNil(t, feather) featherTools, err := pm.FindToolsRequiredForBoard(feather) diff --git a/arduino/cores/packagemanager/registry.go b/arduino/cores/packagemanager/registry.go index 15b1ae7a9d1..c05b1b2f3e5 100644 --- a/arduino/cores/packagemanager/registry.go +++ b/arduino/cores/packagemanager/registry.go @@ -50,14 +50,18 @@ func (r *BoardsRegistry) addBoard(board *RegisteredBoard) { r.aliastToBoard[board.Alias] = board } -func (r *BoardsRegistry) FindBoard(fqbnOrAlias string) *RegisteredBoard { +func (r *BoardsRegistry) FindBoard(fqbnOrAlias string) (*cores.FQBN, *RegisteredBoard, error) { if found, ok := r.aliastToBoard[fqbnOrAlias]; ok { - return found + return found.FQBN, found, nil } - if found, ok := r.fqbnToBoard[fqbnOrAlias]; ok { - return found + fqbn, err := cores.ParseFQBN(fqbnOrAlias) + if err != nil { + return nil, nil, err } - return nil + if found, ok := r.fqbnToBoard[fqbn.StringWithoutConfig()]; ok { + return fqbn, found, nil + } + return fqbn, nil, nil } func (r *BoardsRegistry) SearchBoards(query string) []*RegisteredBoard { diff --git a/cli/compile/compile.go b/cli/compile/compile.go index 0ddaf97232f..a8e09c77bf5 100644 --- a/cli/compile/compile.go +++ b/cli/compile/compile.go @@ -33,7 +33,7 @@ import ( ) var ( - fqbn string // Fully Qualified Board Name, e.g.: arduino:avr:uno. + boardArg string // Board Alias or Board FQBN showProperties bool // Show all build preferences used instead of compiling. preprocess bool // Print preprocessed code to stdout. buildCachePath string // Builds of 'core.a' are saved into this path to be cached and reused. @@ -63,7 +63,9 @@ func NewCommand() *cobra.Command { Run: run, } - command.Flags().StringVarP(&fqbn, "fqbn", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") + command.Flags().StringVarP(&boardArg, "board", "b", "", "Board Alias or Board FQBN (e.g. 'arduino:avr:uno')") + command.Flags().StringVarP(&boardArg, "fqbn", "", "", "") + command.Flags().MarkDeprecated("fqbn", "use --board instead.") command.Flags().BoolVar(&showProperties, "show-properties", false, "Show all build properties used instead of compiling.") command.Flags().BoolVar(&preprocess, "preprocess", false, "Print preprocessed code to stdout instead of compiling.") command.Flags().StringVar(&buildCachePath, "build-cache-path", "", "Builds of 'core.a' are saved into this path to be cached and reused.") @@ -104,7 +106,7 @@ func run(cmd *cobra.Command, args []string) { _, err = compile.Compile(context.Background(), &rpc.CompileReq{ Instance: inst, - Fqbn: fqbn, + Board: boardArg, SketchPath: sketchPath.String(), ShowProperties: showProperties, Preprocess: preprocess, @@ -129,7 +131,7 @@ func run(cmd *cobra.Command, args []string) { if uploadAfterCompile { _, err := upload.Upload(context.Background(), &rpc.UploadReq{ Instance: inst, - Fqbn: fqbn, + Board: boardArg, SketchPath: sketchPath.String(), Port: port, Verbose: verbose, diff --git a/cli/upload/upload.go b/cli/upload/upload.go index c5a735add97..3e3e9a7a8f1 100644 --- a/cli/upload/upload.go +++ b/cli/upload/upload.go @@ -30,7 +30,7 @@ import ( ) var ( - fqbn string + boardArg string port string verbose bool verify bool @@ -48,7 +48,9 @@ func NewCommand() *cobra.Command { Run: run, } - uploadCommand.Flags().StringVarP(&fqbn, "fqbn", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") + uploadCommand.Flags().StringVarP(&boardArg, "board", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") + uploadCommand.Flags().StringVarP(&boardArg, "fqbn", "", "", "") + uploadCommand.Flags().MarkDeprecated("fqbn", "use --board instead.") uploadCommand.Flags().StringVarP(&port, "port", "p", "", "Upload port, e.g.: COM10 or /dev/ttyACM0") uploadCommand.Flags().StringVarP(&importFile, "input", "i", "", "Input file to be uploaded.") uploadCommand.Flags().BoolVarP(&verify, "verify", "t", false, "Verify uploaded binary after the upload.") @@ -72,7 +74,7 @@ func run(command *cobra.Command, args []string) { if _, err := upload.Upload(context.Background(), &rpc.UploadReq{ Instance: instance, - Fqbn: fqbn, + Board: boardArg, SketchPath: sketchPath.String(), Port: port, Verbose: verbose, diff --git a/commands/board/install.go b/commands/board/install.go index 8e35c4cd053..612d1c01431 100644 --- a/commands/board/install.go +++ b/commands/board/install.go @@ -33,15 +33,15 @@ func Install(ctx context.Context, req *rpc.BoardInstallReq, return nil, errors.New("invalid instance") } - board := pm.Registry.FindBoard(req.GetBoard()) - if board == nil { - return nil, errors.Errorf("board '%s' not found", req.GetBoard()) + fqbn, _, _, err := pm.FindBoard(req.GetBoard()) + if err != nil { + return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) } platformInstallReq := &rpc.PlatformInstallReq{ Instance: req.GetInstance(), - PlatformPackage: board.FQBN.Package, - Architecture: board.FQBN.PlatformArch, + PlatformPackage: fqbn.Package, + Architecture: fqbn.PlatformArch, } if _, err := core.PlatformInstall(ctx, platformInstallReq, downloadCB, taskCB); err != nil { return nil, errors.WithMessage(err, "installing board platforms") diff --git a/commands/compile/compile.go b/commands/compile/compile.go index 3f67c6da063..ac419e899b9 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -17,7 +17,6 @@ package compile import ( "context" - "errors" "fmt" "io" "path/filepath" @@ -25,7 +24,6 @@ import ( "strconv" "strings" - "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/arduino/cores/packagemanager" "github.com/arduino/arduino-cli/arduino/sketches" "github.com/arduino/arduino-cli/commands" @@ -37,6 +35,7 @@ import ( "github.com/arduino/arduino-cli/telemetry" paths "github.com/arduino/go-paths-helper" properties "github.com/arduino/go-properties-orderedmap" + "github.com/pkg/errors" "github.com/segmentio/stats/v4" "github.com/sirupsen/logrus" "github.com/spf13/viper" @@ -46,6 +45,7 @@ import ( func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.Writer, debug bool) (r *rpc.CompileResp, e error) { tags := map[string]string{ + "board": req.Board, "fqbn": req.Fqbn, "sketchPath": telemetry.Sanitize(req.SketchPath), "showProperties": strconv.FormatBool(req.ShowProperties), @@ -85,16 +85,20 @@ func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.W return nil, fmt.Errorf("opening sketch: %s", err) } - fqbnIn := req.GetFqbn() - if fqbnIn == "" && sketch != nil && sketch.Metadata != nil { - fqbnIn = sketch.Metadata.CPU.Fqbn + boardArg := req.GetBoard() + if boardArg == "" { + boardArg = req.GetFqbn() // DEPRECATED: Keep Fqbn field working for old clients. } - if fqbnIn == "" { - return nil, fmt.Errorf("no FQBN provided") + if boardArg == "" && sketch != nil && sketch.Metadata != nil { + boardArg = sketch.Metadata.CPU.Fqbn } - fqbn, err := cores.ParseFQBN(fqbnIn) + if boardArg == "" { + return nil, errors.Errorf("no board provided") + } + + fqbn, _, _, err := pm.FindBoard(boardArg) if err != nil { - return nil, fmt.Errorf("incorrect FQBN: %s", err) + return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) } targetPlatform := pm.FindPlatform(&packagemanager.PlatformReference{ @@ -249,6 +253,6 @@ func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.W } } - logrus.Tracef("Compile %s for %s successful", sketch.Name, fqbnIn) + logrus.Tracef("Compile %s for %s successful", sketch.Name, boardArg) return &rpc.CompileResp{}, nil } diff --git a/commands/upload/upload.go b/commands/upload/upload.go index 4b68dd4eb25..beee12cfdab 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -33,6 +33,7 @@ import ( rpc "github.com/arduino/arduino-cli/rpc/commands" paths "github.com/arduino/go-paths-helper" properties "github.com/arduino/go-properties-orderedmap" + "github.com/pkg/errors" "github.com/sirupsen/logrus" "go.bug.st/serial" ) @@ -67,19 +68,22 @@ func Upload(ctx context.Context, req *rpc.UploadReq, outStream io.Writer, errStr return nil, fmt.Errorf("no upload port provided") } - fqbnIn := req.GetFqbn() - if fqbnIn == "" && sketch != nil && sketch.Metadata != nil { - fqbnIn = sketch.Metadata.CPU.Fqbn + boardArg := req.GetBoard() + if boardArg == "" { + boardArg = req.GetFqbn() // DEPRECATION: Keep compatiblity with old clients using Fqbn } - if fqbnIn == "" { - return nil, fmt.Errorf("no Fully Qualified Board Name provided") + if boardArg == "" && sketch != nil && sketch.Metadata != nil { + boardArg = sketch.Metadata.CPU.Fqbn } - fqbn, err := cores.ParseFQBN(fqbnIn) - if err != nil { - return nil, fmt.Errorf("incorrect FQBN: %s", err) + if boardArg == "" { + return nil, errors.Errorf("no board specified") } pm := commands.GetPackageManager(req.GetInstance().GetId()) + fqbn, _, _, err := pm.FindBoard(boardArg) + if err != nil { + return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) + } // Find target board and board properties _, _, board, boardProperties, _, err := pm.ResolveFQBN(fqbn) @@ -266,7 +270,7 @@ func Upload(ctx context.Context, req *rpc.UploadReq, outStream io.Writer, errStr return nil, fmt.Errorf("uploading error: %s", err) } - logrus.Tracef("Upload %s on %s successful", sketch.Name, fqbnIn) + logrus.Tracef("Upload %s on %s successful", sketch.Name, boardArg) return &rpc.UploadResp{}, nil } diff --git a/rpc/commands/compile.pb.go b/rpc/commands/compile.pb.go index e215253816f..7904282a7a8 100644 --- a/rpc/commands/compile.pb.go +++ b/rpc/commands/compile.pb.go @@ -22,7 +22,7 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type CompileReq struct { Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` - Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` + Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` // Deprecated: Do not use. SketchPath string `protobuf:"bytes,3,opt,name=sketchPath,proto3" json:"sketchPath,omitempty"` ShowProperties bool `protobuf:"varint,4,opt,name=showProperties,proto3" json:"showProperties,omitempty"` Preprocess bool `protobuf:"varint,5,opt,name=preprocess,proto3" json:"preprocess,omitempty"` @@ -38,6 +38,7 @@ type CompileReq struct { Libraries []string `protobuf:"bytes,15,rep,name=libraries,proto3" json:"libraries,omitempty"` OptimizeForDebug bool `protobuf:"varint,16,opt,name=optimizeForDebug,proto3" json:"optimizeForDebug,omitempty"` DryRun bool `protobuf:"varint,17,opt,name=dryRun,proto3" json:"dryRun,omitempty"` + Board string `protobuf:"bytes,18,opt,name=board,proto3" json:"board,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -75,6 +76,7 @@ func (m *CompileReq) GetInstance() *Instance { return nil } +// Deprecated: Do not use. func (m *CompileReq) GetFqbn() string { if m != nil { return m.Fqbn @@ -187,6 +189,13 @@ func (m *CompileReq) GetDryRun() bool { return false } +func (m *CompileReq) GetBoard() string { + if m != nil { + return m.Board + } + return "" +} + type CompileResp struct { OutStream []byte `protobuf:"bytes,1,opt,name=out_stream,json=outStream,proto3" json:"out_stream,omitempty"` ErrStream []byte `protobuf:"bytes,2,opt,name=err_stream,json=errStream,proto3" json:"err_stream,omitempty"` @@ -242,33 +251,34 @@ func init() { func init() { proto.RegisterFile("commands/compile.proto", fileDescriptor_86bc582849c76c3d) } var fileDescriptor_86bc582849c76c3d = []byte{ - // 437 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xc1, 0x6f, 0xd3, 0x30, - 0x14, 0xc6, 0x95, 0xad, 0xed, 0x9a, 0xd7, 0xb1, 0x0d, 0x0b, 0x86, 0x35, 0x01, 0x0a, 0x3b, 0xa0, - 0x08, 0xb4, 0x54, 0x82, 0x33, 0x17, 0x86, 0x26, 0x21, 0x2e, 0x55, 0xb8, 0x71, 0x41, 0x89, 0xf3, - 0x68, 0x0c, 0x49, 0x9c, 0x3e, 0x3b, 0x2b, 0xf0, 0x5f, 0xf1, 0x1f, 0x22, 0xbf, 0x34, 0x6d, 0x55, - 0xc4, 0xc9, 0x7e, 0xbf, 0xf7, 0xf9, 0xf9, 0xb3, 0xf5, 0xc1, 0xa5, 0x32, 0x75, 0x9d, 0x35, 0x85, - 0x9d, 0x2b, 0x53, 0xb7, 0xba, 0xc2, 0xa4, 0x25, 0xe3, 0x8c, 0x78, 0xa2, 0x54, 0x92, 0x51, 0xd1, - 0xe9, 0xc6, 0x24, 0xaa, 0xd2, 0xc9, 0x20, 0xbb, 0x7a, 0xbc, 0x7f, 0xa0, 0x36, 0x4d, 0xaf, 0xbf, - 0xfe, 0x33, 0x02, 0xb8, 0xed, 0x27, 0xa4, 0xb8, 0x12, 0xef, 0x60, 0xaa, 0x1b, 0xeb, 0xb2, 0x46, - 0xa1, 0x0c, 0xa2, 0x20, 0x9e, 0xbd, 0x79, 0x91, 0xfc, 0x67, 0x62, 0xf2, 0x71, 0x23, 0x4c, 0xb7, - 0x47, 0x84, 0x80, 0xd1, 0xb7, 0x55, 0xde, 0xc8, 0xa3, 0x28, 0x88, 0xc3, 0x94, 0xf7, 0xe2, 0x39, - 0x80, 0xfd, 0x81, 0x4e, 0x95, 0x8b, 0xcc, 0x95, 0xf2, 0x98, 0x3b, 0x7b, 0x44, 0xbc, 0x84, 0x33, - 0x5b, 0x9a, 0xf5, 0x82, 0x4c, 0x8b, 0xe4, 0x34, 0x5a, 0x39, 0x8a, 0x82, 0x78, 0x9a, 0x1e, 0x50, - 0x3f, 0xa7, 0x25, 0x6c, 0xc9, 0x28, 0xb4, 0x56, 0x8e, 0x59, 0xb3, 0x47, 0xfc, 0x9c, 0xbc, 0xd3, - 0x55, 0x71, 0x9b, 0xa9, 0x12, 0xf9, 0xae, 0x09, 0xdf, 0x75, 0x40, 0xc5, 0x53, 0x08, 0x99, 0xb0, - 0xe4, 0x84, 0x25, 0x3b, 0x20, 0x62, 0x38, 0xef, 0x8b, 0x9d, 0x9d, 0x69, 0x74, 0x1c, 0x87, 0xe9, - 0x21, 0x16, 0x57, 0x30, 0x5d, 0x67, 0xd4, 0xe8, 0x66, 0x69, 0x65, 0xc8, 0x63, 0xb6, 0xb5, 0x90, - 0x70, 0x72, 0x8f, 0x94, 0x1b, 0x8b, 0x12, 0xd8, 0xe8, 0x50, 0x8a, 0x47, 0x30, 0x5e, 0x75, 0x1a, - 0x9d, 0x9c, 0x31, 0xef, 0x0b, 0x71, 0x09, 0x93, 0x7b, 0x5d, 0x2c, 0x74, 0x21, 0x4f, 0x79, 0xd2, - 0xa6, 0xf2, 0x6f, 0xc6, 0x9f, 0xad, 0x21, 0x77, 0xa7, 0x2b, 0x94, 0x0f, 0xfa, 0xbf, 0xdb, 0x11, - 0xff, 0xdf, 0xdf, 0x4d, 0x6e, 0xe5, 0x59, 0x14, 0xc4, 0xe3, 0x94, 0xf7, 0xfe, 0x7d, 0x95, 0xce, - 0x29, 0x23, 0xef, 0xfd, 0x9c, 0xbd, 0xef, 0x80, 0x78, 0x05, 0x17, 0xa6, 0x75, 0xba, 0xd6, 0xbf, - 0xf1, 0xce, 0xd0, 0x07, 0xcc, 0xbb, 0xa5, 0xbc, 0x60, 0x2b, 0xff, 0x70, 0xef, 0xaa, 0xa0, 0x5f, - 0x69, 0xd7, 0xc8, 0x87, 0xac, 0xd8, 0x54, 0xd7, 0x9f, 0x60, 0xb6, 0x8d, 0x8c, 0x6d, 0xc5, 0x33, - 0x00, 0xd3, 0xb9, 0xaf, 0xd6, 0x11, 0x66, 0x35, 0xa7, 0xe6, 0x34, 0x0d, 0x4d, 0xe7, 0x3e, 0x33, - 0xf0, 0x6d, 0x24, 0x1a, 0xda, 0x47, 0x7d, 0x1b, 0x89, 0xfa, 0xf6, 0xfb, 0x9b, 0x2f, 0xaf, 0x97, - 0xda, 0x95, 0x5d, 0xee, 0x83, 0x35, 0xdf, 0x04, 0x6d, 0x58, 0x6f, 0x54, 0xa5, 0xe7, 0xd4, 0xaa, - 0xf9, 0x10, 0xba, 0x7c, 0xc2, 0xb1, 0x7d, 0xfb, 0x37, 0x00, 0x00, 0xff, 0xff, 0xda, 0x5b, 0x4b, - 0x18, 0x00, 0x03, 0x00, 0x00, + // 452 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6f, 0xd3, 0x40, + 0x10, 0x85, 0xe5, 0x34, 0x49, 0x93, 0x49, 0x69, 0xcb, 0x0a, 0xc2, 0xaa, 0x02, 0x64, 0x7a, 0x40, + 0x16, 0xa8, 0x8e, 0x04, 0x67, 0x2e, 0x2d, 0xaa, 0x84, 0xb8, 0x44, 0xe6, 0xc6, 0x05, 0xd9, 0xeb, + 0x21, 0x5e, 0xb0, 0xbd, 0xce, 0xec, 0xba, 0x05, 0xfe, 0x22, 0x7f, 0x0a, 0xed, 0x38, 0x4e, 0xa2, + 0xa0, 0x9e, 0x92, 0xf7, 0xcd, 0xdb, 0xd9, 0xb7, 0xd6, 0x83, 0xb9, 0x32, 0x55, 0x95, 0xd6, 0xb9, + 0x5d, 0x28, 0x53, 0x35, 0xba, 0xc4, 0xb8, 0x21, 0xe3, 0x8c, 0x78, 0xa6, 0x54, 0x9c, 0x52, 0xde, + 0xea, 0xda, 0xc4, 0xaa, 0xd4, 0x71, 0x6f, 0xbb, 0x78, 0xba, 0x7f, 0xa0, 0x32, 0x75, 0xe7, 0xbf, + 0xfc, 0x3b, 0x04, 0xb8, 0xe9, 0x36, 0x24, 0xb8, 0x16, 0x1f, 0x60, 0xa2, 0x6b, 0xeb, 0xd2, 0x5a, + 0xa1, 0x0c, 0xc2, 0x20, 0x9a, 0xbd, 0x7b, 0x15, 0x3f, 0xb0, 0x31, 0xfe, 0xb4, 0x31, 0x26, 0xdb, + 0x23, 0x62, 0x0e, 0xc3, 0xef, 0xeb, 0xac, 0x96, 0x83, 0x30, 0x88, 0xa6, 0xd7, 0x03, 0x19, 0x24, + 0xac, 0xc5, 0x4b, 0x00, 0xfb, 0x13, 0x9d, 0x2a, 0x96, 0xa9, 0x2b, 0xe4, 0x91, 0x9f, 0x26, 0x7b, + 0x44, 0xbc, 0x86, 0x53, 0x5b, 0x98, 0xfb, 0x25, 0x99, 0x06, 0xc9, 0x69, 0xb4, 0x72, 0x18, 0x06, + 0xd1, 0x24, 0x39, 0xa0, 0x7e, 0x4f, 0x43, 0xd8, 0x90, 0x51, 0x68, 0xad, 0x1c, 0xb1, 0x67, 0x8f, + 0xf8, 0x3d, 0x59, 0xab, 0xcb, 0xfc, 0x26, 0x55, 0x05, 0xf2, 0x5d, 0x63, 0xbe, 0xeb, 0x80, 0x8a, + 0xe7, 0x30, 0x65, 0xc2, 0x96, 0x63, 0xb6, 0xec, 0x80, 0x88, 0xe0, 0xac, 0x13, 0xbb, 0x38, 0x93, + 0xf0, 0x28, 0x9a, 0x26, 0x87, 0x58, 0x5c, 0xc0, 0xe4, 0x3e, 0xa5, 0x5a, 0xd7, 0x2b, 0x2b, 0xa7, + 0xbc, 0x66, 0xab, 0x85, 0x84, 0xe3, 0x3b, 0xa4, 0xcc, 0x58, 0x94, 0xc0, 0x41, 0x7b, 0x29, 0x9e, + 0xc0, 0x68, 0xdd, 0x6a, 0x74, 0x72, 0xc6, 0xbc, 0x13, 0x62, 0x0e, 0xe3, 0x3b, 0x9d, 0x2f, 0x75, + 0x2e, 0x4f, 0x78, 0xd3, 0x46, 0xf9, 0x37, 0xe3, 0xaf, 0xc6, 0x90, 0xbb, 0xd5, 0x25, 0xca, 0x47, + 0xdd, 0xb7, 0xdb, 0x11, 0x21, 0x60, 0xf8, 0xc3, 0x64, 0x56, 0x9e, 0x86, 0x41, 0x34, 0x4a, 0xf8, + 0xbf, 0x7f, 0x5f, 0xa9, 0x33, 0x4a, 0xc9, 0x67, 0x3f, 0xe3, 0xec, 0x3b, 0x20, 0xde, 0xc0, 0xb9, + 0x69, 0x9c, 0xae, 0xf4, 0x1f, 0xbc, 0x35, 0xf4, 0x11, 0xb3, 0x76, 0x25, 0xcf, 0x39, 0xca, 0x7f, + 0xdc, 0xa7, 0xca, 0xe9, 0x77, 0xd2, 0xd6, 0xf2, 0x31, 0x3b, 0x36, 0xca, 0xbf, 0x21, 0x33, 0x29, + 0xe5, 0x52, 0x70, 0xa0, 0x4e, 0x5c, 0x7e, 0x86, 0xd9, 0xb6, 0x4c, 0xb6, 0x11, 0x2f, 0x00, 0x4c, + 0xeb, 0xbe, 0x59, 0x47, 0x98, 0x56, 0xdc, 0xa7, 0x93, 0x64, 0x6a, 0x5a, 0xf7, 0x85, 0x81, 0x1f, + 0x23, 0x51, 0x3f, 0x1e, 0x74, 0x63, 0x24, 0xea, 0xc6, 0xd7, 0x57, 0x5f, 0xdf, 0xae, 0xb4, 0x2b, + 0xda, 0xcc, 0x57, 0x6e, 0xb1, 0xa9, 0x60, 0xff, 0x7b, 0xa5, 0x4a, 0xbd, 0xa0, 0x46, 0x2d, 0xfa, + 0x3a, 0x66, 0x63, 0x2e, 0xf4, 0xfb, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0xb5, 0x2e, 0x3e, + 0x1a, 0x03, 0x00, 0x00, } diff --git a/rpc/commands/compile.proto b/rpc/commands/compile.proto index 63c8667a06f..f7707b1987f 100644 --- a/rpc/commands/compile.proto +++ b/rpc/commands/compile.proto @@ -23,7 +23,7 @@ import "commands/common.proto"; message CompileReq { Instance instance = 1; - string fqbn = 2; // Fully Qualified Board Name, e.g.: arduino:avr:uno. + string fqbn = 2 [deprecated=true]; // Fully Qualified Board Name, e.g.: arduino:avr:uno. DEPRECATED: use "board" field instead. string sketchPath = 3; bool showProperties = 4; // Show all build preferences used instead of compiling. bool preprocess = 5; // Print preprocessed code to stdout. @@ -39,6 +39,7 @@ message CompileReq { repeated string libraries = 15; // List of custom libraries paths separated by commas. Or can be used multiple times for multiple libraries paths. bool optimizeForDebug = 16; // Optimize compile output for debug, not for release bool dryRun = 17; // When set to true the compiled binary will not be copied to the export directory + string board = 18; // Board FQBN or Board alias } message CompileResp { diff --git a/rpc/commands/upload.pb.go b/rpc/commands/upload.pb.go index 47d5b983876..7f509c025b6 100644 --- a/rpc/commands/upload.pb.go +++ b/rpc/commands/upload.pb.go @@ -22,12 +22,13 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type UploadReq struct { Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` - Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` + Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` // Deprecated: Do not use. SketchPath string `protobuf:"bytes,3,opt,name=sketch_path,json=sketchPath,proto3" json:"sketch_path,omitempty"` Port string `protobuf:"bytes,4,opt,name=port,proto3" json:"port,omitempty"` Verbose bool `protobuf:"varint,5,opt,name=verbose,proto3" json:"verbose,omitempty"` Verify bool `protobuf:"varint,6,opt,name=verify,proto3" json:"verify,omitempty"` ImportFile string `protobuf:"bytes,7,opt,name=import_file,json=importFile,proto3" json:"import_file,omitempty"` + Board string `protobuf:"bytes,8,opt,name=board,proto3" json:"board,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -65,6 +66,7 @@ func (m *UploadReq) GetInstance() *Instance { return nil } +// Deprecated: Do not use. func (m *UploadReq) GetFqbn() string { if m != nil { return m.Fqbn @@ -107,6 +109,13 @@ func (m *UploadReq) GetImportFile() string { return "" } +func (m *UploadReq) GetBoard() string { + if m != nil { + return m.Board + } + return "" +} + type UploadResp struct { OutStream []byte `protobuf:"bytes,1,opt,name=out_stream,json=outStream,proto3" json:"out_stream,omitempty"` ErrStream []byte `protobuf:"bytes,2,opt,name=err_stream,json=errStream,proto3" json:"err_stream,omitempty"` @@ -162,24 +171,25 @@ func init() { func init() { proto.RegisterFile("commands/upload.proto", fileDescriptor_cd642cc079f8acdb) } var fileDescriptor_cd642cc079f8acdb = []byte{ - // 291 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x90, 0x4f, 0x4b, 0xc4, 0x30, - 0x10, 0xc5, 0xe9, 0xba, 0xee, 0x9f, 0x59, 0x4f, 0x01, 0x35, 0x08, 0xe2, 0xba, 0xa7, 0x05, 0xd9, - 0x14, 0xf4, 0xec, 0xc5, 0x83, 0xa0, 0x27, 0xa9, 0x78, 0xf1, 0x52, 0xd2, 0x34, 0xb5, 0xc1, 0x36, - 0xc9, 0x26, 0xe9, 0x82, 0x5f, 0xd8, 0xcf, 0x21, 0x49, 0x1a, 0x3d, 0x79, 0xca, 0x64, 0x7e, 0xef, - 0xcd, 0x30, 0x0f, 0x4e, 0x99, 0xea, 0x7b, 0x2a, 0x6b, 0x9b, 0x0f, 0xba, 0x53, 0xb4, 0x26, 0xda, - 0x28, 0xa7, 0xd0, 0x39, 0x63, 0x84, 0x9a, 0x7a, 0x10, 0x52, 0x11, 0xd6, 0x09, 0x92, 0x54, 0x17, - 0x7f, 0x7a, 0x5f, 0x28, 0x19, 0xf5, 0x9b, 0xef, 0x0c, 0x96, 0x6f, 0x61, 0x40, 0xc1, 0xf7, 0xe8, - 0x1e, 0x16, 0x42, 0x5a, 0x47, 0x25, 0xe3, 0x38, 0x5b, 0x67, 0xdb, 0xd5, 0xed, 0x35, 0xf9, 0x67, - 0x20, 0x79, 0x1a, 0x85, 0xc5, 0xaf, 0x05, 0x21, 0x98, 0x36, 0xfb, 0x4a, 0xe2, 0xc9, 0x3a, 0xdb, - 0x2e, 0x8b, 0x50, 0xa3, 0x2b, 0x58, 0xd9, 0x4f, 0xee, 0x58, 0x5b, 0x6a, 0xea, 0x5a, 0x7c, 0x14, - 0x10, 0xc4, 0xd6, 0x0b, 0x75, 0xad, 0x37, 0x69, 0x65, 0x1c, 0x9e, 0x46, 0x93, 0xaf, 0x11, 0x86, - 0xf9, 0x81, 0x9b, 0x4a, 0x59, 0x8e, 0x8f, 0xd7, 0xd9, 0x76, 0x51, 0xa4, 0x2f, 0x3a, 0x83, 0xd9, - 0x81, 0x1b, 0xd1, 0x7c, 0xe1, 0x59, 0x00, 0xe3, 0xcf, 0xaf, 0x11, 0xbd, 0xf7, 0x96, 0x8d, 0xe8, - 0x38, 0x9e, 0xc7, 0x35, 0xb1, 0xf5, 0x28, 0x3a, 0xbe, 0x79, 0x06, 0x48, 0x77, 0x5a, 0x8d, 0x2e, - 0x01, 0xd4, 0xe0, 0x4a, 0xeb, 0x0c, 0xa7, 0x7d, 0x38, 0xf5, 0xa4, 0x58, 0xaa, 0xc1, 0xbd, 0x86, - 0x86, 0xc7, 0xdc, 0x98, 0x84, 0x27, 0x11, 0x73, 0x63, 0x22, 0x7e, 0xd8, 0xbd, 0xdf, 0x7c, 0x08, - 0xd7, 0x0e, 0x95, 0x4f, 0x23, 0x1f, 0xd3, 0x49, 0xef, 0x8e, 0x75, 0x22, 0x37, 0x9a, 0xe5, 0x29, - 0xa9, 0x6a, 0x16, 0xa2, 0xbe, 0xfb, 0x09, 0x00, 0x00, 0xff, 0xff, 0xfc, 0xf8, 0xc5, 0x33, 0xb3, - 0x01, 0x00, 0x00, + // 306 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x3f, 0x4f, 0xc3, 0x30, + 0x10, 0xc5, 0x95, 0xd0, 0xbf, 0x57, 0x26, 0x0b, 0x8a, 0x85, 0x84, 0x28, 0x9d, 0x2a, 0xa1, 0x26, + 0x12, 0xcc, 0x2c, 0x1d, 0x90, 0x60, 0x42, 0x41, 0x2c, 0x2c, 0x95, 0xe3, 0xb8, 0xc4, 0x22, 0x89, + 0xdd, 0xb3, 0x53, 0x89, 0x8d, 0x8f, 0x8e, 0x6c, 0xd7, 0x30, 0x31, 0xf9, 0xde, 0xfd, 0xde, 0xdd, + 0x49, 0xcf, 0x70, 0xce, 0x55, 0xdb, 0xb2, 0xae, 0x32, 0x79, 0xaf, 0x1b, 0xc5, 0xaa, 0x4c, 0xa3, + 0xb2, 0x8a, 0x5c, 0x70, 0x9e, 0x31, 0xac, 0x7a, 0xd9, 0xa9, 0x8c, 0x37, 0x32, 0x8b, 0xae, 0xcb, + 0x3f, 0xbf, 0x2b, 0x54, 0x17, 0xfc, 0xcb, 0xef, 0x14, 0xa6, 0x6f, 0x7e, 0x41, 0x21, 0xf6, 0xe4, + 0x01, 0x26, 0xb2, 0x33, 0x96, 0x75, 0x5c, 0xd0, 0x64, 0x91, 0xac, 0x66, 0x77, 0x37, 0xd9, 0x3f, + 0x0b, 0xb3, 0xa7, 0xa3, 0xb1, 0xf8, 0x1d, 0x21, 0x73, 0x18, 0xec, 0xf6, 0x65, 0x47, 0xd3, 0x45, + 0xb2, 0x9a, 0x6e, 0x52, 0x9a, 0x14, 0x5e, 0x93, 0x6b, 0x98, 0x99, 0x4f, 0x61, 0x79, 0xbd, 0xd5, + 0xcc, 0xd6, 0xf4, 0xc4, 0xe1, 0x02, 0x42, 0xeb, 0x85, 0xd9, 0x9a, 0x10, 0x18, 0x68, 0x85, 0x96, + 0x0e, 0x3c, 0xf1, 0x35, 0xa1, 0x30, 0x3e, 0x08, 0x2c, 0x95, 0x11, 0x74, 0xb8, 0x48, 0x56, 0x93, + 0x22, 0x4a, 0x32, 0x87, 0xd1, 0x41, 0xa0, 0xdc, 0x7d, 0xd1, 0x91, 0x07, 0x47, 0xe5, 0xce, 0xc8, + 0xd6, 0xcd, 0x6e, 0x77, 0xb2, 0x11, 0x74, 0x1c, 0xce, 0x84, 0xd6, 0xa3, 0x6c, 0x04, 0x39, 0x83, + 0x61, 0xa9, 0x18, 0x56, 0x74, 0xe2, 0x51, 0x10, 0xcb, 0x67, 0x80, 0x98, 0x80, 0xd1, 0xe4, 0x0a, + 0x40, 0xf5, 0x76, 0x6b, 0x2c, 0x0a, 0xd6, 0xfa, 0x10, 0x4e, 0x8b, 0xa9, 0xea, 0xed, 0xab, 0x6f, + 0x38, 0x2c, 0x10, 0x23, 0x4e, 0x03, 0x16, 0x88, 0x01, 0x6f, 0xd6, 0xef, 0xb7, 0x1f, 0xd2, 0xd6, + 0x7d, 0xe9, 0x72, 0xca, 0x8f, 0xb9, 0xc5, 0x77, 0xcd, 0x1b, 0x99, 0xa3, 0xe6, 0x79, 0xcc, 0xb0, + 0x1c, 0xf9, 0x4f, 0xb8, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xee, 0x93, 0x49, 0x70, 0xcd, 0x01, + 0x00, 0x00, } diff --git a/rpc/commands/upload.proto b/rpc/commands/upload.proto index ad5b747643c..35d1d1965ac 100644 --- a/rpc/commands/upload.proto +++ b/rpc/commands/upload.proto @@ -23,12 +23,13 @@ import "commands/common.proto"; message UploadReq { Instance instance = 1; - string fqbn = 2; + string fqbn = 2 [deprecated=true]; string sketch_path = 3; string port = 4; bool verbose = 5; bool verify = 6; string import_file = 7; + string board = 8; } message UploadResp { From 22fc34a4073c1d7f8f45c7c970f6307c5326f9d8 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 14 Apr 2020 01:48:54 +0200 Subject: [PATCH 07/10] Added "board config" flags and parameters This is an alternative way to extended FQBN to pass board configuration options. --- .../cores/packagemanager/package_manager.go | 5 +- .../packagemanager/package_manager_test.go | 12 +- cli/board/details.go | 24 ++- cli/compile/compile.go | 7 +- cli/upload/upload.go | 6 +- commands/board/details.go | 16 +- commands/board/install.go | 2 +- commands/compile/compile.go | 2 +- commands/upload/upload.go | 2 +- rpc/commands/board.pb.go | 178 ++++++++++-------- rpc/commands/board.proto | 7 +- rpc/commands/compile.pb.go | 69 ++++--- rpc/commands/compile.proto | 3 +- rpc/commands/upload.pb.go | 51 ++--- rpc/commands/upload.proto | 7 +- 15 files changed, 227 insertions(+), 164 deletions(-) diff --git a/arduino/cores/packagemanager/package_manager.go b/arduino/cores/packagemanager/package_manager.go index 4e848ddc974..33819d8a75e 100644 --- a/arduino/cores/packagemanager/package_manager.go +++ b/arduino/cores/packagemanager/package_manager.go @@ -119,11 +119,14 @@ func (pm *PackageManager) FindBoardsWithID(id string) []*cores.Board { // FindBoard search the board identified by boardArg (board alias or board fqbn). // It returns FQBN, RegistereBoard and Board or an error if not found. // The board may be present in registry but not installed, in this case o -func (pm *PackageManager) FindBoard(boardArg string) (*cores.FQBN, *RegisteredBoard, *cores.Board, error) { +func (pm *PackageManager) FindBoard(boardArg string, config []string) (*cores.FQBN, *RegisteredBoard, *cores.Board, error) { fqbn, registeredBoard, err := pm.Registry.FindBoard(boardArg) if err != nil { return fqbn, registeredBoard, nil, err } + if config != nil { + fqbn.SetConfigs(config) + } board, err := pm.FindBoardWithFQBN(fqbn) return fqbn, registeredBoard, board, err } diff --git a/arduino/cores/packagemanager/package_manager_test.go b/arduino/cores/packagemanager/package_manager_test.go index 52cbcb90317..2da20c389a2 100644 --- a/arduino/cores/packagemanager/package_manager_test.go +++ b/arduino/cores/packagemanager/package_manager_test.go @@ -41,12 +41,12 @@ func TestFindBoardWithFQBN(t *testing.T) { pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware) pm.LoadHardwareFromDirectory(customHardware) - _, _, board, err := pm.FindBoard("arduino:avr:uno") + _, _, board, err := pm.FindBoard("arduino:avr:uno", nil) require.Nil(t, err) require.NotNil(t, board) require.Equal(t, board.Name(), "Arduino/Genuino Uno") - _, _, board, err = pm.FindBoard("arduino:avr:mega") + _, _, board, err = pm.FindBoard("arduino:avr:mega", nil) require.Nil(t, err) require.NotNil(t, board) require.Equal(t, board.Name(), "Arduino/Genuino Mega or Mega 2560") @@ -178,7 +178,7 @@ func TestBoardOptionsFunctions(t *testing.T) { pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware) pm.LoadHardwareFromDirectory(customHardware) - _, _, nano, err := pm.FindBoard("arduino:avr:nano") + _, _, nano, err := pm.FindBoard("arduino:avr:nano", nil) require.Nil(t, err) require.NotNil(t, nano) require.Equal(t, nano.Name(), "Arduino Nano") @@ -194,7 +194,7 @@ func TestBoardOptionsFunctions(t *testing.T) { expectedNanoCPUValues.Set("atmega168", "ATmega168") require.EqualValues(t, expectedNanoCPUValues, nanoCPUValues) - _, _, esp8266, err := pm.FindBoard("esp8266:esp8266:generic") + _, _, esp8266, err := pm.FindBoard("esp8266:esp8266:generic", nil) require.Nil(t, err) require.NotNil(t, esp8266) require.Equal(t, esp8266.Name(), "Generic ESP8266 Module") @@ -230,7 +230,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) { loadIndex("http://arduino.esp8266.com/stable/package_esp8266com_index.json") loadIndex("https://adafruit.github.io/arduino-board-index/package_adafruit_index.json") require.NoError(t, pm.LoadHardware()) - _, _, esp32, err := pm.FindBoard("esp32:esp32:esp32") + _, _, esp32, err := pm.FindBoard("esp32:esp32:esp32", nil) require.NoError(t, err) esptool231 := pm.FindToolDependency(&cores.ToolDependency{ ToolPackager: "esp32", @@ -266,7 +266,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) { testConflictingToolsInDifferentPackages() testConflictingToolsInDifferentPackages() - _, _, feather, err := pm.FindBoard("adafruit:samd:adafruit_feather_m0_express") + _, _, feather, err := pm.FindBoard("adafruit:samd:adafruit_feather_m0_express", nil) require.NoError(t, err) require.NotNil(t, feather) featherTools, err := pm.FindToolsRequiredForBoard(feather) diff --git a/cli/board/details.go b/cli/board/details.go index 1b3d4ebe00a..c43ac92cf9a 100644 --- a/cli/board/details.go +++ b/cli/board/details.go @@ -18,6 +18,8 @@ package board import ( "context" "fmt" + "os" + "github.com/arduino/arduino-cli/cli/errorcodes" "github.com/arduino/arduino-cli/cli/feedback" "github.com/arduino/arduino-cli/cli/instance" @@ -26,14 +28,11 @@ import ( "github.com/arduino/arduino-cli/table" "github.com/fatih/color" "github.com/spf13/cobra" - "os" ) -var showFullDetails bool - func initDetailsCommand() *cobra.Command { var detailsCommand = &cobra.Command{ - Use: "details ", + Use: "details ", Short: "Print details about a board.", Long: "Show information about a board, in particular if the board has options to be specified in the FQBN.", Example: " " + os.Args[0] + " board details arduino:avr:nano", @@ -41,11 +40,17 @@ func initDetailsCommand() *cobra.Command { Run: runDetailsCommand, } - detailsCommand.Flags().BoolVarP(&showFullDetails, "full", "f", false, "Include full details in text output") - + detailsCommand.Flags().BoolVarP(&detailsFlags.showFullDetails, "full", "f", false, "Include full details in text output") + detailsFlags.boardConfig = + detailsCommand.Flags().StringSliceP("board-conf", "c", nil, "set a board configuration value. The flag can be used multiple times.\n"+"Example: "+os.Args[0]+" board details arduino:avr:nano -c cpu=atmega168") return detailsCommand } +var detailsFlags struct { + showFullDetails bool + boardConfig *[]string +} + func runDetailsCommand(cmd *cobra.Command, args []string) { inst, err := instance.CreateInstance() if err != nil { @@ -54,8 +59,9 @@ func runDetailsCommand(cmd *cobra.Command, args []string) { } res, err := board.Details(context.Background(), &rpc.BoardDetailsReq{ - Instance: inst, - Fqbn: args[0], + Instance: inst, + Board: args[0], + BoardConfig: *detailsFlags.boardConfig, }) if err != nil { @@ -131,7 +137,7 @@ func (dr detailsResult) String() string { t.AddRow() // get some space from above for _, tool := range details.ToolsDependencies { t.AddRow("Required tools:", tool.Packager+":"+tool.Name, "", tool.Version) - if showFullDetails { + if detailsFlags.showFullDetails { for _, sys := range tool.Systems { t.AddRow("", "OS:", "", sys.Host) t.AddRow("", "File:", "", sys.ArchiveFileName) diff --git a/cli/compile/compile.go b/cli/compile/compile.go index a8e09c77bf5..139eec7890f 100644 --- a/cli/compile/compile.go +++ b/cli/compile/compile.go @@ -33,7 +33,9 @@ import ( ) var ( - boardArg string // Board Alias or Board FQBN + boardArg string // Board Alias or Board FQBN + boardConfig *[]string // Board Configuration + showProperties bool // Show all build preferences used instead of compiling. preprocess bool // Print preprocessed code to stdout. buildCachePath string // Builds of 'core.a' are saved into this path to be cached and reused. @@ -64,6 +66,8 @@ func NewCommand() *cobra.Command { } command.Flags().StringVarP(&boardArg, "board", "b", "", "Board Alias or Board FQBN (e.g. 'arduino:avr:uno')") + boardConfig = + command.Flags().StringSliceP("board-conf", "c", nil, "set a board configuration value. The flag can be used multiple times.\n"+"Example: "+os.Args[0]+" board details arduino:avr:nano -c cpu=atmega168") command.Flags().StringVarP(&boardArg, "fqbn", "", "", "") command.Flags().MarkDeprecated("fqbn", "use --board instead.") command.Flags().BoolVar(&showProperties, "show-properties", false, "Show all build properties used instead of compiling.") @@ -107,6 +111,7 @@ func run(cmd *cobra.Command, args []string) { _, err = compile.Compile(context.Background(), &rpc.CompileReq{ Instance: inst, Board: boardArg, + BoardConfig: *boardConfig, SketchPath: sketchPath.String(), ShowProperties: showProperties, Preprocess: preprocess, diff --git a/cli/upload/upload.go b/cli/upload/upload.go index 3e3e9a7a8f1..e4d0a57da29 100644 --- a/cli/upload/upload.go +++ b/cli/upload/upload.go @@ -30,7 +30,9 @@ import ( ) var ( - boardArg string + boardArg string + boardConfig *[]string + port string verbose bool verify bool @@ -49,6 +51,8 @@ func NewCommand() *cobra.Command { } uploadCommand.Flags().StringVarP(&boardArg, "board", "b", "", "Fully Qualified Board Name, e.g.: arduino:avr:uno") + boardConfig = + uploadCommand.Flags().StringSliceP("board-conf", "c", nil, "set a board configuration value. The flag can be used multiple times.\n"+"Example: "+os.Args[0]+" board details arduino:avr:nano -c cpu=atmega168") uploadCommand.Flags().StringVarP(&boardArg, "fqbn", "", "", "") uploadCommand.Flags().MarkDeprecated("fqbn", "use --board instead.") uploadCommand.Flags().StringVarP(&port, "port", "p", "", "Upload port, e.g.: COM10 or /dev/ttyACM0") diff --git a/commands/board/details.go b/commands/board/details.go index 9fb440c1f57..f4c7e0c45ca 100644 --- a/commands/board/details.go +++ b/commands/board/details.go @@ -18,9 +18,7 @@ package board import ( "context" "errors" - "fmt" - "github.com/arduino/arduino-cli/arduino/cores" "github.com/arduino/arduino-cli/commands" rpc "github.com/arduino/arduino-cli/rpc/commands" ) @@ -33,14 +31,18 @@ func Details(ctx context.Context, req *rpc.BoardDetailsReq) (*rpc.BoardDetailsRe return nil, errors.New("invalid instance") } - fqbn, err := cores.ParseFQBN(req.GetFqbn()) - if err != nil { - return nil, fmt.Errorf("parsing fqbn: %s", err) + boardArg := req.GetBoard() + if boardArg == "" { + boardArg = req.GetFqbn() // Deprecated: use FQBN for old client. } - boardPackage, boardPlatform, board, _, _, err := pm.ResolveFQBN(fqbn) + fqbn, _, board, err := pm.FindBoard(boardArg, req.GetBoardConfig()) + boardPlatform := board.PlatformRelease + boardPackage := boardPlatform.Platform.Package + + // TODO: do not ignore *RegisteredBoard result, but output data from it? if err != nil { - return nil, fmt.Errorf("loading board data: %s", err) + return nil, err } details := &rpc.BoardDetailsResp{} diff --git a/commands/board/install.go b/commands/board/install.go index 612d1c01431..6723a9d89b2 100644 --- a/commands/board/install.go +++ b/commands/board/install.go @@ -33,7 +33,7 @@ func Install(ctx context.Context, req *rpc.BoardInstallReq, return nil, errors.New("invalid instance") } - fqbn, _, _, err := pm.FindBoard(req.GetBoard()) + fqbn, _, _, err := pm.FindBoard(req.GetBoard(), nil) if err != nil { return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) } diff --git a/commands/compile/compile.go b/commands/compile/compile.go index ac419e899b9..add951a9487 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -96,7 +96,7 @@ func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.W return nil, errors.Errorf("no board provided") } - fqbn, _, _, err := pm.FindBoard(boardArg) + fqbn, _, _, err := pm.FindBoard(boardArg, req.GetBoardConfig()) if err != nil { return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) } diff --git a/commands/upload/upload.go b/commands/upload/upload.go index beee12cfdab..09358b65033 100644 --- a/commands/upload/upload.go +++ b/commands/upload/upload.go @@ -80,7 +80,7 @@ func Upload(ctx context.Context, req *rpc.UploadReq, outStream io.Writer, errStr } pm := commands.GetPackageManager(req.GetInstance().GetId()) - fqbn, _, _, err := pm.FindBoard(boardArg) + fqbn, _, _, err := pm.FindBoard(boardArg, req.GetBoardConfig()) if err != nil { return nil, errors.Errorf("board '%s' not found: %s", req.GetBoard(), err) } diff --git a/rpc/commands/board.pb.go b/rpc/commands/board.pb.go index d5fb8843526..ea5c9333119 100644 --- a/rpc/commands/board.pb.go +++ b/rpc/commands/board.pb.go @@ -23,9 +23,12 @@ const _ = proto.ProtoPackageIsVersion3 // please upgrade the proto package type BoardDetailsReq struct { // Arduino Core Service instance from the `Init` response. Instance *Instance `protobuf:"bytes,1,opt,name=instance,proto3" json:"instance,omitempty"` + // DEPRECATED: use "board" and "board_config" fields instead. + Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` // Deprecated: Do not use. // The fully qualified board name of the board you want information about - // (e.g., `arduino:avr:uno`). - Fqbn string `protobuf:"bytes,2,opt,name=fqbn,proto3" json:"fqbn,omitempty"` + // (e.g., `arduino:avr:uno`) or the board alias. + Board string `protobuf:"bytes,3,opt,name=board,proto3" json:"board,omitempty"` + BoardConfig []string `protobuf:"bytes,4,rep,name=board_config,json=boardConfig,proto3" json:"board_config,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -63,6 +66,7 @@ func (m *BoardDetailsReq) GetInstance() *Instance { return nil } +// Deprecated: Do not use. func (m *BoardDetailsReq) GetFqbn() string { if m != nil { return m.Fqbn @@ -70,6 +74,20 @@ func (m *BoardDetailsReq) GetFqbn() string { return "" } +func (m *BoardDetailsReq) GetBoard() string { + if m != nil { + return m.Board + } + return "" +} + +func (m *BoardDetailsReq) GetBoardConfig() []string { + if m != nil { + return m.BoardConfig + } + return nil +} + type BoardDetailsResp struct { // The fully qualified board name of the board. Fqbn string `protobuf:"bytes,1,opt,name=fqbn,proto3" json:"fqbn,omitempty"` @@ -1533,81 +1551,83 @@ func init() { func init() { proto.RegisterFile("commands/board.proto", fileDescriptor_0882eeddaa6507ab) } var fileDescriptor_0882eeddaa6507ab = []byte{ - // 1210 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x56, 0xdd, 0x6e, 0x1b, 0x45, - 0x14, 0xd6, 0xd6, 0x76, 0xec, 0x1c, 0xdb, 0x6d, 0x33, 0x0d, 0xb0, 0x0a, 0x22, 0xa4, 0x2b, 0x8a, - 0x02, 0x51, 0x1d, 0x08, 0x48, 0x48, 0xe5, 0x47, 0x4a, 0xb0, 0x2a, 0x5c, 0x85, 0xe2, 0x6e, 0x7e, - 0x84, 0x10, 0xc8, 0x1d, 0xef, 0x8e, 0xed, 0x51, 0xd6, 0x3b, 0x9b, 0x99, 0x71, 0x4a, 0xb9, 0xe1, - 0x12, 0xf1, 0x08, 0x3c, 0x03, 0xb7, 0x08, 0xf1, 0x08, 0xdc, 0xf1, 0x4a, 0x68, 0xfe, 0xd6, 0xeb, - 0x38, 0x4b, 0x55, 0x08, 0x57, 0x3b, 0xe7, 0xdb, 0x73, 0x66, 0xe6, 0x7c, 0xe7, 0x6f, 0x60, 0x3d, - 0x62, 0xd3, 0x29, 0x4e, 0x63, 0xb1, 0x3b, 0x64, 0x98, 0xc7, 0x9d, 0x8c, 0x33, 0xc9, 0xd0, 0x6b, - 0x51, 0xd4, 0xc1, 0x3c, 0x9e, 0xd1, 0x94, 0x75, 0xa2, 0x84, 0x76, 0x9c, 0xd2, 0xc6, 0x2b, 0xb9, - 0xba, 0x5a, 0xb0, 0xd4, 0xe8, 0x07, 0x31, 0xdc, 0x3a, 0x50, 0xe6, 0x5d, 0x22, 0x31, 0x4d, 0x44, - 0x48, 0xce, 0xd1, 0xa7, 0xd0, 0xa0, 0xa9, 0x90, 0x38, 0x8d, 0x88, 0xef, 0x6d, 0x79, 0xdb, 0xcd, - 0xbd, 0xbb, 0x9d, 0x92, 0x5d, 0x3b, 0x3d, 0xab, 0x18, 0xe6, 0x26, 0x08, 0x41, 0x75, 0x74, 0x3e, - 0x4c, 0xfd, 0x1b, 0x5b, 0xde, 0xf6, 0x6a, 0xa8, 0xd7, 0xc1, 0x9f, 0x55, 0xb8, 0xbd, 0x78, 0x8c, - 0xc8, 0x72, 0x45, 0x6f, 0xae, 0xa8, 0xb0, 0x14, 0x4f, 0x89, 0x33, 0x56, 0x6b, 0xe4, 0x43, 0xfd, - 0x82, 0x70, 0x41, 0x59, 0xea, 0x57, 0x34, 0xec, 0x44, 0x14, 0x40, 0x2b, 0xe3, 0x2c, 0x23, 0x5c, - 0x52, 0x22, 0x7a, 0xb1, 0x5f, 0xd5, 0xbf, 0x17, 0x30, 0xb4, 0x0e, 0x35, 0x9c, 0x50, 0x2c, 0xfc, - 0x9a, 0xfe, 0x69, 0x04, 0xb4, 0x01, 0x0d, 0x36, 0x1a, 0xd1, 0x88, 0xe2, 0xc4, 0x5f, 0xd9, 0xf2, - 0xb6, 0x1b, 0x61, 0x2e, 0xa3, 0x57, 0x61, 0x25, 0xa3, 0x29, 0x9b, 0x49, 0xbf, 0xae, 0x4d, 0xac, - 0x84, 0x1e, 0x40, 0x3d, 0xc3, 0xd1, 0x19, 0x1e, 0x13, 0xbf, 0xa1, 0x69, 0xd9, 0x2a, 0xa5, 0xa5, - 0x6f, 0xf4, 0x42, 0x67, 0x80, 0x0e, 0xa0, 0x91, 0x25, 0x58, 0x8e, 0x18, 0x9f, 0xfa, 0xab, 0xda, - 0xf8, 0xed, 0x52, 0x63, 0x4d, 0x54, 0xdf, 0x6a, 0x87, 0xb9, 0x1d, 0xfa, 0x1a, 0xd6, 0x24, 0x63, - 0x89, 0xe8, 0x92, 0x8c, 0xa4, 0x31, 0x49, 0x23, 0x4a, 0x84, 0x0f, 0x5b, 0x95, 0xed, 0xe6, 0xde, - 0xbb, 0xa5, 0x9b, 0x1d, 0x5f, 0xb6, 0x08, 0x97, 0x37, 0x41, 0x87, 0x70, 0x33, 0x62, 0xe9, 0x88, - 0x8e, 0x07, 0x2c, 0x93, 0x94, 0xa5, 0xc2, 0x6f, 0xea, 0x6d, 0xef, 0x95, 0x6e, 0xfb, 0xb9, 0x56, - 0xff, 0x4a, 0x6b, 0x87, 0xed, 0xa8, 0x20, 0x09, 0xf4, 0x2d, 0xdc, 0xa1, 0x31, 0x49, 0x25, 0x1d, - 0xd1, 0x08, 0x2b, 0x68, 0x90, 0x71, 0x32, 0xf2, 0x5b, 0x7a, 0xcb, 0x9d, 0xf2, 0x54, 0x5a, 0xb0, - 0xe9, 0x73, 0x32, 0x0a, 0x11, 0x5d, 0xc2, 0x82, 0x47, 0x80, 0x96, 0x35, 0xd1, 0x87, 0x50, 0x9b, - 0x89, 0x61, 0xaf, 0x6b, 0x13, 0x76, 0xb3, 0xf4, 0x94, 0x93, 0xa3, 0x83, 0x5e, 0x37, 0x34, 0xca, - 0xc1, 0x0e, 0xd4, 0xb4, 0x8c, 0x6e, 0x43, 0xe5, 0xd4, 0x1a, 0xaf, 0x86, 0x6a, 0xa9, 0x90, 0x7e, - 0xaf, 0x6b, 0xf3, 0x50, 0x2d, 0x83, 0x3f, 0x3c, 0xa8, 0xdb, 0xb8, 0xa2, 0x4d, 0x80, 0x29, 0xa6, - 0xa9, 0xc4, 0x34, 0x25, 0xdc, 0x9a, 0x15, 0x10, 0x65, 0x3d, 0xe3, 0x89, 0xb3, 0x9e, 0xf1, 0x44, - 0x59, 0x3c, 0x23, 0x43, 0x41, 0x25, 0x39, 0x09, 0x0f, 0x6d, 0x1e, 0x17, 0x10, 0x95, 0xa6, 0x64, - 0x8a, 0x69, 0x62, 0x73, 0xd8, 0x08, 0x79, 0x39, 0xd4, 0x0a, 0xe5, 0xf0, 0x3e, 0x54, 0x27, 0x24, - 0xc9, 0x74, 0xda, 0x36, 0xf7, 0xde, 0x28, 0xf5, 0xf4, 0x0b, 0x92, 0x64, 0xa1, 0x56, 0x0d, 0x36, - 0xa1, 0xaa, 0x24, 0x95, 0xd9, 0x2c, 0x4d, 0x68, 0x4a, 0xec, 0x95, 0xad, 0x14, 0xfc, 0xe5, 0x41, - 0x7b, 0x21, 0xeb, 0x54, 0x65, 0x61, 0x1e, 0x4d, 0xa8, 0x24, 0x91, 0x9c, 0x71, 0xa7, 0xbf, 0x80, - 0xa9, 0x1a, 0x8a, 0xb0, 0x24, 0x63, 0xc6, 0x9f, 0x5b, 0x4f, 0x73, 0xd9, 0x11, 0x50, 0x99, 0x13, - 0xb0, 0x0d, 0xb7, 0xb4, 0xf5, 0x05, 0x79, 0x48, 0x13, 0xf2, 0x58, 0x79, 0x65, 0x5c, 0xbd, 0x0c, - 0xeb, 0x7d, 0x27, 0x24, 0x3a, 0x13, 0xb3, 0xa9, 0x75, 0x3c, 0x97, 0x15, 0x21, 0x82, 0xfe, 0x40, - 0xb4, 0xf3, 0x95, 0x50, 0xaf, 0x73, 0x92, 0xea, 0x73, 0x92, 0x82, 0x5f, 0x3c, 0x58, 0x5b, 0x4a, - 0x7d, 0xb5, 0xb3, 0x2d, 0x48, 0x17, 0xb4, 0x5c, 0x7e, 0xc9, 0xce, 0xf3, 0x00, 0xea, 0xe2, 0xb9, - 0x90, 0x64, 0x2a, 0xfc, 0xaa, 0xce, 0xeb, 0xf2, 0x5e, 0x70, 0x64, 0xf4, 0x42, 0x67, 0x10, 0xfc, - 0xec, 0x41, 0xdd, 0x82, 0x0b, 0xbe, 0x7a, 0xcb, 0xbe, 0x4e, 0x98, 0x90, 0xee, 0x46, 0x6a, 0x7d, - 0x15, 0x8b, 0x95, 0xab, 0x59, 0xb4, 0x11, 0xa8, 0xce, 0x23, 0xe0, 0xb8, 0xab, 0xcd, 0xb9, 0x0b, - 0x7e, 0xf2, 0xa0, 0x55, 0xac, 0x65, 0x9d, 0x22, 0x7a, 0x95, 0xa7, 0x88, 0xc1, 0xef, 0x42, 0xcb, - 0xac, 0x06, 0x09, 0x1e, 0x12, 0x97, 0xda, 0x4d, 0x83, 0x1d, 0x2a, 0x08, 0x7d, 0x02, 0x2b, 0x17, - 0x38, 0x99, 0x11, 0xe1, 0x57, 0x34, 0x25, 0x6f, 0xbd, 0xa0, 0x7b, 0x9c, 0x2a, 0xe5, 0xd0, 0xda, - 0x04, 0x4f, 0xa1, 0x59, 0x80, 0x55, 0x3d, 0xe8, 0x1f, 0xf6, 0x1a, 0x46, 0x40, 0x6f, 0x42, 0x53, - 0x2f, 0x16, 0x2e, 0x01, 0x1a, 0x32, 0x77, 0xd8, 0x80, 0x86, 0x20, 0x09, 0x89, 0x24, 0x89, 0x35, - 0x31, 0x8d, 0x30, 0x97, 0x83, 0xdf, 0x3c, 0xb8, 0xa9, 0xb3, 0x7c, 0x5f, 0x4a, 0x1c, 0x4d, 0xae, - 0x61, 0xd4, 0xbd, 0x0e, 0xab, 0x7a, 0xf6, 0x0e, 0x66, 0x9c, 0xba, 0x12, 0xd0, 0xc0, 0x09, 0xa7, - 0xea, 0xae, 0xe2, 0x8c, 0xc8, 0x68, 0x32, 0xc8, 0xb0, 0x9c, 0xb8, 0x92, 0x37, 0x50, 0x1f, 0xcb, - 0x09, 0xba, 0x07, 0x37, 0x05, 0x51, 0x61, 0x1b, 0x48, 0x3a, 0x25, 0x6a, 0xde, 0x98, 0x60, 0xb5, - 0x0d, 0x7a, 0x6c, 0xc0, 0xe0, 0x3b, 0x3b, 0xa1, 0xdd, 0xad, 0x45, 0x86, 0x1e, 0x41, 0x5b, 0x62, - 0x71, 0x36, 0xc8, 0x38, 0x1b, 0x73, 0x22, 0x84, 0xbd, 0x7b, 0x79, 0xbb, 0x3e, 0xc6, 0xe2, 0xac, - 0x6f, 0x95, 0xc3, 0x96, 0x2c, 0x48, 0xc1, 0x97, 0xd0, 0xd2, 0xdb, 0x1f, 0x52, 0x21, 0xff, 0x3b, - 0x25, 0xc1, 0xa1, 0xed, 0x24, 0x66, 0x3b, 0x91, 0xa1, 0x8f, 0xa1, 0x96, 0x31, 0x2e, 0xd5, 0x1d, - 0xff, 0x79, 0xa4, 0x74, 0x89, 0xd4, 0x71, 0xea, 0x33, 0x2e, 0x43, 0x63, 0x13, 0x8c, 0xac, 0xef, - 0xfa, 0xa0, 0x24, 0xb9, 0x86, 0x90, 0xad, 0x43, 0x4d, 0x47, 0xc8, 0x86, 0xcb, 0x08, 0xc1, 0xef, - 0x9e, 0x7d, 0x9f, 0xe4, 0x07, 0x89, 0x0c, 0x9d, 0xc2, 0x5a, 0xcc, 0x9e, 0xa5, 0x09, 0xc3, 0xf1, - 0x65, 0xa6, 0xdf, 0x29, 0xf7, 0xc2, 0x5a, 0xe4, 0x6c, 0xdf, 0x8e, 0x2f, 0x21, 0xcb, 0xd1, 0xbb, - 0xf1, 0xef, 0xa3, 0x37, 0x81, 0x35, 0x7d, 0xef, 0x93, 0x94, 0xfe, 0xcf, 0x14, 0x3d, 0x05, 0x74, - 0xf9, 0xa4, 0x6b, 0xce, 0x44, 0x62, 0xcb, 0xf3, 0x48, 0xa7, 0xff, 0xf5, 0x38, 0x72, 0x3e, 0x23, - 0xf9, 0x74, 0x32, 0x42, 0xf0, 0xc4, 0xe6, 0x94, 0x3b, 0x46, 0x64, 0xe8, 0x33, 0x58, 0xd1, 0x4e, - 0xba, 0x24, 0x2d, 0x7f, 0x9b, 0x19, 0x23, 0x12, 0xeb, 0x1d, 0x42, 0x6b, 0x15, 0xfc, 0x08, 0xed, - 0x85, 0x1f, 0xf9, 0x30, 0xf1, 0x0a, 0xc3, 0x24, 0x7f, 0x88, 0xde, 0x28, 0x3e, 0x44, 0xdd, 0x23, - 0xb8, 0x52, 0x78, 0x04, 0xbf, 0x07, 0x77, 0xc8, 0xf7, 0x92, 0xf0, 0x14, 0x27, 0x6e, 0x20, 0x9f, - 0xe4, 0xad, 0xfc, 0xaa, 0x5f, 0xc1, 0xaf, 0x1e, 0xb4, 0x8a, 0xf5, 0xa3, 0x26, 0x17, 0x8e, 0xe3, - 0x3c, 0x22, 0xab, 0xa1, 0x13, 0xf5, 0x0c, 0x54, 0x2f, 0xff, 0x88, 0xb9, 0xfe, 0x99, 0xcb, 0xaa, - 0x23, 0xb9, 0xb5, 0xed, 0xb0, 0xe6, 0x5a, 0x6d, 0x87, 0x9a, 0x26, 0x3b, 0xa7, 0xab, 0xfa, 0x02, - 0xba, 0xf2, 0x56, 0xd0, 0x93, 0x64, 0x9a, 0xd3, 0x75, 0x6e, 0x23, 0xa0, 0x7e, 0xec, 0x5f, 0x4b, - 0xca, 0xaa, 0x5e, 0x6b, 0x5a, 0x29, 0xe6, 0x63, 0xc5, 0x70, 0x45, 0xf7, 0x5a, 0x0d, 0xed, 0xf3, - 0xb1, 0x08, 0x42, 0x5b, 0xdf, 0xf9, 0x91, 0x2f, 0x15, 0xf5, 0xab, 0xdd, 0xf8, 0xa8, 0xd0, 0xea, - 0xd4, 0x8f, 0x2b, 0xa3, 0x8e, 0xa0, 0xfa, 0xf0, 0xc9, 0xc1, 0x63, 0x37, 0xc4, 0xd5, 0xfa, 0xe0, - 0xfe, 0x37, 0x3b, 0x63, 0x2a, 0x27, 0xb3, 0xa1, 0x3a, 0x61, 0xd7, 0x9e, 0xe8, 0xbe, 0xf7, 0xa3, - 0x84, 0xee, 0xf2, 0x2c, 0xda, 0x75, 0xa7, 0x0f, 0x57, 0x34, 0xfb, 0x1f, 0xfc, 0x1d, 0x00, 0x00, - 0xff, 0xff, 0x3a, 0x2d, 0xa5, 0x01, 0xf1, 0x0d, 0x00, 0x00, + // 1241 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xb4, 0x17, 0x5b, 0x6f, 0x1b, 0x45, + 0x57, 0x1b, 0xdb, 0xb1, 0x73, 0x6c, 0xb7, 0xcd, 0xb4, 0x5f, 0xbf, 0x55, 0x11, 0xc5, 0x5d, 0x51, + 0x64, 0xa8, 0xea, 0x40, 0x41, 0x42, 0x2a, 0x17, 0xa9, 0xc6, 0xaa, 0x70, 0x15, 0x8a, 0x3b, 0x6d, + 0x2a, 0x84, 0x40, 0xee, 0x78, 0x77, 0x6c, 0x8f, 0xb2, 0xde, 0xd9, 0xcc, 0x8c, 0x5b, 0xca, 0x0b, + 0x8f, 0x88, 0x9f, 0xc0, 0x23, 0xcf, 0xbc, 0x22, 0xc4, 0x4f, 0xe0, 0x8d, 0xbf, 0x84, 0xe6, 0xb6, + 0x59, 0xc7, 0x71, 0xab, 0x42, 0x78, 0xf2, 0x39, 0x67, 0xcf, 0xfd, 0x3a, 0x86, 0x4b, 0x31, 0x5f, + 0x2c, 0x48, 0x96, 0xc8, 0xbd, 0x09, 0x27, 0x22, 0xe9, 0xe5, 0x82, 0x2b, 0x8e, 0xfe, 0x1f, 0xc7, + 0x3d, 0x22, 0x92, 0x25, 0xcb, 0x78, 0x2f, 0x4e, 0x59, 0xcf, 0x33, 0x5d, 0xf9, 0x5f, 0xc1, 0xae, + 0x01, 0x9e, 0x59, 0xfe, 0xe8, 0x97, 0x00, 0xce, 0xf7, 0xb5, 0xfc, 0x80, 0x2a, 0xc2, 0x52, 0x89, + 0xe9, 0x11, 0xfa, 0x04, 0x1a, 0x2c, 0x93, 0x8a, 0x64, 0x31, 0x0d, 0x83, 0x4e, 0xd0, 0x6d, 0xde, + 0xba, 0xd6, 0xdb, 0xa0, 0xb6, 0x37, 0x74, 0x8c, 0xb8, 0x10, 0x41, 0x97, 0xa1, 0x3a, 0x3d, 0x9a, + 0x64, 0xe1, 0x56, 0x27, 0xe8, 0xee, 0xf4, 0xb7, 0xc2, 0x00, 0x1b, 0x1c, 0x5d, 0x82, 0x9a, 0xf1, + 0x34, 0xac, 0xe8, 0x0f, 0xd8, 0x22, 0xe8, 0x1a, 0xb4, 0x0c, 0x30, 0x8e, 0x79, 0x36, 0x65, 0xb3, + 0xb0, 0xda, 0xa9, 0x74, 0x77, 0x70, 0xd3, 0xd0, 0x3e, 0x33, 0xa4, 0xe8, 0xcf, 0x2a, 0x5c, 0x58, + 0xf5, 0x51, 0xe6, 0x08, 0x39, 0x2b, 0x81, 0x51, 0x66, 0x2d, 0x20, 0xa8, 0x66, 0x64, 0x41, 0xad, + 0x65, 0x6c, 0x60, 0x14, 0x42, 0xfd, 0x29, 0x15, 0x92, 0xf1, 0xcc, 0xd9, 0xf5, 0x28, 0x8a, 0xa0, + 0x95, 0x0b, 0x9e, 0x53, 0xa1, 0x18, 0x95, 0xc3, 0x24, 0xac, 0x9a, 0xcf, 0x2b, 0x34, 0xed, 0x33, + 0x49, 0x19, 0x91, 0x61, 0xcd, 0xfa, 0x6c, 0x10, 0x74, 0x05, 0x1a, 0x7c, 0x3a, 0x65, 0x31, 0x23, + 0x69, 0xb8, 0xdd, 0x09, 0xba, 0x0d, 0x5c, 0xe0, 0xe8, 0x32, 0x6c, 0xe7, 0x2c, 0xe3, 0x4b, 0x15, + 0xd6, 0x8d, 0x88, 0xc3, 0xd0, 0x6d, 0xa8, 0xe7, 0x24, 0x3e, 0x24, 0x33, 0x1a, 0x36, 0x4c, 0x4e, + 0x3b, 0x1b, 0x73, 0x3a, 0xb2, 0x7c, 0xd8, 0x0b, 0xa0, 0x3e, 0x34, 0xf2, 0x94, 0xa8, 0x29, 0x17, + 0x8b, 0x70, 0xc7, 0x08, 0xbf, 0xb5, 0x51, 0xd8, 0x24, 0x6a, 0xe4, 0xb8, 0x71, 0x21, 0x87, 0xbe, + 0x82, 0x5d, 0xc5, 0x79, 0x2a, 0x07, 0x34, 0xa7, 0x59, 0x42, 0xb3, 0x98, 0x51, 0x19, 0x42, 0xa7, + 0xd2, 0x6d, 0xde, 0x7a, 0x67, 0xa3, 0xb2, 0x47, 0x27, 0x25, 0xf0, 0xba, 0x12, 0xb4, 0x0f, 0xe7, + 0x6c, 0xed, 0xc6, 0x3c, 0x57, 0x8c, 0x67, 0x32, 0x6c, 0x1a, 0xb5, 0xd7, 0x37, 0xaa, 0xb5, 0x75, + 0xfd, 0xd2, 0x70, 0xe3, 0x76, 0x5c, 0xc2, 0x24, 0xfa, 0x06, 0x2e, 0xb2, 0x84, 0x66, 0x8a, 0x4d, + 0x59, 0x4c, 0x34, 0x69, 0x9c, 0x0b, 0x3a, 0x0d, 0x5b, 0x46, 0xe5, 0x8d, 0xcd, 0x7d, 0xb8, 0x22, + 0x33, 0x12, 0x74, 0x8a, 0x11, 0x5b, 0xa3, 0x45, 0xf7, 0x00, 0xad, 0x73, 0xa2, 0x0f, 0xa0, 0xb6, + 0x94, 0x93, 0xe1, 0xc0, 0x75, 0xfb, 0xd5, 0x8d, 0x56, 0x0e, 0x1e, 0xf6, 0x87, 0x03, 0x6c, 0x99, + 0xa3, 0x1b, 0x50, 0x33, 0x38, 0xba, 0x00, 0x95, 0xc7, 0x4e, 0x78, 0x07, 0x6b, 0x50, 0x53, 0x46, + 0xc3, 0x81, 0xeb, 0x43, 0x0d, 0x46, 0x7f, 0x04, 0x50, 0x77, 0x75, 0x45, 0x57, 0x01, 0x16, 0x84, + 0x65, 0x8a, 0xb0, 0x8c, 0x0a, 0x27, 0x56, 0xa2, 0x68, 0xe9, 0xa5, 0x48, 0xbd, 0xf4, 0x52, 0xa4, + 0x5a, 0xe2, 0x19, 0x9d, 0x48, 0xa6, 0xe8, 0x01, 0xde, 0x77, 0x7d, 0x5c, 0xa2, 0xe8, 0x36, 0xa5, + 0x0b, 0xc2, 0x52, 0xd7, 0xc3, 0x16, 0x29, 0xc6, 0xa1, 0x56, 0x1a, 0x87, 0xf7, 0xa0, 0x3a, 0xa7, + 0x69, 0x6e, 0xda, 0xb6, 0x79, 0xeb, 0xf5, 0x8d, 0x91, 0x7e, 0x4e, 0xd3, 0x1c, 0x1b, 0xd6, 0xe8, + 0x2a, 0x54, 0x35, 0xa6, 0x3b, 0x9b, 0x67, 0x29, 0xcb, 0xa8, 0x73, 0xd9, 0x61, 0xd1, 0x5f, 0x01, + 0xb4, 0x57, 0xba, 0x4e, 0x4f, 0x16, 0x11, 0xf1, 0x9c, 0x29, 0x1a, 0xab, 0xa5, 0xf0, 0xfc, 0x2b, + 0x34, 0x3d, 0x43, 0x31, 0x51, 0x74, 0xc6, 0xc5, 0x73, 0x17, 0x69, 0x81, 0xfb, 0x04, 0x54, 0x8e, + 0x13, 0xd0, 0x85, 0xf3, 0x46, 0xfa, 0x29, 0xbd, 0xcb, 0x52, 0x7a, 0x5f, 0x47, 0x65, 0x43, 0x3d, + 0x49, 0x36, 0x7a, 0xe7, 0x34, 0x3e, 0x94, 0xcb, 0x85, 0x0b, 0xbc, 0xc0, 0x75, 0x42, 0x24, 0xfb, + 0x9e, 0x9a, 0xe0, 0x2b, 0xd8, 0xc0, 0x45, 0x92, 0xea, 0xc7, 0x49, 0x8a, 0x7e, 0x0e, 0x60, 0x77, + 0xad, 0xf5, 0xb5, 0x66, 0x37, 0x90, 0xbe, 0x68, 0x05, 0xfe, 0x8a, 0x9b, 0xe7, 0x36, 0xd4, 0xe5, + 0x73, 0xa9, 0xe8, 0x42, 0x9a, 0x75, 0xf7, 0xa2, 0x5d, 0xf0, 0xd0, 0xf2, 0x61, 0x2f, 0x10, 0xfd, + 0x14, 0x40, 0xdd, 0x11, 0x57, 0x62, 0x0d, 0xd6, 0x63, 0x9d, 0x73, 0xa9, 0xbc, 0x47, 0x1a, 0x3e, + 0x2d, 0x8b, 0x95, 0xd3, 0xb3, 0xe8, 0x2a, 0x50, 0x3d, 0xae, 0x80, 0xcf, 0x5d, 0xed, 0x38, 0x77, + 0xd1, 0x8f, 0x01, 0xb4, 0xca, 0xb3, 0x6c, 0x5a, 0xc4, 0x40, 0x45, 0x8b, 0x58, 0xfa, 0x35, 0x68, + 0x59, 0x68, 0x9c, 0x92, 0x09, 0xf5, 0xad, 0xdd, 0xb4, 0xb4, 0x7d, 0x4d, 0x42, 0x1f, 0xc3, 0xf6, + 0x53, 0x92, 0x2e, 0xa9, 0x0c, 0x2b, 0x26, 0x25, 0x6f, 0xbe, 0x64, 0x7b, 0x3c, 0xd6, 0xcc, 0xd8, + 0xc9, 0x44, 0x4f, 0xa0, 0x59, 0x22, 0xeb, 0x79, 0x30, 0x1f, 0x9c, 0x1b, 0x16, 0x41, 0x6f, 0x40, + 0xd3, 0x00, 0x2b, 0x4e, 0x80, 0x21, 0x59, 0x1f, 0xae, 0x40, 0x43, 0xd2, 0x94, 0xc6, 0x8a, 0xda, + 0x23, 0xd5, 0xc0, 0x05, 0x1e, 0xfd, 0x16, 0xc0, 0x39, 0xd3, 0xe5, 0x77, 0x94, 0x22, 0xf1, 0xfc, + 0x0c, 0xee, 0xe4, 0x6b, 0xb0, 0x63, 0x2f, 0xdf, 0x52, 0x30, 0x3f, 0x02, 0x86, 0x70, 0x20, 0x98, + 0xf6, 0x55, 0x1e, 0x52, 0x15, 0xcf, 0xc7, 0x39, 0x51, 0x73, 0x3f, 0xf2, 0x96, 0x34, 0x22, 0x6a, + 0x8e, 0xae, 0xc3, 0x39, 0x49, 0x75, 0xd9, 0xc6, 0x8a, 0x2d, 0xa8, 0xbe, 0x37, 0xb6, 0x58, 0x6d, + 0x4b, 0x7d, 0x64, 0x89, 0xd1, 0xb7, 0xee, 0xbc, 0x7b, 0xaf, 0x65, 0x8e, 0xee, 0x41, 0x5b, 0x11, + 0x79, 0x38, 0xce, 0x05, 0x9f, 0x09, 0x2a, 0xa5, 0xf3, 0x7d, 0xf3, 0xba, 0x7e, 0x44, 0xe4, 0xe1, + 0xc8, 0x31, 0xe3, 0x96, 0x2a, 0x61, 0xd1, 0x17, 0xd0, 0x32, 0xea, 0xf7, 0x99, 0x54, 0xff, 0x3e, + 0x25, 0xd1, 0xbe, 0xdb, 0x24, 0x56, 0x9d, 0xcc, 0xd1, 0x47, 0x50, 0xcb, 0xb9, 0x50, 0xda, 0xc7, + 0x17, 0x9f, 0x94, 0x01, 0x55, 0xa6, 0x4e, 0x23, 0x2e, 0x14, 0xb6, 0x32, 0xd1, 0xd4, 0xc5, 0x6e, + 0x0c, 0xa5, 0xe9, 0x19, 0x94, 0xac, 0x78, 0xc2, 0x6c, 0x95, 0x9e, 0x30, 0xd1, 0xef, 0x81, 0x7b, + 0x9f, 0x14, 0x86, 0x64, 0x8e, 0x1e, 0xc3, 0x6e, 0xc2, 0x9f, 0x65, 0x29, 0x27, 0xc9, 0xc9, 0x4c, + 0xbf, 0xbd, 0x39, 0x0a, 0x27, 0x51, 0x64, 0xfb, 0x42, 0x72, 0x82, 0xb2, 0x5e, 0xbd, 0xad, 0x7f, + 0x5e, 0xbd, 0x39, 0xec, 0x1a, 0xbf, 0x0f, 0x32, 0xf6, 0x1f, 0xa7, 0xe8, 0x09, 0xa0, 0x93, 0x96, + 0xce, 0xb8, 0x13, 0xa9, 0x1b, 0xcf, 0x87, 0xa6, 0xfd, 0xcf, 0x26, 0x90, 0xa3, 0x25, 0x2d, 0xae, + 0x93, 0x45, 0xa2, 0x07, 0xae, 0xa7, 0xbc, 0x19, 0x99, 0xa3, 0x4f, 0x61, 0xdb, 0x04, 0xe9, 0x9b, + 0x74, 0xf3, 0xdb, 0xcc, 0x0a, 0xd1, 0xc4, 0x68, 0xc0, 0x4e, 0x2a, 0xfa, 0x01, 0xda, 0x2b, 0x1f, + 0x8a, 0x63, 0x12, 0x94, 0x8e, 0x49, 0xf1, 0x10, 0xdd, 0x2a, 0x3f, 0x44, 0xfd, 0x23, 0xb8, 0x52, + 0x7a, 0x04, 0xbf, 0x0b, 0x17, 0xe9, 0x77, 0x8a, 0x8a, 0x8c, 0xa4, 0xfe, 0x20, 0x1f, 0x14, 0xab, + 0xfc, 0xb4, 0x4f, 0xd1, 0xaf, 0x01, 0xb4, 0xca, 0xf3, 0xa3, 0x2f, 0x17, 0x49, 0x92, 0xa2, 0x22, + 0x3b, 0xd8, 0xa3, 0xe6, 0x06, 0xea, 0xff, 0x0d, 0x31, 0xf7, 0xfb, 0xb3, 0xc0, 0xf5, 0x46, 0xf2, + 0xb0, 0xdb, 0xb0, 0xd6, 0xad, 0xb6, 0xa7, 0xda, 0x25, 0x7b, 0x9c, 0xae, 0xea, 0x4b, 0xd2, 0x55, + 0xac, 0x82, 0xa1, 0xa2, 0x8b, 0x22, 0x5d, 0x47, 0xae, 0x02, 0xfa, 0xc3, 0x9d, 0x33, 0x69, 0x59, + 0xbd, 0x6b, 0xed, 0x2a, 0x25, 0x62, 0xa6, 0x33, 0x5c, 0x31, 0xbb, 0xd6, 0x90, 0xee, 0x88, 0x99, + 0x8c, 0xb0, 0x9b, 0xef, 0xc2, 0xe4, 0x2b, 0x55, 0xfd, 0xf4, 0x30, 0x3e, 0x2c, 0xad, 0x3a, 0xfd, + 0xe1, 0xd4, 0xaa, 0x23, 0xa8, 0xde, 0x7d, 0xd0, 0xbf, 0xef, 0x8f, 0xb8, 0x86, 0xfb, 0x37, 0xbf, + 0xbe, 0x31, 0x63, 0x6a, 0xbe, 0x9c, 0x68, 0x0b, 0x7b, 0xce, 0xa2, 0xff, 0xbd, 0x19, 0xa7, 0x6c, + 0x4f, 0xe4, 0xf1, 0x9e, 0xb7, 0x3e, 0xd9, 0x36, 0xd9, 0x7f, 0xff, 0xef, 0x00, 0x00, 0x00, 0xff, + 0xff, 0x4e, 0xab, 0xcd, 0x16, 0x2f, 0x0e, 0x00, 0x00, } diff --git a/rpc/commands/board.proto b/rpc/commands/board.proto index c7051e9f726..99732d8565a 100644 --- a/rpc/commands/board.proto +++ b/rpc/commands/board.proto @@ -24,9 +24,12 @@ import "commands/common.proto"; message BoardDetailsReq { // Arduino Core Service instance from the `Init` response. Instance instance = 1; + // DEPRECATED: use "board" and "board_config" fields instead. + string fqbn = 2 [deprecated=true]; // The fully qualified board name of the board you want information about - // (e.g., `arduino:avr:uno`). - string fqbn = 2; + // (e.g., `arduino:avr:uno`) or the board alias. + string board = 3; + repeated string board_config = 4; } message BoardDetailsResp { diff --git a/rpc/commands/compile.pb.go b/rpc/commands/compile.pb.go index 7904282a7a8..71fb76614a6 100644 --- a/rpc/commands/compile.pb.go +++ b/rpc/commands/compile.pb.go @@ -39,6 +39,7 @@ type CompileReq struct { OptimizeForDebug bool `protobuf:"varint,16,opt,name=optimizeForDebug,proto3" json:"optimizeForDebug,omitempty"` DryRun bool `protobuf:"varint,17,opt,name=dryRun,proto3" json:"dryRun,omitempty"` Board string `protobuf:"bytes,18,opt,name=board,proto3" json:"board,omitempty"` + BoardConfig []string `protobuf:"bytes,19,rep,name=board_config,json=boardConfig,proto3" json:"board_config,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -196,6 +197,13 @@ func (m *CompileReq) GetBoard() string { return "" } +func (m *CompileReq) GetBoardConfig() []string { + if m != nil { + return m.BoardConfig + } + return nil +} + type CompileResp struct { OutStream []byte `protobuf:"bytes,1,opt,name=out_stream,json=outStream,proto3" json:"out_stream,omitempty"` ErrStream []byte `protobuf:"bytes,2,opt,name=err_stream,json=errStream,proto3" json:"err_stream,omitempty"` @@ -251,34 +259,35 @@ func init() { func init() { proto.RegisterFile("commands/compile.proto", fileDescriptor_86bc582849c76c3d) } var fileDescriptor_86bc582849c76c3d = []byte{ - // 452 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0x41, 0x6f, 0xd3, 0x40, - 0x10, 0x85, 0xe5, 0x34, 0x49, 0x93, 0x49, 0x69, 0xcb, 0x0a, 0xc2, 0xaa, 0x02, 0x64, 0x7a, 0x40, - 0x16, 0xa8, 0x8e, 0x04, 0x67, 0x2e, 0x2d, 0xaa, 0x84, 0xb8, 0x44, 0xe6, 0xc6, 0x05, 0xd9, 0xeb, - 0x21, 0x5e, 0xb0, 0xbd, 0xce, 0xec, 0xba, 0x05, 0xfe, 0x22, 0x7f, 0x0a, 0xed, 0x38, 0x4e, 0xa2, - 0xa0, 0x9e, 0x92, 0xf7, 0xcd, 0xdb, 0xd9, 0xb7, 0xd6, 0x83, 0xb9, 0x32, 0x55, 0x95, 0xd6, 0xb9, - 0x5d, 0x28, 0x53, 0x35, 0xba, 0xc4, 0xb8, 0x21, 0xe3, 0x8c, 0x78, 0xa6, 0x54, 0x9c, 0x52, 0xde, - 0xea, 0xda, 0xc4, 0xaa, 0xd4, 0x71, 0x6f, 0xbb, 0x78, 0xba, 0x7f, 0xa0, 0x32, 0x75, 0xe7, 0xbf, - 0xfc, 0x3b, 0x04, 0xb8, 0xe9, 0x36, 0x24, 0xb8, 0x16, 0x1f, 0x60, 0xa2, 0x6b, 0xeb, 0xd2, 0x5a, - 0xa1, 0x0c, 0xc2, 0x20, 0x9a, 0xbd, 0x7b, 0x15, 0x3f, 0xb0, 0x31, 0xfe, 0xb4, 0x31, 0x26, 0xdb, - 0x23, 0x62, 0x0e, 0xc3, 0xef, 0xeb, 0xac, 0x96, 0x83, 0x30, 0x88, 0xa6, 0xd7, 0x03, 0x19, 0x24, - 0xac, 0xc5, 0x4b, 0x00, 0xfb, 0x13, 0x9d, 0x2a, 0x96, 0xa9, 0x2b, 0xe4, 0x91, 0x9f, 0x26, 0x7b, - 0x44, 0xbc, 0x86, 0x53, 0x5b, 0x98, 0xfb, 0x25, 0x99, 0x06, 0xc9, 0x69, 0xb4, 0x72, 0x18, 0x06, - 0xd1, 0x24, 0x39, 0xa0, 0x7e, 0x4f, 0x43, 0xd8, 0x90, 0x51, 0x68, 0xad, 0x1c, 0xb1, 0x67, 0x8f, - 0xf8, 0x3d, 0x59, 0xab, 0xcb, 0xfc, 0x26, 0x55, 0x05, 0xf2, 0x5d, 0x63, 0xbe, 0xeb, 0x80, 0x8a, - 0xe7, 0x30, 0x65, 0xc2, 0x96, 0x63, 0xb6, 0xec, 0x80, 0x88, 0xe0, 0xac, 0x13, 0xbb, 0x38, 0x93, - 0xf0, 0x28, 0x9a, 0x26, 0x87, 0x58, 0x5c, 0xc0, 0xe4, 0x3e, 0xa5, 0x5a, 0xd7, 0x2b, 0x2b, 0xa7, - 0xbc, 0x66, 0xab, 0x85, 0x84, 0xe3, 0x3b, 0xa4, 0xcc, 0x58, 0x94, 0xc0, 0x41, 0x7b, 0x29, 0x9e, - 0xc0, 0x68, 0xdd, 0x6a, 0x74, 0x72, 0xc6, 0xbc, 0x13, 0x62, 0x0e, 0xe3, 0x3b, 0x9d, 0x2f, 0x75, - 0x2e, 0x4f, 0x78, 0xd3, 0x46, 0xf9, 0x37, 0xe3, 0xaf, 0xc6, 0x90, 0xbb, 0xd5, 0x25, 0xca, 0x47, - 0xdd, 0xb7, 0xdb, 0x11, 0x21, 0x60, 0xf8, 0xc3, 0x64, 0x56, 0x9e, 0x86, 0x41, 0x34, 0x4a, 0xf8, - 0xbf, 0x7f, 0x5f, 0xa9, 0x33, 0x4a, 0xc9, 0x67, 0x3f, 0xe3, 0xec, 0x3b, 0x20, 0xde, 0xc0, 0xb9, - 0x69, 0x9c, 0xae, 0xf4, 0x1f, 0xbc, 0x35, 0xf4, 0x11, 0xb3, 0x76, 0x25, 0xcf, 0x39, 0xca, 0x7f, - 0xdc, 0xa7, 0xca, 0xe9, 0x77, 0xd2, 0xd6, 0xf2, 0x31, 0x3b, 0x36, 0xca, 0xbf, 0x21, 0x33, 0x29, - 0xe5, 0x52, 0x70, 0xa0, 0x4e, 0x5c, 0x7e, 0x86, 0xd9, 0xb6, 0x4c, 0xb6, 0x11, 0x2f, 0x00, 0x4c, - 0xeb, 0xbe, 0x59, 0x47, 0x98, 0x56, 0xdc, 0xa7, 0x93, 0x64, 0x6a, 0x5a, 0xf7, 0x85, 0x81, 0x1f, - 0x23, 0x51, 0x3f, 0x1e, 0x74, 0x63, 0x24, 0xea, 0xc6, 0xd7, 0x57, 0x5f, 0xdf, 0xae, 0xb4, 0x2b, - 0xda, 0xcc, 0x57, 0x6e, 0xb1, 0xa9, 0x60, 0xff, 0x7b, 0xa5, 0x4a, 0xbd, 0xa0, 0x46, 0x2d, 0xfa, - 0x3a, 0x66, 0x63, 0x2e, 0xf4, 0xfb, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x32, 0xb5, 0x2e, 0x3e, - 0x1a, 0x03, 0x00, 0x00, + // 470 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x92, 0xc1, 0x6f, 0xd3, 0x30, + 0x14, 0xc6, 0x95, 0xae, 0xed, 0xda, 0xd7, 0xb2, 0x0d, 0x03, 0xc5, 0x9a, 0x00, 0x65, 0x3b, 0xa0, + 0x08, 0xb4, 0x54, 0x82, 0x33, 0x97, 0x15, 0x4d, 0x42, 0x5c, 0xaa, 0x70, 0xe3, 0x32, 0x25, 0x8e, + 0xd7, 0x18, 0x12, 0x3b, 0x7d, 0x76, 0x36, 0xe0, 0x8f, 0xe6, 0x6f, 0x40, 0x7e, 0x69, 0xda, 0xaa, + 0x68, 0xa7, 0xf8, 0xfb, 0xbd, 0xcf, 0xcf, 0xdf, 0x8b, 0x1e, 0xcc, 0x84, 0xa9, 0xaa, 0x54, 0xe7, + 0x76, 0x2e, 0x4c, 0x55, 0xab, 0x52, 0xc6, 0x35, 0x1a, 0x67, 0xd8, 0x4b, 0x21, 0xe2, 0x14, 0xf3, + 0x46, 0x69, 0x13, 0x8b, 0x52, 0xc5, 0x9d, 0xed, 0xfc, 0xc5, 0xfe, 0x85, 0xca, 0xe8, 0xd6, 0x7f, + 0xf9, 0xb7, 0x0f, 0xb0, 0x68, 0x3b, 0x24, 0x72, 0xcd, 0x3e, 0xc1, 0x48, 0x69, 0xeb, 0x52, 0x2d, + 0x24, 0x0f, 0xc2, 0x20, 0x9a, 0x7c, 0xb8, 0x88, 0x1f, 0xe9, 0x18, 0x7f, 0xd9, 0x18, 0x93, 0xed, + 0x15, 0x36, 0x83, 0xfe, 0xdd, 0x3a, 0xd3, 0xbc, 0x17, 0x06, 0xd1, 0xf8, 0xba, 0xc7, 0x83, 0x84, + 0x34, 0x7b, 0x03, 0x60, 0x7f, 0x4a, 0x27, 0x8a, 0x65, 0xea, 0x0a, 0x7e, 0xe4, 0xab, 0xc9, 0x1e, + 0x61, 0x6f, 0xe1, 0xc4, 0x16, 0xe6, 0x61, 0x89, 0xa6, 0x96, 0xe8, 0x94, 0xb4, 0xbc, 0x1f, 0x06, + 0xd1, 0x28, 0x39, 0xa0, 0xbe, 0x4f, 0x8d, 0xb2, 0x46, 0x23, 0xa4, 0xb5, 0x7c, 0x40, 0x9e, 0x3d, + 0xe2, 0xfb, 0x64, 0x8d, 0x2a, 0xf3, 0x45, 0x2a, 0x0a, 0x49, 0x6f, 0x0d, 0xe9, 0xad, 0x03, 0xca, + 0x5e, 0xc1, 0x98, 0x08, 0x59, 0x8e, 0xc9, 0xb2, 0x03, 0x2c, 0x82, 0xd3, 0x56, 0xec, 0xe2, 0x8c, + 0xc2, 0xa3, 0x68, 0x9c, 0x1c, 0x62, 0x76, 0x0e, 0xa3, 0x87, 0x14, 0xb5, 0xd2, 0x2b, 0xcb, 0xc7, + 0xd4, 0x66, 0xab, 0x19, 0x87, 0xe3, 0x7b, 0x89, 0x99, 0xb1, 0x92, 0x03, 0x05, 0xed, 0x24, 0x7b, + 0x0e, 0x83, 0x75, 0xa3, 0xa4, 0xe3, 0x13, 0xe2, 0xad, 0x60, 0x33, 0x18, 0xde, 0xab, 0x7c, 0xa9, + 0x72, 0x3e, 0xa5, 0x4e, 0x1b, 0xe5, 0x67, 0x96, 0xbf, 0x6a, 0x83, 0xee, 0x46, 0x95, 0x92, 0x3f, + 0x69, 0xff, 0xdd, 0x8e, 0x30, 0x06, 0xfd, 0x1f, 0x26, 0xb3, 0xfc, 0x24, 0x0c, 0xa2, 0x41, 0x42, + 0x67, 0x3f, 0x5f, 0xa9, 0x32, 0x4c, 0xd1, 0x67, 0x3f, 0xa5, 0xec, 0x3b, 0xc0, 0xde, 0xc1, 0x99, + 0xa9, 0x9d, 0xaa, 0xd4, 0x1f, 0x79, 0x63, 0xf0, 0xb3, 0xcc, 0x9a, 0x15, 0x3f, 0xa3, 0x28, 0xff, + 0x71, 0x9f, 0x2a, 0xc7, 0xdf, 0x49, 0xa3, 0xf9, 0x53, 0x72, 0x6c, 0x94, 0x9f, 0x21, 0x33, 0x29, + 0xe6, 0x9c, 0x51, 0xa0, 0x56, 0xb0, 0x0b, 0x98, 0xd2, 0xe1, 0x56, 0x18, 0x7d, 0xa7, 0x56, 0xfc, + 0x19, 0x3d, 0x3d, 0x21, 0xb6, 0x20, 0x74, 0xf9, 0x15, 0x26, 0xdb, 0x7d, 0xb3, 0x35, 0x7b, 0x0d, + 0x60, 0x1a, 0x77, 0x6b, 0x1d, 0xca, 0xb4, 0xa2, 0x95, 0x9b, 0x26, 0x63, 0xd3, 0xb8, 0x6f, 0x04, + 0x7c, 0x59, 0x22, 0x76, 0xe5, 0x5e, 0x5b, 0x96, 0x88, 0x6d, 0xf9, 0xfa, 0xea, 0xfb, 0xfb, 0x95, + 0x72, 0x45, 0x93, 0xf9, 0xad, 0x9c, 0x6f, 0xb6, 0xb4, 0xfb, 0x5e, 0x89, 0x52, 0xcd, 0xb1, 0x16, + 0xf3, 0x6e, 0x63, 0xb3, 0x21, 0xed, 0xfc, 0xc7, 0x7f, 0x01, 0x00, 0x00, 0xff, 0xff, 0x9f, 0x58, + 0x74, 0x81, 0x3d, 0x03, 0x00, 0x00, } diff --git a/rpc/commands/compile.proto b/rpc/commands/compile.proto index f7707b1987f..e5167f413e3 100644 --- a/rpc/commands/compile.proto +++ b/rpc/commands/compile.proto @@ -23,7 +23,7 @@ import "commands/common.proto"; message CompileReq { Instance instance = 1; - string fqbn = 2 [deprecated=true]; // Fully Qualified Board Name, e.g.: arduino:avr:uno. DEPRECATED: use "board" field instead. + string fqbn = 2 [deprecated=true]; // Fully Qualified Board Name, e.g.: arduino:avr:uno. DEPRECATED: use "board" and "board_config" fields instead. string sketchPath = 3; bool showProperties = 4; // Show all build preferences used instead of compiling. bool preprocess = 5; // Print preprocessed code to stdout. @@ -40,6 +40,7 @@ message CompileReq { bool optimizeForDebug = 16; // Optimize compile output for debug, not for release bool dryRun = 17; // When set to true the compiled binary will not be copied to the export directory string board = 18; // Board FQBN or Board alias + repeated string board_config = 19; } message CompileResp { diff --git a/rpc/commands/upload.pb.go b/rpc/commands/upload.pb.go index 7f509c025b6..c4ed7dbf66c 100644 --- a/rpc/commands/upload.pb.go +++ b/rpc/commands/upload.pb.go @@ -29,6 +29,7 @@ type UploadReq struct { Verify bool `protobuf:"varint,6,opt,name=verify,proto3" json:"verify,omitempty"` ImportFile string `protobuf:"bytes,7,opt,name=import_file,json=importFile,proto3" json:"import_file,omitempty"` Board string `protobuf:"bytes,8,opt,name=board,proto3" json:"board,omitempty"` + BoardConfig []string `protobuf:"bytes,9,rep,name=board_config,json=boardConfig,proto3" json:"board_config,omitempty"` XXX_NoUnkeyedLiteral struct{} `json:"-"` XXX_unrecognized []byte `json:"-"` XXX_sizecache int32 `json:"-"` @@ -116,6 +117,13 @@ func (m *UploadReq) GetBoard() string { return "" } +func (m *UploadReq) GetBoardConfig() []string { + if m != nil { + return m.BoardConfig + } + return nil +} + type UploadResp struct { OutStream []byte `protobuf:"bytes,1,opt,name=out_stream,json=outStream,proto3" json:"out_stream,omitempty"` ErrStream []byte `protobuf:"bytes,2,opt,name=err_stream,json=errStream,proto3" json:"err_stream,omitempty"` @@ -171,25 +179,26 @@ func init() { func init() { proto.RegisterFile("commands/upload.proto", fileDescriptor_cd642cc079f8acdb) } var fileDescriptor_cd642cc079f8acdb = []byte{ - // 306 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0x3f, 0x4f, 0xc3, 0x30, - 0x10, 0xc5, 0x95, 0xd0, 0xbf, 0x57, 0x26, 0x0b, 0x8a, 0x85, 0x84, 0x28, 0x9d, 0x2a, 0xa1, 0x26, - 0x12, 0xcc, 0x2c, 0x1d, 0x90, 0x60, 0x42, 0x41, 0x2c, 0x2c, 0x95, 0xe3, 0xb8, 0xc4, 0x22, 0x89, - 0xdd, 0xb3, 0x53, 0x89, 0x8d, 0x8f, 0x8e, 0x6c, 0xd7, 0x30, 0x31, 0xf9, 0xde, 0xfd, 0xde, 0xdd, - 0x49, 0xcf, 0x70, 0xce, 0x55, 0xdb, 0xb2, 0xae, 0x32, 0x79, 0xaf, 0x1b, 0xc5, 0xaa, 0x4c, 0xa3, - 0xb2, 0x8a, 0x5c, 0x70, 0x9e, 0x31, 0xac, 0x7a, 0xd9, 0xa9, 0x8c, 0x37, 0x32, 0x8b, 0xae, 0xcb, - 0x3f, 0xbf, 0x2b, 0x54, 0x17, 0xfc, 0xcb, 0xef, 0x14, 0xa6, 0x6f, 0x7e, 0x41, 0x21, 0xf6, 0xe4, - 0x01, 0x26, 0xb2, 0x33, 0x96, 0x75, 0x5c, 0xd0, 0x64, 0x91, 0xac, 0x66, 0x77, 0x37, 0xd9, 0x3f, - 0x0b, 0xb3, 0xa7, 0xa3, 0xb1, 0xf8, 0x1d, 0x21, 0x73, 0x18, 0xec, 0xf6, 0x65, 0x47, 0xd3, 0x45, - 0xb2, 0x9a, 0x6e, 0x52, 0x9a, 0x14, 0x5e, 0x93, 0x6b, 0x98, 0x99, 0x4f, 0x61, 0x79, 0xbd, 0xd5, - 0xcc, 0xd6, 0xf4, 0xc4, 0xe1, 0x02, 0x42, 0xeb, 0x85, 0xd9, 0x9a, 0x10, 0x18, 0x68, 0x85, 0x96, - 0x0e, 0x3c, 0xf1, 0x35, 0xa1, 0x30, 0x3e, 0x08, 0x2c, 0x95, 0x11, 0x74, 0xb8, 0x48, 0x56, 0x93, - 0x22, 0x4a, 0x32, 0x87, 0xd1, 0x41, 0xa0, 0xdc, 0x7d, 0xd1, 0x91, 0x07, 0x47, 0xe5, 0xce, 0xc8, - 0xd6, 0xcd, 0x6e, 0x77, 0xb2, 0x11, 0x74, 0x1c, 0xce, 0x84, 0xd6, 0xa3, 0x6c, 0x04, 0x39, 0x83, - 0x61, 0xa9, 0x18, 0x56, 0x74, 0xe2, 0x51, 0x10, 0xcb, 0x67, 0x80, 0x98, 0x80, 0xd1, 0xe4, 0x0a, - 0x40, 0xf5, 0x76, 0x6b, 0x2c, 0x0a, 0xd6, 0xfa, 0x10, 0x4e, 0x8b, 0xa9, 0xea, 0xed, 0xab, 0x6f, - 0x38, 0x2c, 0x10, 0x23, 0x4e, 0x03, 0x16, 0x88, 0x01, 0x6f, 0xd6, 0xef, 0xb7, 0x1f, 0xd2, 0xd6, - 0x7d, 0xe9, 0x72, 0xca, 0x8f, 0xb9, 0xc5, 0x77, 0xcd, 0x1b, 0x99, 0xa3, 0xe6, 0x79, 0xcc, 0xb0, - 0x1c, 0xf9, 0x4f, 0xb8, 0xff, 0x09, 0x00, 0x00, 0xff, 0xff, 0xee, 0x93, 0x49, 0x70, 0xcd, 0x01, - 0x00, 0x00, + // 328 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x74, 0x91, 0xcf, 0x4a, 0xf4, 0x30, + 0x14, 0xc5, 0x69, 0xe7, 0x6f, 0xef, 0xcc, 0x2a, 0x7c, 0xdf, 0x18, 0x04, 0xb1, 0x33, 0xab, 0x82, + 0x4c, 0x0b, 0xba, 0x76, 0x33, 0x82, 0xa0, 0x2b, 0x89, 0xb8, 0x71, 0x53, 0xd2, 0x34, 0x9d, 0x06, + 0xdb, 0xa4, 0x93, 0xa6, 0x03, 0x3e, 0x8f, 0x2f, 0x2a, 0x4d, 0x5a, 0x5d, 0xb9, 0xea, 0x3d, 0xe7, + 0x77, 0x72, 0x2f, 0x9c, 0xc2, 0x7f, 0xa6, 0xea, 0x9a, 0xca, 0xbc, 0x4d, 0xba, 0xa6, 0x52, 0x34, + 0x8f, 0x1b, 0xad, 0x8c, 0x42, 0x17, 0x8c, 0xc5, 0x54, 0xe7, 0x9d, 0x90, 0x2a, 0x66, 0x95, 0x88, + 0xc7, 0xd4, 0xe5, 0x6f, 0xbe, 0x1f, 0x94, 0x74, 0xf9, 0xdd, 0x97, 0x0f, 0xc1, 0x9b, 0x5d, 0x40, + 0xf8, 0x09, 0xdd, 0xc3, 0x52, 0xc8, 0xd6, 0x50, 0xc9, 0x38, 0xf6, 0x42, 0x2f, 0x5a, 0xdd, 0x6e, + 0xe3, 0x3f, 0x16, 0xc6, 0x4f, 0x43, 0x90, 0xfc, 0x3c, 0x41, 0x1b, 0x98, 0x16, 0xa7, 0x4c, 0x62, + 0x3f, 0xf4, 0xa2, 0xe0, 0xe0, 0x63, 0x8f, 0x58, 0x8d, 0xae, 0x61, 0xd5, 0x7e, 0x70, 0xc3, 0xca, + 0xb4, 0xa1, 0xa6, 0xc4, 0x93, 0x1e, 0x13, 0x70, 0xd6, 0x0b, 0x35, 0x25, 0x42, 0x30, 0x6d, 0x94, + 0x36, 0x78, 0x6a, 0x89, 0x9d, 0x11, 0x86, 0xc5, 0x99, 0xeb, 0x4c, 0xb5, 0x1c, 0xcf, 0x42, 0x2f, + 0x5a, 0x92, 0x51, 0xa2, 0x0d, 0xcc, 0xcf, 0x5c, 0x8b, 0xe2, 0x13, 0xcf, 0x2d, 0x18, 0x54, 0x7f, + 0x46, 0xd4, 0xfd, 0xdb, 0xb4, 0x10, 0x15, 0xc7, 0x0b, 0x77, 0xc6, 0x59, 0x8f, 0xa2, 0xe2, 0xe8, + 0x1f, 0xcc, 0x32, 0x45, 0x75, 0x8e, 0x97, 0x16, 0x39, 0x81, 0xb6, 0xb0, 0xb6, 0x43, 0xca, 0x94, + 0x2c, 0xc4, 0x11, 0x07, 0xe1, 0x24, 0x0a, 0xc8, 0xca, 0x7a, 0x0f, 0xd6, 0xda, 0x3d, 0x03, 0x8c, + 0x25, 0xb5, 0x0d, 0xba, 0x02, 0x50, 0x9d, 0x49, 0x5b, 0xa3, 0x39, 0xad, 0x6d, 0x4f, 0x6b, 0x12, + 0xa8, 0xce, 0xbc, 0x5a, 0xa3, 0xc7, 0x5c, 0xeb, 0x11, 0xfb, 0x0e, 0x73, 0xad, 0x1d, 0x3e, 0xec, + 0xdf, 0x6f, 0x8e, 0xc2, 0x94, 0x5d, 0xd6, 0x57, 0x99, 0x0c, 0xd5, 0x8e, 0xdf, 0x3d, 0xab, 0x44, + 0xa2, 0x1b, 0x96, 0x8c, 0x35, 0x67, 0x73, 0xfb, 0x9f, 0xee, 0xbe, 0x03, 0x00, 0x00, 0xff, 0xff, + 0xb6, 0x22, 0x5f, 0xe2, 0xf0, 0x01, 0x00, 0x00, } diff --git a/rpc/commands/upload.proto b/rpc/commands/upload.proto index 35d1d1965ac..b84219eab93 100644 --- a/rpc/commands/upload.proto +++ b/rpc/commands/upload.proto @@ -22,14 +22,15 @@ option go_package = "github.com/arduino/arduino-cli/rpc/commands"; import "commands/common.proto"; message UploadReq { - Instance instance = 1; - string fqbn = 2 [deprecated=true]; - string sketch_path = 3; + Instance instance = 1; + string fqbn = 2 [deprecated=true]; // DEPRECATED: use "board" and "board_config" fields instead. + string sketch_path = 3; string port = 4; bool verbose = 5; bool verify = 6; string import_file = 7; string board = 8; + repeated string board_config = 9; } message UploadResp { From beafc313b63df5f50b2e1af313f4381796b24ca2 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 14 Apr 2020 14:51:58 +0200 Subject: [PATCH 08/10] Added Arduino Nano to fake-registry to test some examples --- arduino/cores/packagemanager/registry.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/arduino/cores/packagemanager/registry.go b/arduino/cores/packagemanager/registry.go index c05b1b2f3e5..01959faed64 100644 --- a/arduino/cores/packagemanager/registry.go +++ b/arduino/cores/packagemanager/registry.go @@ -87,6 +87,11 @@ func LoadBoardRegistry(file *paths.Path) (*BoardsRegistry, error) { FQBN: cores.MustParseFQBN("arduino:avr:uno"), Alias: "uno", }) + fake.addBoard(&RegisteredBoard{ + Name: "Arduino Nano", + FQBN: cores.MustParseFQBN("arduino:avr:nano"), + Alias: "nano", + }) fake.addBoard(&RegisteredBoard{ Name: "Arduino Zero", FQBN: cores.MustParseFQBN("arduino:samd:arduino_zero_edbg"), From 99deebd27eb80ab5f126dede094988659570f4e3 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 14 Apr 2020 15:22:57 +0200 Subject: [PATCH 09/10] Added missing go-docs --- arduino/cores/packagemanager/registry.go | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/arduino/cores/packagemanager/registry.go b/arduino/cores/packagemanager/registry.go index 01959faed64..b87cb424ce9 100644 --- a/arduino/cores/packagemanager/registry.go +++ b/arduino/cores/packagemanager/registry.go @@ -23,12 +23,14 @@ import ( "github.com/arduino/go-paths-helper" ) +// BoardsRegistry is a database with a list of registered boards type BoardsRegistry struct { Boards []*RegisteredBoard fqbnToBoard map[string]*RegisteredBoard aliastToBoard map[string]*RegisteredBoard } +// RegisteredBoard contains manifest information for a board type RegisteredBoard struct { FQBN *cores.FQBN Alias string @@ -36,6 +38,7 @@ type RegisteredBoard struct { ExternalPlatformURL *url.URL } +// NewBoardRegistry creates a new BoardsRegistry instance func NewBoardRegistry() *BoardsRegistry { return &BoardsRegistry{ Boards: []*RegisteredBoard{}, @@ -50,6 +53,7 @@ func (r *BoardsRegistry) addBoard(board *RegisteredBoard) { r.aliastToBoard[board.Alias] = board } +// FindBoard gets a RegisteredBoard using FQBN or Board Alias func (r *BoardsRegistry) FindBoard(fqbnOrAlias string) (*cores.FQBN, *RegisteredBoard, error) { if found, ok := r.aliastToBoard[fqbnOrAlias]; ok { return found.FQBN, found, nil @@ -64,6 +68,7 @@ func (r *BoardsRegistry) FindBoard(fqbnOrAlias string) (*cores.FQBN, *Registered return fqbn, nil, nil } +// SearchBoards search for a RegisteredBoard using a query string func (r *BoardsRegistry) SearchBoards(query string) []*RegisteredBoard { found := []*RegisteredBoard{} contains := func(a string, b string) bool { @@ -77,6 +82,7 @@ func (r *BoardsRegistry) SearchBoards(query string) []*RegisteredBoard { return found } +// LoadBoardRegistry retrieve a board registry from a file. WIP... func LoadBoardRegistry(file *paths.Path) (*BoardsRegistry, error) { // TODO... From db6f16a30a14fba7e2100597867f2d3e3156f674 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Tue, 14 Apr 2020 17:59:46 +0200 Subject: [PATCH 10/10] Fixed failing test --- commands/compile/compile.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/commands/compile/compile.go b/commands/compile/compile.go index add951a9487..db008da1dd6 100644 --- a/commands/compile/compile.go +++ b/commands/compile/compile.go @@ -75,7 +75,12 @@ func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.W return nil, errors.New("invalid instance") } - logrus.Tracef("Compile %s for %s started", req.GetSketchPath(), req.GetFqbn()) + boardArg := req.GetBoard() + if boardArg == "" { + boardArg = req.GetFqbn() // DEPRECATED: Keep Fqbn field working for old clients. + } + + logrus.Tracef("Compile %s for %s started", req.GetSketchPath(), boardArg) if req.GetSketchPath() == "" { return nil, fmt.Errorf("missing sketchPath") } @@ -85,10 +90,6 @@ func Compile(ctx context.Context, req *rpc.CompileReq, outStream, errStream io.W return nil, fmt.Errorf("opening sketch: %s", err) } - boardArg := req.GetBoard() - if boardArg == "" { - boardArg = req.GetFqbn() // DEPRECATED: Keep Fqbn field working for old clients. - } if boardArg == "" && sketch != nil && sketch.Metadata != nil { boardArg = sketch.Metadata.CPU.Fqbn }