Skip to content

Commit 5fdd18b

Browse files
committed
Added Sketch.ToRpc helper
1 parent 1f0681e commit 5fdd18b

File tree

2 files changed

+24
-43
lines changed

2 files changed

+24
-43
lines changed

commands/sketch/load.go

+2-43
Original file line numberDiff line numberDiff line change
@@ -24,52 +24,11 @@ import (
2424
paths "github.com/arduino/go-paths-helper"
2525
)
2626

27-
// LoadSketch collects and returns all files composing a sketch
27+
// LoadSketch collects and returns all information about a sketch
2828
func LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.LoadSketchResponse, error) {
2929
sk, err := sketch.New(paths.New(req.GetSketchPath()))
3030
if err != nil {
3131
return nil, &cmderrors.CantOpenSketchError{Cause: err}
3232
}
33-
34-
// TODO: This should be a ToRpc function for the Sketch struct
35-
otherSketchFiles := make([]string, sk.OtherSketchFiles.Len())
36-
for i, file := range sk.OtherSketchFiles {
37-
otherSketchFiles[i] = file.String()
38-
}
39-
40-
additionalFiles := make([]string, sk.AdditionalFiles.Len())
41-
for i, file := range sk.AdditionalFiles {
42-
additionalFiles[i] = file.String()
43-
}
44-
45-
rootFolderFiles := make([]string, sk.RootFolderFiles.Len())
46-
for i, file := range sk.RootFolderFiles {
47-
rootFolderFiles[i] = file.String()
48-
}
49-
50-
defaultPort, defaultProtocol := sk.GetDefaultPortAddressAndProtocol()
51-
52-
profiles := make([](*rpc.SketchProfile), len(sk.Project.Profiles))
53-
for i, profile := range sk.Project.Profiles {
54-
profiles[i] = &rpc.SketchProfile{
55-
Name: profile.Name,
56-
Fqbn: profile.FQBN,
57-
}
58-
}
59-
60-
res := &rpc.LoadSketchResponse{
61-
MainFile: sk.MainFile.String(),
62-
LocationPath: sk.FullPath.String(),
63-
OtherSketchFiles: otherSketchFiles,
64-
AdditionalFiles: additionalFiles,
65-
RootFolderFiles: rootFolderFiles,
66-
DefaultFqbn: sk.GetDefaultFQBN(),
67-
DefaultPort: defaultPort,
68-
DefaultProtocol: defaultProtocol,
69-
Profiles: profiles,
70-
}
71-
if defaultProfile, err := sk.GetProfile(sk.Project.DefaultProfile); err == nil {
72-
res.DefaultProfile = defaultProfile.ToRpc()
73-
}
74-
return res, nil
33+
return sk.ToRpc(), nil
7534
}

internal/arduino/sketch/sketch.go

+22
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ import (
2424
"strings"
2525

2626
"github.com/arduino/arduino-cli/commands/cmderrors"
27+
f "github.com/arduino/arduino-cli/internal/algorithms"
2728
"github.com/arduino/arduino-cli/internal/arduino/globals"
2829
"github.com/arduino/arduino-cli/internal/i18n"
30+
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2931
"github.com/arduino/go-paths-helper"
3032
)
3133

@@ -307,3 +309,23 @@ func (s *Sketch) Hash() string {
307309
md5SumBytes := md5.Sum([]byte(path))
308310
return strings.ToUpper(hex.EncodeToString(md5SumBytes[:]))
309311
}
312+
313+
// ToRpc converts this Sketch into a rpc.LoadSketchResponse
314+
func (s *Sketch) ToRpc() *rpc.LoadSketchResponse {
315+
defaultPort, defaultProtocol := s.GetDefaultPortAddressAndProtocol()
316+
res := &rpc.LoadSketchResponse{
317+
MainFile: s.MainFile.String(),
318+
LocationPath: s.FullPath.String(),
319+
OtherSketchFiles: s.OtherSketchFiles.AsStrings(),
320+
AdditionalFiles: s.AdditionalFiles.AsStrings(),
321+
RootFolderFiles: s.RootFolderFiles.AsStrings(),
322+
DefaultFqbn: s.GetDefaultFQBN(),
323+
DefaultPort: defaultPort,
324+
DefaultProtocol: defaultProtocol,
325+
Profiles: f.Map(s.Project.Profiles, (*Profile).ToRpc),
326+
}
327+
if defaultProfile, err := s.GetProfile(s.Project.DefaultProfile); err == nil {
328+
res.DefaultProfile = defaultProfile.ToRpc()
329+
}
330+
return res
331+
}

0 commit comments

Comments
 (0)