Skip to content

Commit b4f7ea4

Browse files
committed
Minor fix added return value to the compile function in command/compile
1 parent 4408123 commit b4f7ea4

File tree

2 files changed

+42
-22
lines changed

2 files changed

+42
-22
lines changed

commands/compile/compile.go

Lines changed: 41 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package compile
33
import (
44
"context"
55
"fmt"
6-
"os"
76
"path/filepath"
87
"sort"
98
"strings"
@@ -29,8 +28,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
2928
}
3029
sketch, err := cli.InitSketch(sketchPath)
3130
if err != nil {
32-
formatter.PrintError(err, "Error opening sketch.")
33-
os.Exit(cli.ErrGeneric)
31+
return &rpc.CompileResp{
32+
Result: rpc.Error("Error opening sketch", rpc.ErrGeneric),
33+
}, nil
3434
}
3535

3636
fqbnIn := req.GetFqbn()
@@ -39,12 +39,16 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
3939
}
4040
if fqbnIn == "" {
4141
formatter.PrintErrorMessage("No Fully Qualified Board Name provided.")
42-
os.Exit(cli.ErrGeneric)
42+
return &rpc.CompileResp{
43+
Result: rpc.Error("No Fully Qualified Board Name provided.", rpc.ErrGeneric),
44+
}, nil
4345
}
4446
fqbn, err := cores.ParseFQBN(fqbnIn)
4547
if err != nil {
4648
formatter.PrintErrorMessage("Fully Qualified Board Name has incorrect format.")
47-
os.Exit(cli.ErrBadArgument)
49+
return &rpc.CompileResp{
50+
Result: rpc.Error("Fully Qualified Board Name has incorrect format.", rpc.ErrGeneric),
51+
}, nil
4852
}
4953

5054
pm, _ := cli.InitPackageAndLibraryManager()
@@ -58,13 +62,16 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
5862
core.InstallToolRelease(pm, ctags)
5963

6064
if err := pm.LoadHardware(cli.Config); err != nil {
61-
formatter.PrintError(err, "Could not load hardware packages.")
62-
os.Exit(cli.ErrCoreConfig)
65+
return &rpc.CompileResp{
66+
Result: rpc.Error("Could not load hardware packages.", rpc.ErrGeneric),
67+
}, nil
6368
}
6469
ctags, _ = getBuiltinCtagsTool(pm)
6570
if !ctags.IsInstalled() {
6671
formatter.PrintErrorMessage("Missing ctags tool.")
67-
os.Exit(cli.ErrCoreConfig)
72+
return &rpc.CompileResp{
73+
Result: rpc.Error("Missing ctags tool.", rpc.ErrGeneric),
74+
}, nil
6875
}
6976
}
7077

@@ -77,7 +84,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
7784
"\"%[1]s:%[2]s\" platform is not installed, please install it by running \""+
7885
cli.AppName+" core install %[1]s:%[2]s\".", fqbn.Package, fqbn.PlatformArch)
7986
formatter.PrintErrorMessage(errorMessage)
80-
os.Exit(cli.ErrCoreConfig)
87+
return &rpc.CompileResp{
88+
Result: rpc.Error(errorMessage, rpc.ErrGeneric),
89+
}, nil
8190
}
8291

8392
builderCtx := &types.Context{}
@@ -89,15 +98,17 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
8998
if packagesDir, err := cli.Config.HardwareDirectories(); err == nil {
9099
builderCtx.HardwareDirs = packagesDir
91100
} else {
92-
formatter.PrintError(err, "Cannot get hardware directories.")
93-
os.Exit(cli.ErrCoreConfig)
101+
return &rpc.CompileResp{
102+
Result: rpc.Error("Cannot get hardware directories.", rpc.ErrGeneric),
103+
}, nil
94104
}
95105

96106
if toolsDir, err := cli.Config.BundleToolsDirectories(); err == nil {
97107
builderCtx.ToolsDirs = toolsDir
98108
} else {
99-
formatter.PrintError(err, "Cannot get bundled tools directories.")
100-
os.Exit(cli.ErrCoreConfig)
109+
return &rpc.CompileResp{
110+
Result: rpc.Error("Cannot get bundled tools directories.", rpc.ErrGeneric),
111+
}, nil
101112
}
102113

103114
builderCtx.OtherLibrariesDirs = paths.NewPathList()
@@ -107,8 +118,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
107118
builderCtx.BuildPath = paths.New(req.GetBuildPath())
108119
err = builderCtx.BuildPath.MkdirAll()
109120
if err != nil {
110-
formatter.PrintError(err, "Cannot create the build directory.")
111-
os.Exit(cli.ErrBadCall)
121+
return &rpc.CompileResp{
122+
Result: rpc.Error("Cannot create the build directory.", rpc.ErrGeneric),
123+
}, nil
112124
}
113125
}
114126

@@ -131,8 +143,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
131143
builderCtx.BuildCachePath = paths.New(req.GetBuildCachePath())
132144
err = builderCtx.BuildCachePath.MkdirAll()
133145
if err != nil {
134-
formatter.PrintError(err, "Cannot create the build cache directory.")
135-
os.Exit(cli.ErrBadCall)
146+
return &rpc.CompileResp{
147+
Result: rpc.Error("Cannot create the build cache directory.", rpc.ErrGeneric),
148+
}, nil
136149
}
137150
}
138151

@@ -166,8 +179,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
166179
}
167180

168181
if err != nil {
169-
formatter.PrintError(err, "Compilation failed.")
170-
os.Exit(cli.ErrGeneric)
182+
return &rpc.CompileResp{
183+
Result: rpc.Error("Compilation failed.", rpc.ErrGeneric),
184+
}, nil
171185
}
172186

173187
// FIXME: Make a function to obtain these info...
@@ -197,8 +211,9 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
197211
dstHex := exportPath.Join(exportFile + ext)
198212
logrus.WithField("from", srcHex).WithField("to", dstHex).Print("copying sketch build output")
199213
if err = srcHex.CopyTo(dstHex); err != nil {
200-
formatter.PrintError(err, "Error copying output file.")
201-
os.Exit(cli.ErrGeneric)
214+
return &rpc.CompileResp{
215+
Result: rpc.Error("Error copying output file.", rpc.ErrGeneric),
216+
}, nil
202217
}
203218

204219
// Copy .elf file to sketch directory
@@ -207,6 +222,10 @@ func Compile(ctx context.Context, req *rpc.CompileReq) (*rpc.CompileResp, error)
207222
logrus.WithField("from", srcElf).WithField("to", dstElf).Print("copying sketch build output")
208223
if err = srcElf.CopyTo(dstElf); err != nil {
209224
formatter.PrintError(err, "Error copying elf file.")
210-
os.Exit(cli.ErrGeneric)
225+
return &rpc.CompileResp{
226+
Result: rpc.Error("Error copying elf file.", rpc.ErrGeneric),
227+
}, nil
211228
}
229+
230+
return &rpc.CompileResp{}, nil
212231
}

daemon/daemon.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import (
1212

1313
"github.com/arduino/arduino-cli/commands"
1414
"github.com/arduino/arduino-cli/commands/board"
15+
"github.com/arduino/arduino-cli/commands/compile"
1516
"github.com/arduino/arduino-cli/rpc"
1617
"github.com/spf13/cobra"
1718
"google.golang.org/grpc"

0 commit comments

Comments
 (0)