Skip to content

Commit 5124948

Browse files
committed
PackageManager now has a user-agent
1 parent 98776d5 commit 5124948

File tree

9 files changed

+36
-18
lines changed

9 files changed

+36
-18
lines changed

Diff for: arduino/cores/packagemanager/loader_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ func TestLoadDiscoveries(t *testing.T) {
111111
fakePath := paths.New("fake-path")
112112

113113
createTestPackageManager := func() *PackageManager {
114-
packageManager := NewPackageManager(fakePath, fakePath, fakePath, fakePath)
114+
packageManager := NewPackageManager(fakePath, fakePath, fakePath, fakePath, "test")
115115
pack := packageManager.Packages.GetOrCreatePackage("arduino")
116116
// ble-discovery tool
117117
tool := pack.GetOrCreateTool("ble-discovery")

Diff for: arduino/cores/packagemanager/package_manager.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ type PackageManager struct {
4545
TempDir *paths.Path
4646
CustomGlobalProperties *properties.Map
4747
discoveryManager *discoverymanager.DiscoveryManager
48+
userAgent string
4849
}
4950

5051
var tr = i18n.Tr
5152

5253
// NewPackageManager returns a new instance of the PackageManager
53-
func NewPackageManager(indexDir, packagesDir, downloadDir, tempDir *paths.Path) *PackageManager {
54+
func NewPackageManager(indexDir, packagesDir, downloadDir, tempDir *paths.Path, userAgent string) *PackageManager {
5455
return &PackageManager{
5556
Log: logrus.StandardLogger(),
5657
Packages: cores.NewPackages(),
@@ -60,6 +61,7 @@ func NewPackageManager(indexDir, packagesDir, downloadDir, tempDir *paths.Path)
6061
TempDir: tempDir,
6162
CustomGlobalProperties: properties.NewMap(),
6263
discoveryManager: discoverymanager.New(),
64+
userAgent: userAgent,
6365
}
6466
}
6567

Diff for: arduino/cores/packagemanager/package_manager_test.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ var dataDir1 = paths.New("testdata", "data_dir_1")
3737
var extraHardware = paths.New("testdata", "extra_hardware")
3838

3939
func TestFindBoardWithFQBN(t *testing.T) {
40-
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware)
40+
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware, "test")
4141
pm.LoadHardwareFromDirectory(customHardware)
4242

4343
board, err := pm.FindBoardWithFQBN("arduino:avr:uno")
@@ -53,7 +53,7 @@ func TestFindBoardWithFQBN(t *testing.T) {
5353

5454
func TestResolveFQBN(t *testing.T) {
5555
// Pass nil, since these paths are only used for installing
56-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
56+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "test")
5757
// Hardware from main packages directory
5858
pm.LoadHardwareFromDirectory(dataDir1.Join("packages"))
5959
// This contains the arduino:avr core
@@ -174,7 +174,7 @@ func TestResolveFQBN(t *testing.T) {
174174
}
175175

176176
func TestBoardOptionsFunctions(t *testing.T) {
177-
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware)
177+
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware, "test")
178178
pm.LoadHardwareFromDirectory(customHardware)
179179

180180
nano, err := pm.FindBoardWithFQBN("arduino:avr:nano")
@@ -218,6 +218,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) {
218218
configuration.PackagesDir(configuration.Settings),
219219
paths.New(configuration.Settings.GetString("directories.Downloads")),
220220
dataDir1,
221+
"test",
221222
)
222223

223224
loadIndex := func(addr string) {
@@ -301,7 +302,7 @@ func TestFindToolsRequiredForBoard(t *testing.T) {
301302
}
302303

303304
func TestIdentifyBoard(t *testing.T) {
304-
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware)
305+
pm := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware, "test")
305306
pm.LoadHardwareFromDirectory(customHardware)
306307

307308
identify := func(vid, pid string) []*cores.Board {
@@ -325,11 +326,11 @@ func TestIdentifyBoard(t *testing.T) {
325326

326327
func TestPackageManagerClear(t *testing.T) {
327328
// Create a PackageManager and load the harware
328-
packageManager := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware)
329+
packageManager := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware, "test")
329330
packageManager.LoadHardwareFromDirectory(customHardware)
330331

331332
// Creates another PackageManager but don't load the hardware
332-
emptyPackageManager := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware)
333+
emptyPackageManager := packagemanager.NewPackageManager(customHardware, customHardware, customHardware, customHardware, "test")
333334

334335
// Verifies they're not equal
335336
require.NotEqual(t, packageManager, emptyPackageManager)
@@ -344,7 +345,7 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
344345
// Create all the necessary data to load discoveries
345346
fakePath := paths.New("fake-path")
346347

347-
pm := packagemanager.NewPackageManager(fakePath, fakePath, fakePath, fakePath)
348+
pm := packagemanager.NewPackageManager(fakePath, fakePath, fakePath, fakePath, "test")
348349
pack := pm.Packages.GetOrCreatePackage("arduino")
349350

350351
{
@@ -444,7 +445,7 @@ func TestFindToolsRequiredFromPlatformRelease(t *testing.T) {
444445
}
445446

446447
func TestFindPlatformReleaseDependencies(t *testing.T) {
447-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
448+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "test")
448449
pm.LoadPackageIndexFromFile(paths.New("testdata", "package_tooltest_index.json"))
449450
pl, tools, err := pm.FindPlatformReleaseDependencies(&packagemanager.PlatformReference{Package: "test", PlatformArchitecture: "avr"})
450451
require.NoError(t, err)
@@ -455,7 +456,7 @@ func TestFindPlatformReleaseDependencies(t *testing.T) {
455456

456457
func TestLegacyPackageConversionToPluggableDiscovery(t *testing.T) {
457458
// Pass nil, since these paths are only used for installing
458-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
459+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "test")
459460
// Hardware from main packages directory
460461
pm.LoadHardwareFromDirectory(dataDir1.Join("packages"))
461462
{

Diff for: commands/board/list_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ func TestBoardIdentifySorting(t *testing.T) {
119119
defer paths.TempDir().Join("test").RemoveAll()
120120

121121
// We don't really care about the paths in this case
122-
pm := packagemanager.NewPackageManager(dataDir, dataDir, dataDir, dataDir)
122+
pm := packagemanager.NewPackageManager(dataDir, dataDir, dataDir, dataDir, "test")
123123

124124
// Create some boards with identical VID:PID combination
125125
pack := pm.Packages.GetOrCreatePackage("packager")

Diff for: commands/daemon/daemon.go

+10-2
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
3636
"github.com/sirupsen/logrus"
3737
"google.golang.org/grpc/codes"
38+
"google.golang.org/grpc/metadata"
3839
"google.golang.org/grpc/status"
3940
)
4041

@@ -226,8 +227,15 @@ func (s *ArduinoCoreServerImpl) Upgrade(req *rpc.UpgradeRequest, stream rpc.Ardu
226227
}
227228

228229
// Create FIXMEDOC
229-
func (s *ArduinoCoreServerImpl) Create(_ context.Context, req *rpc.CreateRequest) (*rpc.CreateResponse, error) {
230-
res, err := commands.Create(req)
230+
func (s *ArduinoCoreServerImpl) Create(ctx context.Context, req *rpc.CreateRequest) (*rpc.CreateResponse, error) {
231+
var userAgent []string
232+
if md, ok := metadata.FromIncomingContext(ctx); ok {
233+
userAgent = md.Get("user-agent")
234+
}
235+
if len(userAgent) == 0 {
236+
userAgent = []string{"gRPCClientUnknown/0.0.0"}
237+
}
238+
res, err := commands.Create(req, userAgent...)
231239
return res, convertErrorToRPCStatus(err)
232240
}
233241

Diff for: commands/debug/debug_test.go

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

39-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
39+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "test")
4040
pm.LoadHardwareFromDirectory(customHardware)
4141
pm.LoadHardwareFromDirectory(dataDir)
4242

Diff for: commands/instances.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ func (instance *CoreInstance) installToolIfMissing(tool *cores.ToolRelease, down
106106
}
107107

108108
// Create a new CoreInstance ready to be initialized, supporting directories are also created.
109-
func Create(req *rpc.CreateRequest) (*rpc.CreateResponse, error) {
109+
func Create(req *rpc.CreateRequest, extraUserAgent ...string) (*rpc.CreateResponse, error) {
110110
instance := &CoreInstance{}
111111

112112
// Setup downloads directory
@@ -129,11 +129,16 @@ func Create(req *rpc.CreateRequest) (*rpc.CreateResponse, error) {
129129
}
130130

131131
// Create package manager
132+
userAgent := "arduino-cli/" + globals.VersionInfo.VersionString
133+
for _, ua := range extraUserAgent {
134+
userAgent += " " + ua
135+
}
132136
instance.PackageManager = packagemanager.NewPackageManager(
133137
dataDir,
134138
configuration.PackagesDir(configuration.Settings),
135139
downloadsDir,
136140
dataDir.Join("tmp"),
141+
userAgent,
137142
)
138143

139144
// Create library manager and add libraries directories

Diff for: commands/upload/upload_test.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -127,7 +127,7 @@ func TestDetermineBuildPathAndSketchName(t *testing.T) {
127127
}
128128

129129
func TestUploadPropertiesComposition(t *testing.T) {
130-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
130+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "test")
131131
errs := pm.LoadHardwareFromDirectory(paths.New("testdata", "hardware"))
132132
require.Len(t, errs, 0)
133133
buildPath1 := paths.New("testdata", "build_path_1")

Diff for: legacy/builder/hardware_loader.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,9 @@ type HardwareLoader struct{}
2424

2525
func (s *HardwareLoader) Run(ctx *types.Context) error {
2626
if ctx.PackageManager == nil {
27-
pm := packagemanager.NewPackageManager(nil, nil, nil, nil)
27+
// This should happen only on legacy arduino-builder.
28+
// Hopefully this piece will be removed once the legacy package will be cleanedup.
29+
pm := packagemanager.NewPackageManager(nil, nil, nil, nil, "arduino-builder")
2830
if errs := pm.LoadHardwareFromDirectories(ctx.HardwareDirs); len(errs) > 0 {
2931
// With the refactoring of the initialization step of the CLI we changed how
3032
// errors are returned when loading platforms and libraries, that meant returning a list of

0 commit comments

Comments
 (0)