Skip to content

Commit af4513f

Browse files
committed
DRAFT
1 parent cdcec9b commit af4513f

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+3594
-1331
lines changed

Diff for: commands/instances.go

+10-10
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ import (
3636
"github.com/arduino/arduino-cli/internal/arduino/resources"
3737
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3838
"github.com/arduino/arduino-cli/internal/arduino/utils"
39-
"github.com/arduino/arduino-cli/internal/cli/configuration"
4039
"github.com/arduino/arduino-cli/internal/i18n"
4140
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
4241
paths "github.com/arduino/go-paths-helper"
@@ -72,7 +71,7 @@ func (s *arduinoCoreServerImpl) Create(ctx context.Context, req *rpc.CreateReque
7271
}
7372

7473
// Setup downloads directory
75-
downloadsDir := configuration.DownloadsDir(s.settings)
74+
downloadsDir := s.settings.DownloadsDir()
7675
if downloadsDir.NotExist() {
7776
err := downloadsDir.MkdirAll()
7877
if err != nil {
@@ -81,8 +80,8 @@ func (s *arduinoCoreServerImpl) Create(ctx context.Context, req *rpc.CreateReque
8180
}
8281

8382
// Setup data directory
84-
dataDir := configuration.DataDir(s.settings)
85-
packagesDir := configuration.PackagesDir(s.settings)
83+
dataDir := s.settings.DataDir()
84+
packagesDir := s.settings.PackagesDir()
8685
if packagesDir.NotExist() {
8786
err := packagesDir.MkdirAll()
8887
if err != nil {
@@ -192,7 +191,7 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
192191
}
193192
}
194193

195-
if err := firstUpdate(ctx, s, req.GetInstance(), configuration.DataDir(s.settings), downloadCallback, allPackageIndexUrls); err != nil {
194+
if err := firstUpdate(ctx, s, req.GetInstance(), s.settings.DataDir(), downloadCallback, allPackageIndexUrls); err != nil {
196195
e := &cmderrors.InitFailedError{
197196
Code: codes.InvalidArgument,
198197
Cause: err,
@@ -245,7 +244,7 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
245244

246245
// Load Platforms
247246
if profile == nil {
248-
for _, err := range pmb.LoadHardware(s.settings) {
247+
for _, err := range pmb.LoadHardware() {
249248
s := &cmderrors.PlatformLoadingError{Cause: err}
250249
responseError(s.GRPCStatus())
251250
}
@@ -349,7 +348,7 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
349348

350349
if profile == nil {
351350
// Add directories of libraries bundled with IDE
352-
if bundledLibsDir := configuration.IDEBuiltinLibrariesDir(s.settings); bundledLibsDir != nil {
351+
if bundledLibsDir := s.settings.IDEBuiltinLibrariesDir(); bundledLibsDir != nil {
353352
lmb.AddLibrariesDir(librariesmanager.LibrariesDir{
354353
Path: bundledLibsDir,
355354
Location: libraries.IDEBuiltIn,
@@ -358,14 +357,14 @@ func (s *arduinoCoreServerImpl) Init(req *rpc.InitRequest, stream rpc.ArduinoCor
358357

359358
// Add libraries directory from config file
360359
lmb.AddLibrariesDir(librariesmanager.LibrariesDir{
361-
Path: configuration.LibrariesDir(s.settings),
360+
Path: s.settings.LibrariesDir(),
362361
Location: libraries.User,
363362
})
364363
} else {
365364
// Load libraries required for profile
366365
for _, libraryRef := range profile.Libraries {
367366
uid := libraryRef.InternalUniqueIdentifier()
368-
libRoot := configuration.ProfilesCacheDir(s.settings).Join(uid)
367+
libRoot := s.settings.ProfilesCacheDir().Join(uid)
369368
libDir := libRoot.Join(libraryRef.Library)
370369

371370
if !libDir.IsDir() {
@@ -548,7 +547,7 @@ func (s *arduinoCoreServerImpl) UpdateIndex(req *rpc.UpdateIndexRequest, stream
548547
Message: &rpc.UpdateIndexResponse_DownloadProgress{DownloadProgress: p},
549548
})
550549
}
551-
indexpath := configuration.DataDir(s.settings)
550+
indexpath := s.settings.DataDir()
552551

553552
urls := []string{globals.DefaultIndexURL}
554553
if !req.GetIgnoreCustomPackageIndexes() {
@@ -614,6 +613,7 @@ func (s *arduinoCoreServerImpl) UpdateIndex(req *rpc.UpdateIndexRequest, stream
614613
downloadCB.Start(u, tr("Downloading index: %s", filepath.Base(URL.Path)))
615614
downloadCB.End(false, tr("Invalid network configuration: %s", err))
616615
failed = true
616+
continue
617617
}
618618

619619
if strings.HasSuffix(URL.Host, "arduino.cc") && strings.HasSuffix(URL.Path, ".json") {

Diff for: commands/internal/instances/instances.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ func Create(dataDir, packagesDir, downloadsDir *paths.Path, extraUserAgent strin
142142
}
143143
tempDir := dataDir.Join("tmp")
144144

145-
pm := packagemanager.NewBuilder(dataDir, packagesDir, downloadsDir, tempDir, userAgent, downloaderConfig).Build()
145+
pm := packagemanager.NewBuilder(dataDir, packagesDir, nil, downloadsDir, tempDir, userAgent, downloaderConfig).Build()
146146
lm, _ := librariesmanager.NewBuilder().Build()
147147

148148
instance := &coreInstance{

Diff for: commands/service.go

+10-8
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,30 @@ import (
1919
"context"
2020

2121
"github.com/arduino/arduino-cli/internal/cli/configuration"
22+
"github.com/arduino/arduino-cli/internal/i18n"
2223
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
24+
"github.com/arduino/arduino-cli/version"
2325
)
2426

2527
// NewArduinoCoreServer returns an implementation of the ArduinoCoreService gRPC service
2628
// that uses the provided version string.
27-
func NewArduinoCoreServer(version string, settings *configuration.Settings) rpc.ArduinoCoreServiceServer {
28-
return &arduinoCoreServerImpl{
29-
versionString: version,
30-
settings: settings,
31-
}
29+
func NewArduinoCoreServer() rpc.ArduinoCoreServiceServer {
30+
settings := configuration.NewSettings()
31+
32+
// Setup i18n
33+
i18n.Init(settings.Locale())
34+
35+
return &arduinoCoreServerImpl{settings: settings}
3236
}
3337

3438
type arduinoCoreServerImpl struct {
3539
rpc.UnsafeArduinoCoreServiceServer // Force compile error for unimplemented methods
3640

37-
versionString string
38-
3941
// Settings holds configurations of the CLI and the gRPC consumers
4042
settings *configuration.Settings
4143
}
4244

4345
// Version returns the version of the Arduino CLI
4446
func (s *arduinoCoreServerImpl) Version(ctx context.Context, req *rpc.VersionRequest) (*rpc.VersionResponse, error) {
45-
return &rpc.VersionResponse{Version: s.versionString}, nil
47+
return &rpc.VersionResponse{Version: version.VersionInfo.VersionString}, nil
4648
}

Diff for: commands/service_board_list_test.go

+16-8
Original file line numberDiff line numberDiff line change
@@ -48,59 +48,67 @@ func TestGetByVidPid(t *testing.T) {
4848
defer ts.Close()
4949

5050
vidPidURL = ts.URL
51-
res, err := apiByVidPid("0xf420", "0XF069", configuration.Init(""))
51+
settings := configuration.NewSettings()
52+
res, err := apiByVidPid("0xf420", "0XF069", settings)
5253
require.Nil(t, err)
5354
require.Len(t, res, 1)
5455
require.Equal(t, "Arduino/Genuino MKR1000", res[0].GetName())
5556
require.Equal(t, "arduino:samd:mkr1000", res[0].GetFqbn())
5657

5758
// wrong vid (too long), wrong pid (not an hex value)
5859

59-
_, err = apiByVidPid("0xfffff", "0xDEFG", configuration.Init(""))
60+
_, err = apiByVidPid("0xfffff", "0xDEFG", settings)
6061
require.NotNil(t, err)
6162
}
6263

6364
func TestGetByVidPidNotFound(t *testing.T) {
65+
settings := configuration.NewSettings()
66+
6467
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
6568
w.WriteHeader(http.StatusNotFound)
6669
}))
6770
defer ts.Close()
6871

6972
vidPidURL = ts.URL
70-
res, err := apiByVidPid("0x0420", "0x0069", configuration.Init(""))
73+
res, err := apiByVidPid("0x0420", "0x0069", settings)
7174
require.NoError(t, err)
7275
require.Empty(t, res)
7376
}
7477

7578
func TestGetByVidPid5xx(t *testing.T) {
79+
settings := configuration.NewSettings()
80+
7681
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
7782
w.WriteHeader(http.StatusInternalServerError)
7883
w.Write([]byte("500 - Ooooops!"))
7984
}))
8085
defer ts.Close()
8186

8287
vidPidURL = ts.URL
83-
res, err := apiByVidPid("0x0420", "0x0069", configuration.Init(""))
88+
res, err := apiByVidPid("0x0420", "0x0069", settings)
8489
require.NotNil(t, err)
8590
require.Equal(t, "the server responded with status 500 Internal Server Error", err.Error())
8691
require.Len(t, res, 0)
8792
}
8893

8994
func TestGetByVidPidMalformedResponse(t *testing.T) {
95+
settings := configuration.NewSettings()
96+
9097
ts := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
9198
fmt.Fprintln(w, "{}")
9299
}))
93100
defer ts.Close()
94101

95102
vidPidURL = ts.URL
96-
res, err := apiByVidPid("0x0420", "0x0069", configuration.Init(""))
103+
res, err := apiByVidPid("0x0420", "0x0069", settings)
97104
require.NotNil(t, err)
98105
require.Equal(t, "wrong format in server response", err.Error())
99106
require.Len(t, res, 0)
100107
}
101108

102109
func TestBoardDetectionViaAPIWithNonUSBPort(t *testing.T) {
103-
items, err := identifyViaCloudAPI(properties.NewMap(), configuration.Init(""))
110+
settings := configuration.NewSettings()
111+
items, err := identifyViaCloudAPI(properties.NewMap(), settings)
104112
require.NoError(t, err)
105113
require.Empty(t, items)
106114
}
@@ -112,7 +120,7 @@ func TestBoardIdentifySorting(t *testing.T) {
112120
defer paths.TempDir().Join("test").RemoveAll()
113121

114122
// We don't really care about the paths in this case
115-
pmb := packagemanager.NewBuilder(dataDir, dataDir, dataDir, dataDir, "test", downloader.GetDefaultConfig())
123+
pmb := packagemanager.NewBuilder(dataDir, dataDir, nil, dataDir, dataDir, "test", downloader.GetDefaultConfig())
116124

117125
// Create some boards with identical VID:PID combination
118126
pack := pmb.GetOrCreatePackage("packager")
@@ -148,7 +156,7 @@ func TestBoardIdentifySorting(t *testing.T) {
148156
pme, release := pm.NewExplorer()
149157
defer release()
150158

151-
settings := configuration.Init("")
159+
settings := configuration.NewSettings()
152160
res, err := identify(pme, &discovery.Port{Properties: idPrefs}, settings)
153161
require.NoError(t, err)
154162
require.NotNil(t, res)

Diff for: commands/service_cache_clean.go

+1-2
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,12 @@ package commands
1818
import (
1919
"context"
2020

21-
"github.com/arduino/arduino-cli/internal/cli/configuration"
2221
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2322
)
2423

2524
// CleanDownloadCacheDirectory clean the download cache directory (where archives are downloaded).
2625
func (s *arduinoCoreServerImpl) CleanDownloadCacheDirectory(ctx context.Context, req *rpc.CleanDownloadCacheDirectoryRequest) (*rpc.CleanDownloadCacheDirectoryResponse, error) {
27-
cachePath := configuration.DownloadsDir(s.settings)
26+
cachePath := s.settings.DownloadsDir()
2827
err := cachePath.RemoveAll()
2928
if err != nil {
3029
return nil, err

Diff for: commands/service_compile.go

+6-7
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ import (
3232
"github.com/arduino/arduino-cli/internal/arduino/sketch"
3333
"github.com/arduino/arduino-cli/internal/arduino/utils"
3434
"github.com/arduino/arduino-cli/internal/buildcache"
35-
"github.com/arduino/arduino-cli/internal/cli/configuration"
3635
"github.com/arduino/arduino-cli/internal/inventory"
3736
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3837
paths "github.com/arduino/go-paths-helper"
@@ -67,7 +66,7 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
6766
ctx := stream.Context()
6867
syncSend := NewSynchronizedSend(stream.Send)
6968

70-
exportBinaries := s.settings.GetBool("sketch.always_export_binaries")
69+
exportBinaries := s.settings.SketchAlwaysExportBinaries()
7170
if e := req.ExportBinaries; e != nil {
7271
exportBinaries = *e
7372
}
@@ -175,8 +174,8 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
175174
// cache is purged after compilation to not remove entries that might be required
176175

177176
defer maybePurgeBuildCache(
178-
s.settings.GetUint("build_cache.compilations_before_purge"),
179-
s.settings.GetDuration("build_cache.ttl").Abs())
177+
s.settings.GetCompilationsBeforeBuildCachePurge(),
178+
s.settings.GetBuildCacheTTL().Abs())
180179

181180
var coreBuildCachePath *paths.Path
182181
if req.GetBuildCachePath() == "" {
@@ -198,7 +197,7 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
198197

199198
actualPlatform := buildPlatform
200199
otherLibrariesDirs := paths.NewPathList(req.GetLibraries()...)
201-
otherLibrariesDirs.Add(configuration.LibrariesDir(s.settings))
200+
otherLibrariesDirs.Add(s.settings.LibrariesDir())
202201

203202
var libsManager *librariesmanager.LibrariesManager
204203
if pme.GetProfile() != nil {
@@ -231,9 +230,9 @@ func (s *arduinoCoreServerImpl) Compile(req *rpc.CompileRequest, stream rpc.Ardu
231230
coreBuildCachePath,
232231
int(req.GetJobs()),
233232
req.GetBuildProperties(),
234-
configuration.HardwareDirectories(s.settings),
233+
s.settings.HardwareDirectories(),
235234
otherLibrariesDirs,
236-
configuration.IDEBuiltinLibrariesDir(s.settings),
235+
s.settings.IDEBuiltinLibrariesDir(),
237236
fqbn,
238237
req.GetClean(),
239238
req.GetSourceOverride(),

Diff for: commands/service_debug_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestGetCommandLine(t *testing.T) {
3737
sketchPath := paths.New("testdata", "debug", sketch)
3838
require.NoError(t, sketchPath.ToAbs())
3939

40-
pmb := packagemanager.NewBuilder(nil, nil, nil, nil, "test", downloader.GetDefaultConfig())
40+
pmb := packagemanager.NewBuilder(nil, nil, nil, nil, nil, "test", downloader.GetDefaultConfig())
4141
pmb.LoadHardwareFromDirectory(customHardware)
4242
pmb.LoadHardwareFromDirectory(dataDir)
4343

Diff for: commands/service_platform_search_test.go

+19-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ import (
1919
"context"
2020
"testing"
2121

22-
"github.com/arduino/arduino-cli/internal/cli/configuration"
2322
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
2423
"github.com/arduino/go-paths-helper"
2524
"github.com/stretchr/testify/require"
@@ -36,9 +35,17 @@ func TestPlatformSearch(t *testing.T) {
3635
err := paths.New("testdata", "platform", "package_index.json").CopyTo(dataDir.Join("package_index.json"))
3736
require.Nil(t, err)
3837

39-
settings := configuration.Init(paths.TempDir().Join("test", "arduino-cli.yaml").String())
40-
srv := NewArduinoCoreServer("", settings)
4138
ctx := context.Background()
39+
srv := NewArduinoCoreServer()
40+
41+
conf, err := paths.TempDir().Join("test", "arduino-cli.yaml").ReadFile()
42+
require.NoError(t, err)
43+
_, err = srv.ConfigurationOpen(ctx, &rpc.ConfigurationOpenRequest{
44+
Format: "yaml",
45+
EncodedSettings: string(conf),
46+
})
47+
require.NoError(t, err)
48+
4249
createResp, err := srv.Create(ctx, &rpc.CreateRequest{})
4350
require.NoError(t, err)
4451

@@ -337,9 +344,16 @@ func TestPlatformSearchSorting(t *testing.T) {
337344
err := paths.New("testdata", "platform", "package_index.json").CopyTo(dataDir.Join("package_index.json"))
338345
require.Nil(t, err)
339346

340-
settings := configuration.Init(paths.TempDir().Join("test", "arduino-cli.yaml").String())
341-
srv := NewArduinoCoreServer("", settings)
342347
ctx := context.Background()
348+
srv := NewArduinoCoreServer()
349+
350+
conf, err := paths.TempDir().Join("test", "arduino-cli.yaml").ReadFile()
351+
require.NoError(t, err)
352+
_, err = srv.ConfigurationOpen(ctx, &rpc.ConfigurationOpenRequest{
353+
Format: "yaml",
354+
EncodedSettings: string(conf),
355+
})
356+
require.NoError(t, err)
343357

344358
createResp, err := srv.Create(ctx, &rpc.CreateRequest{})
345359
require.NoError(t, err)

0 commit comments

Comments
 (0)