@@ -3,17 +3,13 @@ package instances
33import (
44 "sync"
55
6- "github.com/arduino/arduino-cli/commands/cmderrors"
7- "github.com/arduino/arduino-cli/i18n"
86 "github.com/arduino/arduino-cli/internal/arduino/cores/packagemanager"
97 "github.com/arduino/arduino-cli/internal/arduino/libraries/librariesmanager"
10- "github.com/arduino/arduino-cli/internal/cli/configuration"
118 rpc "github.com/arduino/arduino-cli/rpc/cc/arduino/cli/commands/v1"
129 "github.com/arduino/arduino-cli/version"
10+ "github.com/arduino/go-paths-helper"
1311)
1412
15- var tr = i18n .Tr
16-
1713// coreInstance is an instance of the Arduino Core Services. The user can
1814// instantiate as many as needed by providing a different configuration
1915// for each one.
@@ -74,45 +70,18 @@ func SetLibraryManager(inst *rpc.Instance, lm *librariesmanager.LibrariesManager
7470 return true
7571}
7672
77- // Create a new *rpc.Instance ready to be initialized, supporting directories are also created.
78- func Create (extraUserAgent ... string ) (* rpc.Instance , error ) {
73+ // Create a new *rpc.Instance ready to be initialized
74+ func Create (dataDir , packagesDir , downloadsDir * paths. Path , extraUserAgent ... string ) (* rpc.Instance , error ) {
7975 instance := & coreInstance {}
8076
81- // Setup downloads directory
82- downloadsDir := configuration .DownloadsDir (configuration .Settings )
83- if downloadsDir .NotExist () {
84- err := downloadsDir .MkdirAll ()
85- if err != nil {
86- return nil , & cmderrors.PermissionDeniedError {Message : tr ("Failed to create downloads directory" ), Cause : err }
87- }
88- }
89-
90- // Setup data directory
91- dataDir := configuration .DataDir (configuration .Settings )
92- packagesDir := configuration .PackagesDir (configuration .Settings )
93- if packagesDir .NotExist () {
94- err := packagesDir .MkdirAll ()
95- if err != nil {
96- return nil , & cmderrors.PermissionDeniedError {Message : tr ("Failed to create data directory" ), Cause : err }
97- }
98- }
99-
10077 // Create package manager
10178 userAgent := "arduino-cli/" + version .VersionInfo .VersionString
10279 for _ , ua := range extraUserAgent {
10380 userAgent += " " + ua
10481 }
105- instance .pm = packagemanager .NewBuilder (
106- dataDir ,
107- configuration .PackagesDir (configuration .Settings ),
108- downloadsDir ,
109- dataDir .Join ("tmp" ),
110- userAgent ,
111- ).Build ()
112- instance .lm = librariesmanager .NewLibraryManager (
113- dataDir ,
114- downloadsDir ,
115- )
82+ tempDir := dataDir .Join ("tmp" )
83+ instance .pm = packagemanager .NewBuilder (dataDir , packagesDir , downloadsDir , tempDir , userAgent ).Build ()
84+ instance .lm = librariesmanager .NewLibraryManager (dataDir , downloadsDir )
11685
11786 // Save instance
11887 instancesMux .Lock ()
0 commit comments