Skip to content

Commit 0f4666e

Browse files
committed
Implemented createInstance function
1 parent 4b248bc commit 0f4666e

File tree

2 files changed

+36
-86
lines changed

2 files changed

+36
-86
lines changed

commands/instances.go

Lines changed: 36 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,10 @@ var instancesCount int32 = 1
2626
// instantiate as many as needed by providing a different configuration
2727
// for each one.
2828
type CoreInstance struct {
29-
config *configs.Configuration
30-
pm *packagemanager.PackageManager
31-
lm *librariesmanager.LibrariesManager
29+
config *configs.Configuration
30+
pm *packagemanager.PackageManager
31+
lm *librariesmanager.LibrariesManager
32+
getLibOnly bool
3233
}
3334

3435
type InstanceContainer interface {
@@ -74,70 +75,15 @@ func Init(ctx context.Context, req *rpc.InitReq) (*rpc.InitResp, error) {
7475
return nil, fmt.Errorf("parsing url %s: %s", rawurl, err)
7576
}
7677
}
77-
78-
var pm *packagemanager.PackageManager
79-
if !req.GetLibraryManagerOnly() {
80-
pm = packagemanager.NewPackageManager(
81-
config.IndexesDir(),
82-
config.PackagesDir(),
83-
config.DownloadsDir(),
84-
config.DataDir.Join("tmp"))
85-
86-
for _, URL := range config.BoardManagerAdditionalUrls {
87-
if err := pm.LoadPackageIndex(URL); err != nil {
88-
return nil, fmt.Errorf("loading "+URL.String()+" package index: %s", err)
89-
}
90-
}
91-
92-
if err := pm.LoadHardware(config); err != nil {
93-
return nil, fmt.Errorf("loading hardware packages: %s", err)
94-
}
95-
}
96-
97-
// Initialize library manager
98-
// --------------------------
99-
lm := librariesmanager.NewLibraryManager(
100-
config.IndexesDir(),
101-
config.DownloadsDir())
102-
103-
// Add IDE builtin libraries dir
104-
if bundledLibsDir := config.IDEBundledLibrariesDir(); bundledLibsDir != nil {
105-
lm.AddLibrariesDir(bundledLibsDir, libraries.IDEBuiltIn)
106-
}
107-
108-
// Add sketchbook libraries dir
109-
lm.AddLibrariesDir(config.LibrariesDir(), libraries.Sketchbook)
110-
111-
// Add libraries dirs from installed platforms
112-
if pm != nil {
113-
for _, targetPackage := range pm.GetPackages().Packages {
114-
for _, platform := range targetPackage.Platforms {
115-
if platformRelease := pm.GetInstalledPlatformRelease(platform); platformRelease != nil {
116-
lm.AddPlatformReleaseLibrariesDir(platformRelease, libraries.PlatformBuiltIn)
117-
}
118-
}
119-
}
120-
}
121-
122-
// Load index and auto-update it if needed
123-
if err := lm.LoadIndex(); err != nil {
124-
UpdateLibrariesIndex(ctx, lm, func(curr *rpc.DownloadProgress) {
125-
fmt.Printf(">> %+v\n", curr)
126-
})
127-
if err := lm.LoadIndex(); err != nil {
128-
return nil, fmt.Errorf("loading libraries index: %s", err)
129-
}
130-
}
131-
132-
// Scan for libraries
133-
if err := lm.RescanLibraries(); err != nil {
134-
return nil, fmt.Errorf("libraries rescan: %s", err)
78+
pm, lm, err := createInstance(ctx, config, req.GetLibraryManagerOnly())
79+
if err != nil {
80+
return nil, fmt.Errorf("Impossible create instance")
13581
}
136-
13782
instance := &CoreInstance{
138-
config: config,
139-
pm: pm,
140-
lm: lm}
83+
config: config,
84+
pm: pm,
85+
lm: lm,
86+
getLibOnly: req.GetLibraryManagerOnly()}
14187
handle := instancesCount
14288
instancesCount++
14389
instances[handle] = instance
@@ -193,22 +139,33 @@ func Rescan(ctx context.Context, req *rpc.RescanReq) (*rpc.RescanResp, error) {
193139
if config == nil {
194140
return nil, fmt.Errorf("invalid request")
195141
}
142+
pm, lm, err := createInstance(ctx, config, coreInstance.getLibOnly)
143+
if err != nil {
144+
return nil, fmt.Errorf("Impossible create")
145+
}
146+
coreInstance.pm = pm
147+
coreInstance.lm = lm
148+
return &rpc.RescanResp{}, nil
149+
}
196150

151+
func createInstance(ctx context.Context, config *configs.Configuration, GetLibOnly bool) (*packagemanager.PackageManager, *librariesmanager.LibrariesManager, error) {
197152
var pm *packagemanager.PackageManager
198-
pm = packagemanager.NewPackageManager(
199-
config.IndexesDir(),
200-
config.PackagesDir(),
201-
config.DownloadsDir(),
202-
config.DataDir.Join("tmp"))
153+
if !GetLibOnly {
154+
pm = packagemanager.NewPackageManager(
155+
config.IndexesDir(),
156+
config.PackagesDir(),
157+
config.DownloadsDir(),
158+
config.DataDir.Join("tmp"))
203159

204-
for _, URL := range config.BoardManagerAdditionalUrls {
205-
if err := pm.LoadPackageIndex(URL); err != nil {
206-
return nil, fmt.Errorf("loading "+URL.String()+" package index: %s", err)
160+
for _, URL := range config.BoardManagerAdditionalUrls {
161+
if err := pm.LoadPackageIndex(URL); err != nil {
162+
return nil, nil, fmt.Errorf("loading "+URL.String()+" package index: %s", err)
163+
}
207164
}
208-
}
209165

210-
if err := pm.LoadHardware(config); err != nil {
211-
return nil, fmt.Errorf("loading hardware packages: %s", err)
166+
if err := pm.LoadHardware(config); err != nil {
167+
return nil, nil, fmt.Errorf("loading hardware packages: %s", err)
168+
}
212169
}
213170

214171
// Initialize library manager
@@ -242,19 +199,13 @@ func Rescan(ctx context.Context, req *rpc.RescanReq) (*rpc.RescanResp, error) {
242199
fmt.Printf(">> %+v\n", curr)
243200
})
244201
if err := lm.LoadIndex(); err != nil {
245-
return nil, fmt.Errorf("loading libraries index: %s", err)
202+
return nil, nil, fmt.Errorf("loading libraries index: %s", err)
246203
}
247204
}
248205

249206
// Scan for libraries
250207
if err := lm.RescanLibraries(); err != nil {
251-
return nil, fmt.Errorf("libraries rescan: %s", err)
208+
return nil, nil, fmt.Errorf("libraries rescan: %s", err)
252209
}
253-
254-
coreInstance.pm = pm
255-
coreInstance.lm = lm
256-
id = req.Instance.Id
257-
return &rpc.RescanResp{
258-
Instance: &rpc.Instance{Id: id},
259-
}, nil
210+
return pm, lm, nil
260211
}

rpc/commands.proto

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,5 +76,4 @@ message RescanReq {
7676
}
7777

7878
message RescanResp {
79-
Instance instance = 1;
8079
}

0 commit comments

Comments
 (0)