Skip to content

Commit b76847f

Browse files
committed
Inlining methods in ArduinoCoreServiceImpl (part 13: NewSketch, LoadSketch, SetSketchDefaults, ArchiveSketch)
1 parent ecf113e commit b76847f

18 files changed

+71
-73
lines changed

commands/service.go

-21
Original file line numberDiff line numberDiff line change
@@ -40,22 +40,6 @@ func (s *arduinoCoreServerImpl) Version(ctx context.Context, req *rpc.VersionReq
4040
return &rpc.VersionResponse{Version: s.versionString}, nil
4141
}
4242

43-
// NewSketch FIXMEDOC
44-
func (s *arduinoCoreServerImpl) NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchResponse, error) {
45-
return NewSketch(ctx, req)
46-
}
47-
48-
// LoadSketch FIXMEDOC
49-
func (s *arduinoCoreServerImpl) LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.LoadSketchResponse, error) {
50-
resp, err := LoadSketch(ctx, req)
51-
return &rpc.LoadSketchResponse{Sketch: resp}, err
52-
}
53-
54-
// SetSketchDefaults FIXMEDOC
55-
func (s *arduinoCoreServerImpl) SetSketchDefaults(ctx context.Context, req *rpc.SetSketchDefaultsRequest) (*rpc.SetSketchDefaultsResponse, error) {
56-
return SetSketchDefaults(ctx, req)
57-
}
58-
5943
// Upload FIXMEDOC
6044
func (s *arduinoCoreServerImpl) Upload(req *rpc.UploadRequest, stream rpc.ArduinoCoreService_UploadServer) error {
6145
syncSend := NewSynchronizedSend(stream.Send)
@@ -144,11 +128,6 @@ func (s *arduinoCoreServerImpl) ListProgrammersAvailableForUpload(ctx context.Co
144128
return ListProgrammersAvailableForUpload(ctx, req)
145129
}
146130

147-
// ArchiveSketch FIXMEDOC
148-
func (s *arduinoCoreServerImpl) ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.ArchiveSketchResponse, error) {
149-
return ArchiveSketch(ctx, req)
150-
}
151-
152131
// EnumerateMonitorPortSettings FIXMEDOC
153132
func (s *arduinoCoreServerImpl) EnumerateMonitorPortSettings(ctx context.Context, req *rpc.EnumerateMonitorPortSettingsRequest) (*rpc.EnumerateMonitorPortSettingsResponse, error) {
154133
return EnumerateMonitorPortSettings(ctx, req)

commands/service_set_sketch_defaults.go

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

2727
// SetSketchDefaults updates the sketch project file (sketch.yaml) with the given defaults
2828
// for the values `default_fqbn`, `default_port`, and `default_protocol`.
29-
func SetSketchDefaults(ctx context.Context, req *rpc.SetSketchDefaultsRequest) (*rpc.SetSketchDefaultsResponse, error) {
29+
func (s *arduinoCoreServerImpl) SetSketchDefaults(ctx context.Context, req *rpc.SetSketchDefaultsRequest) (*rpc.SetSketchDefaultsResponse, error) {
3030
sk, err := sketch.New(paths.New(req.GetSketchPath()))
3131
if err != nil {
3232
return nil, &cmderrors.CantOpenSketchError{Cause: err}

commands/service_sketch_archive.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ import (
2929
)
3030

3131
// ArchiveSketch FIXMEDOC
32-
func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.ArchiveSketchResponse, error) {
32+
func (s *arduinoCoreServerImpl) ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.ArchiveSketchResponse, error) {
3333
// sketchName is the name of the sketch without extension, for example "MySketch"
3434
var sketchName string
3535

@@ -38,13 +38,13 @@ func ArchiveSketch(ctx context.Context, req *rpc.ArchiveSketchRequest) (*rpc.Arc
3838
sketchPath = paths.New(".")
3939
}
4040

41-
s, err := sketch.New(sketchPath)
41+
sk, err := sketch.New(sketchPath)
4242
if err != nil {
4343
return nil, &cmderrors.CantOpenSketchError{Cause: err}
4444
}
4545

46-
sketchPath = s.FullPath
47-
sketchName = s.Name
46+
sketchPath = sk.FullPath
47+
sketchName = sk.Name
4848

4949
archivePath := paths.New(req.GetArchivePath())
5050
if archivePath == nil {

commands/service_sketch_load.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ import (
2525
)
2626

2727
// LoadSketch collects and returns all information about a sketch
28-
func LoadSketch(ctx context.Context, req *rpc.LoadSketchRequest) (*rpc.Sketch, error) {
28+
func (s *arduinoCoreServerImpl) 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-
return sk.ToRpc(), nil
33+
return &rpc.LoadSketchResponse{Sketch: sk.ToRpc()}, nil
3434
}

commands/service_sketch_load_test.go

+4-3
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ import (
2424
)
2525

2626
func TestLoadSketchProfiles(t *testing.T) {
27-
loadResp, err := LoadSketch(context.Background(), &commands.LoadSketchRequest{
27+
srv := NewArduinoCoreServer("")
28+
loadResp, err := srv.LoadSketch(context.Background(), &commands.LoadSketchRequest{
2829
SketchPath: "./testdata/sketch_with_profile",
2930
})
3031
require.NoError(t, err)
31-
require.Len(t, loadResp.GetProfiles(), 2)
32-
require.Equal(t, loadResp.GetDefaultProfile().GetName(), "nanorp")
32+
require.Len(t, loadResp.GetSketch().GetProfiles(), 2)
33+
require.Equal(t, loadResp.GetSketch().GetDefaultProfile().GetName(), "nanorp")
3334
}

commands/service_sketch_new.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ var invalidNames = []string{"CON", "PRN", "AUX", "NUL", "COM0", "COM1", "COM2",
4343
"COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}
4444

4545
// NewSketch creates a new sketch via gRPC
46-
func NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchResponse, error) {
46+
func (s *arduinoCoreServerImpl) NewSketch(ctx context.Context, req *rpc.NewSketchRequest) (*rpc.NewSketchResponse, error) {
4747
var sketchesDir string
4848
if len(req.GetSketchDir()) > 0 {
4949
sketchesDir = req.GetSketchDir()

commands/service_sketch_new_test.go

+13-8
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import (
2020
"fmt"
2121
"testing"
2222

23-
"github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
23+
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2424
"github.com/stretchr/testify/require"
2525
)
2626

@@ -34,8 +34,10 @@ func Test_SketchNameWrongPattern(t *testing.T) {
3434
"||||||||||||||",
3535
",`hack[}attempt{];",
3636
}
37+
38+
srv := NewArduinoCoreServer("")
3739
for _, name := range invalidNames {
38-
_, err := NewSketch(context.Background(), &commands.NewSketchRequest{
40+
_, err := srv.NewSketch(context.Background(), &rpc.NewSketchRequest{
3941
SketchName: name,
4042
SketchDir: t.TempDir(),
4143
})
@@ -46,9 +48,9 @@ func Test_SketchNameWrongPattern(t *testing.T) {
4648
}
4749

4850
func Test_SketchNameEmpty(t *testing.T) {
49-
emptyName := ""
50-
_, err := NewSketch(context.Background(), &commands.NewSketchRequest{
51-
SketchName: emptyName,
51+
srv := NewArduinoCoreServer("")
52+
_, err := srv.NewSketch(context.Background(), &rpc.NewSketchRequest{
53+
SketchName: "",
5254
SketchDir: t.TempDir(),
5355
})
5456

@@ -60,7 +62,8 @@ func Test_SketchNameTooLong(t *testing.T) {
6062
for i := range tooLongName {
6163
tooLongName[i] = 'a'
6264
}
63-
_, err := NewSketch(context.Background(), &commands.NewSketchRequest{
65+
srv := NewArduinoCoreServer("")
66+
_, err := srv.NewSketch(context.Background(), &rpc.NewSketchRequest{
6467
SketchName: string(tooLongName),
6568
SketchDir: t.TempDir(),
6669
})
@@ -83,8 +86,9 @@ func Test_SketchNameOk(t *testing.T) {
8386
"_hello_world",
8487
string(lengthLimitName),
8588
}
89+
srv := NewArduinoCoreServer("")
8690
for _, name := range validNames {
87-
_, err := NewSketch(context.Background(), &commands.NewSketchRequest{
91+
_, err := srv.NewSketch(context.Background(), &rpc.NewSketchRequest{
8892
SketchName: name,
8993
SketchDir: t.TempDir(),
9094
})
@@ -95,8 +99,9 @@ func Test_SketchNameOk(t *testing.T) {
9599
func Test_SketchNameReserved(t *testing.T) {
96100
invalidNames := []string{"CON", "PRN", "AUX", "NUL", "COM0", "COM1", "COM2", "COM3", "COM4", "COM5",
97101
"COM6", "COM7", "COM8", "COM9", "LPT0", "LPT1", "LPT2", "LPT3", "LPT4", "LPT5", "LPT6", "LPT7", "LPT8", "LPT9"}
102+
srv := NewArduinoCoreServer("")
98103
for _, name := range invalidNames {
99-
_, err := NewSketch(context.Background(), &commands.NewSketchRequest{
104+
_, err := srv.NewSketch(context.Background(), &rpc.NewSketchRequest{
100105
SketchName: name,
101106
SketchDir: t.TempDir(),
102107
})

internal/cli/arguments/profiles.go

+8-3
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,12 @@
1515

1616
package arguments
1717

18-
import "github.com/spf13/cobra"
18+
import (
19+
"context"
20+
21+
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
22+
"github.com/spf13/cobra"
23+
)
1924

2025
// Profile contains the profile flag data.
2126
// This is useful so all flags used by commands that need
@@ -25,14 +30,14 @@ type Profile struct {
2530
}
2631

2732
// AddToCommand adds the flags used to set fqbn to the specified Command
28-
func (f *Profile) AddToCommand(cmd *cobra.Command) {
33+
func (f *Profile) AddToCommand(cmd *cobra.Command, srv rpc.ArduinoCoreServiceServer) {
2934
cmd.Flags().StringVarP(&f.profile, "profile", "m", "", tr("Sketch profile to use"))
3035
cmd.RegisterFlagCompletionFunc("profile", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
3136
var sketchProfile string
3237
if len(args) > 0 {
3338
sketchProfile = args[0]
3439
}
35-
return GetSketchProfiles(sketchProfile), cobra.ShellCompDirectiveDefault
40+
return GetSketchProfiles(context.Background(), srv, sketchProfile), cobra.ShellCompDirectiveDefault
3641
})
3742
}
3843

internal/cli/arguments/sketch.go

+3-4
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ package arguments
1818
import (
1919
"context"
2020

21-
"github.com/arduino/arduino-cli/commands"
2221
f "github.com/arduino/arduino-cli/internal/algorithms"
2322
"github.com/arduino/arduino-cli/internal/cli/feedback"
2423
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -44,18 +43,18 @@ func InitSketchPath(path string) (sketchPath *paths.Path) {
4443

4544
// GetSketchProfiles is an helper function useful to autocomplete.
4645
// It returns the profile names set in the sketch.yaml
47-
func GetSketchProfiles(sketchPath string) []string {
46+
func GetSketchProfiles(ctx context.Context, srv rpc.ArduinoCoreServiceServer, sketchPath string) []string {
4847
if sketchPath == "" {
4948
if wd, _ := paths.Getwd(); wd != nil && wd.String() != "" {
5049
sketchPath = wd.String()
5150
} else {
5251
return nil
5352
}
5453
}
55-
sk, err := commands.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath})
54+
resp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath})
5655
if err != nil {
5756
return nil
5857
}
59-
profiles := sk.GetProfiles()
58+
profiles := resp.GetSketch().GetProfiles()
6059
return f.Map(profiles, (*rpc.SketchProfile).GetName)
6160
}

internal/cli/board/attach.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"fmt"
2121
"os"
2222

23-
"github.com/arduino/arduino-cli/commands"
2423
"github.com/arduino/arduino-cli/internal/cli/arguments"
2524
"github.com/arduino/arduino-cli/internal/cli/feedback"
2625
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -56,10 +55,11 @@ func initAttachCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
5655
}
5756

5857
func runAttachCommand(srv rpc.ArduinoCoreServiceServer, path string, port *arguments.Port, fqbn string, programmer *arguments.Programmer) {
58+
ctx := context.Background()
5959
sketchPath := arguments.InitSketchPath(path)
6060

6161
portAddress, portProtocol, _ := port.GetPortAddressAndProtocol(nil, srv, "", "")
62-
newDefaults, err := commands.SetSketchDefaults(context.Background(), &rpc.SetSketchDefaultsRequest{
62+
newDefaults, err := srv.SetSketchDefaults(ctx, &rpc.SetSketchDefaultsRequest{
6363
SketchPath: sketchPath.String(),
6464
DefaultFqbn: fqbn,
6565
DefaultProgrammer: programmer.GetProgrammer(),

internal/cli/cli.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
8888
cmd.AddCommand(lib.NewCommand(srv))
8989
cmd.AddCommand(monitor.NewCommand(srv))
9090
cmd.AddCommand(outdated.NewCommand(srv))
91-
cmd.AddCommand(sketch.NewCommand())
91+
cmd.AddCommand(sketch.NewCommand(srv))
9292
cmd.AddCommand(update.NewCommand(srv))
9393
cmd.AddCommand(upgrade.NewCommand(srv))
9494
cmd.AddCommand(upload.NewCommand(srv))

internal/cli/compile/compile.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
9393
}
9494

9595
fqbnArg.AddToCommand(compileCommand, srv)
96-
profileArg.AddToCommand(compileCommand)
96+
profileArg.AddToCommand(compileCommand, srv)
9797
compileCommand.Flags().BoolVar(&dumpProfile, "dump-profile", false, tr("Create and print a profile configuration from the build."))
9898
showPropertiesArg.AddToCommand(compileCommand)
9999
compileCommand.Flags().BoolVar(&preprocess, "preprocess", false, tr("Print preprocessed code to stdout instead of compiling."))
@@ -161,10 +161,11 @@ func runCompileCommand(cmd *cobra.Command, args []string, srv rpc.ArduinoCoreSer
161161
}
162162

163163
sketchPath := arguments.InitSketchPath(path)
164-
sk, err := commands.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
164+
resp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
165165
if err != nil {
166166
feedback.FatalError(err, feedback.ErrGeneric)
167167
}
168+
sk := resp.GetSketch()
168169
feedback.WarnAboutDeprecatedFiles(sk)
169170

170171
var inst *rpc.Instance

internal/cli/debug/debug.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
6464
fqbnArg.AddToCommand(debugCommand, srv)
6565
portArgs.AddToCommand(debugCommand, srv)
6666
programmer.AddToCommand(debugCommand, srv)
67-
profileArg.AddToCommand(debugCommand)
67+
profileArg.AddToCommand(debugCommand, srv)
6868
debugCommand.Flags().StringVar(&interpreter, "interpreter", "console", tr("Debug interpreter e.g.: %s", "console, mi, mi1, mi2, mi3"))
6969
debugCommand.Flags().StringVarP(&importDir, "input-dir", "", "", tr("Directory containing binaries for debug."))
7070
debugCommand.Flags().BoolVarP(&printInfo, "info", "I", false, tr("Show metadata about the debug session instead of starting the debugger."))
@@ -83,10 +83,11 @@ func runDebugCommand(srv rpc.ArduinoCoreServiceServer, args []string, portArgs *
8383
}
8484

8585
sketchPath := arguments.InitSketchPath(path)
86-
sk, err := commands.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
86+
resp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
8787
if err != nil {
8888
feedback.FatalError(err, feedback.ErrGeneric)
8989
}
90+
sk := resp.GetSketch()
9091
feedback.WarnAboutDeprecatedFiles(sk)
9192

9293
var inst *rpc.Instance

internal/cli/monitor/monitor.go

+3-2
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ func NewCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
7070
},
7171
}
7272
portArgs.AddToCommand(monitorCommand, srv)
73-
profileArg.AddToCommand(monitorCommand)
73+
profileArg.AddToCommand(monitorCommand, srv)
7474
monitorCommand.Flags().BoolVar(&raw, "raw", false, tr("Set terminal in raw mode (unbuffered)."))
7575
monitorCommand.Flags().BoolVar(&describe, "describe", false, tr("Show all the settings of the communication port."))
7676
monitorCommand.Flags().StringSliceVarP(&configs, "config", "c", []string{}, tr("Configure communication port settings. The format is <ID>=<value>[,<ID>=<value>]..."))
@@ -105,13 +105,14 @@ func runMonitorCmd(
105105
// If only --port is set we read the fqbn in the following order: default_fqbn -> discovery
106106
// If only --fqbn is set we read the port in the following order: default_port
107107
sketchPath := arguments.InitSketchPath(sketchPathArg)
108-
sketch, err := commands.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
108+
resp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
109109
if err != nil && !portArgs.IsPortFlagSet() {
110110
feedback.Fatal(
111111
tr("Error getting default port from `sketch.yaml`. Check if you're in the correct sketch folder or provide the --port flag: %s", err),
112112
feedback.ErrGeneric,
113113
)
114114
}
115+
sketch := resp.GetSketch()
115116
if sketch != nil {
116117
defaultPort, defaultProtocol = sketch.GetDefaultPort(), sketch.GetDefaultProtocol()
117118
}

internal/cli/sketch/archive.go

+9-7
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import (
2020
"fmt"
2121
"os"
2222

23-
"github.com/arduino/arduino-cli/commands"
2423
"github.com/arduino/arduino-cli/internal/cli/arguments"
2524
"github.com/arduino/arduino-cli/internal/cli/feedback"
2625
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
@@ -29,7 +28,7 @@ import (
2928
)
3029

3130
// initArchiveCommand creates a new `archive` command
32-
func initArchiveCommand() *cobra.Command {
31+
func initArchiveCommand(srv rpc.ArduinoCoreServiceServer) *cobra.Command {
3332
var includeBuildDir, overwrite bool
3433

3534
archiveCommand := &cobra.Command{
@@ -43,7 +42,9 @@ func initArchiveCommand() *cobra.Command {
4342
" " + os.Args[0] + " archive /home/user/Arduino/MySketch\n" +
4443
" " + os.Args[0] + " archive /home/user/Arduino/MySketch /home/user/MySketchArchive.zip",
4544
Args: cobra.MaximumNArgs(2),
46-
Run: func(cmd *cobra.Command, args []string) { runArchiveCommand(args, includeBuildDir, overwrite) },
45+
Run: func(cmd *cobra.Command, args []string) {
46+
runArchiveCommand(srv, args, includeBuildDir, overwrite)
47+
},
4748
}
4849

4950
archiveCommand.Flags().BoolVar(&includeBuildDir, "include-build-dir", false, tr("Includes %s directory in the archive.", "build"))
@@ -52,9 +53,9 @@ func initArchiveCommand() *cobra.Command {
5253
return archiveCommand
5354
}
5455

55-
func runArchiveCommand(args []string, includeBuildDir bool, overwrite bool) {
56+
func runArchiveCommand(srv rpc.ArduinoCoreServiceServer, args []string, includeBuildDir bool, overwrite bool) {
5657
logrus.Info("Executing `arduino-cli sketch archive`")
57-
58+
ctx := context.Background()
5859
sketchPathArg := ""
5960
if len(args) > 0 {
6061
sketchPathArg = args[0]
@@ -66,13 +67,14 @@ func runArchiveCommand(args []string, includeBuildDir bool, overwrite bool) {
6667
}
6768

6869
sketchPath := arguments.InitSketchPath(sketchPathArg)
69-
sk, err := commands.LoadSketch(context.Background(), &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
70+
resp, err := srv.LoadSketch(ctx, &rpc.LoadSketchRequest{SketchPath: sketchPath.String()})
7071
if err != nil {
7172
feedback.FatalError(err, feedback.ErrGeneric)
7273
}
74+
sk := resp.GetSketch()
7375
feedback.WarnAboutDeprecatedFiles(sk)
7476

75-
if _, err := commands.ArchiveSketch(context.Background(),
77+
if _, err := srv.ArchiveSketch(ctx,
7678
&rpc.ArchiveSketchRequest{
7779
SketchPath: sketchPath.String(),
7880
ArchivePath: archivePathArg,

0 commit comments

Comments
 (0)