Skip to content

Commit

Permalink
Moving hardware loader in packagemanager (WIP 3/4)
Browse files Browse the repository at this point in the history
  • Loading branch information
cmaglie committed Mar 8, 2018
1 parent f9c1053 commit e16f92a
Show file tree
Hide file tree
Showing 2 changed files with 46 additions and 48 deletions.
47 changes: 1 addition & 46 deletions cores/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,57 +30,12 @@
package cores

import (
"fmt"
"os"
"path/filepath"

properties "github.com/arduino/go-properties-map"
)

func (platform *PlatformRelease) Load(folder string) error {
if _, err := os.Stat(filepath.Join(folder, "boards.txt")); err != nil && !os.IsNotExist(err) {
return fmt.Errorf("opening boards.txt: %s", err)
} else if os.IsNotExist(err) {
return fmt.Errorf("invalid platform directory %s: boards.txt not found", folder)
}
platform.Folder = folder

// Some useful paths
platformTxtPath := filepath.Join(folder, "platform.txt")
platformTxtLocalPath := filepath.Join(folder, "platform.local.txt")
programmersTxtPath := filepath.Join(folder, "programmers.txt")

// Create platform properties
platform.Properties = platform.Properties.Clone() // TODO: why CLONE?
if p, err := properties.SafeLoad(platformTxtPath); err == nil {
platform.Properties.Merge(p)
} else {
return fmt.Errorf("loading %s: %s", platformTxtPath, err)
}
if p, err := properties.SafeLoad(platformTxtLocalPath); err == nil {
platform.Properties.Merge(p)
} else {
return fmt.Errorf("loading %s: %s", platformTxtLocalPath, err)
}

// Create programmers properties
if programmersProperties, err := properties.SafeLoad(programmersTxtPath); err == nil {
platform.Programmers = properties.MergeMapsOfProperties(
map[string]properties.Map{},
platform.Programmers, // TODO: Very weird, why not an empty one?
programmersProperties.FirstLevelOf())
} else {
return err
}

if err := platform.loadBoards(); err != nil {
return err
}

return nil
}

func (platform *PlatformRelease) loadBoards() error {
func (platform *PlatformRelease) LoadBoards() error {
boardsTxtPath := filepath.Join(platform.Folder, "boards.txt")
boardsLocalTxtPath := filepath.Join(platform.Folder, "boards.local.txt")

Expand Down
47 changes: 45 additions & 2 deletions cores/packagemanager/loader.go
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,7 @@ func (pm *packageManager) LoadPlatforms(targetPackage *cores.Package, packageFol

platform := targetPackage.GetOrCreatePlatform(architecure)
release := platform.GetOrCreateRelease("")
if err := release.Load(platformPath); err != nil {
if err := pm.LoadPlatformRelease(release, platformPath); err != nil {
return fmt.Errorf("loading platform release: %s", err)
}

Expand All @@ -169,7 +169,7 @@ func (pm *packageManager) LoadPlatforms(targetPackage *cores.Package, packageFol
release := platform.GetOrCreateRelease(version)
platformWithVersionPath := filepath.Join(platformPath, version)

if err := release.Load(platformWithVersionPath); err != nil {
if err := pm.LoadPlatformRelease(release, platformWithVersionPath); err != nil {
return fmt.Errorf("loading platform release %s: %s", version, err)
}
}
Expand All @@ -180,3 +180,46 @@ func (pm *packageManager) LoadPlatforms(targetPackage *cores.Package, packageFol

return nil
}

func (pm *packageManager) LoadPlatformRelease(platform *cores.PlatformRelease, folder string) error {
if _, err := os.Stat(filepath.Join(folder, "boards.txt")); err != nil && !os.IsNotExist(err) {
return fmt.Errorf("opening boards.txt: %s", err)
} else if os.IsNotExist(err) {
return fmt.Errorf("invalid platform directory %s: boards.txt not found", folder)
}
platform.Folder = folder

// Some useful paths
platformTxtPath := filepath.Join(folder, "platform.txt")
platformTxtLocalPath := filepath.Join(folder, "platform.local.txt")
programmersTxtPath := filepath.Join(folder, "programmers.txt")

// Create platform properties
platform.Properties = platform.Properties.Clone() // TODO: why CLONE?
if p, err := properties.SafeLoad(platformTxtPath); err == nil {
platform.Properties.Merge(p)
} else {
return fmt.Errorf("loading %s: %s", platformTxtPath, err)
}
if p, err := properties.SafeLoad(platformTxtLocalPath); err == nil {
platform.Properties.Merge(p)
} else {
return fmt.Errorf("loading %s: %s", platformTxtLocalPath, err)
}

// Create programmers properties
if programmersProperties, err := properties.SafeLoad(programmersTxtPath); err == nil {
platform.Programmers = properties.MergeMapsOfProperties(
map[string]properties.Map{},
platform.Programmers, // TODO: Very weird, why not an empty one?
programmersProperties.FirstLevelOf())
} else {
return err
}

if err := platform.LoadBoards(); err != nil {
return err
}

return nil
}

0 comments on commit e16f92a

Please sign in to comment.