Skip to content

Commit 8c204d0

Browse files
committed
Start using packagemanager in 'compile' command
1 parent 290451c commit 8c204d0

File tree

2 files changed

+18
-14
lines changed

2 files changed

+18
-14
lines changed

commands/compile/compile.go

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ import (
3636
"sort"
3737
"strings"
3838

39+
"github.com/bcmi-labs/arduino-cli/cores/packagemanager"
40+
3941
builder "github.com/arduino/arduino-builder"
4042
"github.com/arduino/arduino-builder/types"
4143
"github.com/arduino/arduino-builder/utils"
@@ -44,7 +46,6 @@ import (
4446
"github.com/bcmi-labs/arduino-cli/common/formatter"
4547
"github.com/bcmi-labs/arduino-cli/configs"
4648
"github.com/bcmi-labs/arduino-cli/cores"
47-
"github.com/bcmi-labs/arduino-cli/cores/packageindex"
4849
"github.com/bcmi-labs/arduino-cli/sketches"
4950
"github.com/sirupsen/logrus"
5051
"github.com/spf13/cobra"
@@ -198,18 +199,21 @@ func run(cmd *cobra.Command, args []string) {
198199
}
199200
// FIXME: this is building the CommandLine to run the builder; we should move it to a "cores.compute" pkg
200201
// Add dependency tools paths to build properties with versions corresponding to specific core version.
201-
var packageIndex packageindex.Index
202-
packageindex.LoadIndex(&packageIndex)
203-
for _, packageFromIndex := range packageIndex.Packages {
204-
if packageFromIndex.Name == packageName {
205-
for _, platformFromIndex := range packageFromIndex.Platforms {
206-
if platformFromIndex.Architecture == coreName && platformFromIndex.Version == coreVersion {
207-
for _, toolDependencyFromIndex := range platformFromIndex.ToolDependencies {
208-
if isInstalled, _ := cores.IsToolVersionInstalled(packageName, toolDependencyFromIndex.Name, toolDependencyFromIndex.Version); !isInstalled {
209-
formatter.PrintError(err, fmt.Sprintf("Required tool version not found: %s - %s.", toolDependencyFromIndex.Name, toolDependencyFromIndex.Version))
202+
pm := packagemanager.PackageManager()
203+
if err := pm.LoadHardware(); err != nil {
204+
formatter.PrintError(err, "Error loading hardware packages.")
205+
os.Exit(commands.ErrCoreConfig)
206+
}
207+
for _, targetPackage := range pm.GetPackages().Packages {
208+
if targetPackage.Name == packageName {
209+
for _, platform := range targetPackage.Platforms {
210+
if platform.Architecture == coreName && platform.Releases[coreVersion] != nil {
211+
for _, toolDep := range platform.Releases[coreVersion].Dependencies {
212+
if isInstalled, _ := cores.IsToolVersionInstalled(toolDep); !isInstalled {
213+
formatter.PrintError(err, fmt.Sprintf("Required tool version not found: %s - %s.", toolDep.ToolName, toolDep.ToolVersion))
210214
os.Exit(commands.ErrBadCall)
211215
}
212-
property := "runtime.tools." + toolDependencyFromIndex.Name + ".path=" + filepath.Join(toolsFolder, toolDependencyFromIndex.Name, toolDependencyFromIndex.Version)
216+
property := "runtime.tools." + toolDep.ToolName + ".path=" + filepath.Join(toolsFolder, toolDep.ToolName, toolDep.ToolVersion)
213217
ctx.CustomBuildProperties = append(ctx.CustomBuildProperties, property)
214218
}
215219
break

cores/common.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,12 +66,12 @@ func IsToolInstalled(packageName string, name string) (bool, error) {
6666
}
6767

6868
// IsToolVersionInstalled detects if a specific version of a tool has been installed.
69-
func IsToolVersionInstalled(packageName string, name string, version string) (bool, error) {
70-
location, err := configs.ToolsFolder(packageName).Get()
69+
func IsToolVersionInstalled(dep *ToolDependency) (bool, error) {
70+
location, err := configs.ToolsFolder(dep.ToolPackager).Get()
7171
if err != nil {
7272
return false, err
7373
}
74-
_, err = os.Stat(filepath.Join(location, name, version))
74+
_, err = os.Stat(filepath.Join(location, dep.ToolName, dep.ToolVersion))
7575
if !os.IsNotExist(err) {
7676
return true, nil
7777
}

0 commit comments

Comments
 (0)