Skip to content

Commit c4c978a

Browse files
committed
Use default FQBN options when missing
Fix #23
1 parent 23d178a commit c4c978a

File tree

4 files changed

+66
-17
lines changed

4 files changed

+66
-17
lines changed

Diff for: Gopkg.lock

+2-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: arduino/cores/board.go

+24-14
Original file line numberDiff line numberDiff line change
@@ -62,30 +62,40 @@ func (b *Board) String() string {
6262

6363
// GetBuildProperties returns the build properties and the build
6464
// platform for the Board with the configuration passed as parameter.
65-
func (b *Board) GetBuildProperties(configs *properties.Map) (*properties.Map, error) {
65+
func (b *Board) GetBuildProperties(userConfigs *properties.Map) (*properties.Map, error) {
66+
// Clone user configs because they are destroyed during iteration
67+
userConfigs = userConfigs.Clone()
68+
6669
// Start with board's base properties
6770
buildProperties := b.Properties.Clone()
6871

69-
// Add all sub-configurations one by one
72+
// Add all sub-configurations one by one (a config is: option=value)
7073
menu := b.Properties.SubTree("menu")
71-
for _, option := range configs.Keys() {
72-
if option == "" {
73-
return nil, fmt.Errorf("invalid empty option found")
74-
}
75-
74+
for _, option := range menu.FirstLevelKeys() {
7675
optionMenu := menu.SubTree(option)
77-
if optionMenu.Size() == 0 {
78-
return nil, fmt.Errorf("invalid option '%s'", option)
79-
}
80-
optionValue := configs.Get(option)
81-
if !optionMenu.ContainsKey(optionValue) {
82-
return nil, fmt.Errorf("invalid value '%s' for option '%s'", optionValue, option)
76+
userValue, haveUserValue := userConfigs.GetOk(option)
77+
if haveUserValue {
78+
userConfigs.Remove(option)
79+
if !optionMenu.ContainsKey(userValue) {
80+
return nil, fmt.Errorf("invalid value '%s' for option '%s'", userValue, option)
81+
}
82+
} else {
83+
// apply default
84+
userValue = optionMenu.FirstLevelKeys()[0]
8385
}
8486

85-
optionsConf := optionMenu.SubTree(optionValue)
87+
optionsConf := optionMenu.SubTree(userValue)
8688
buildProperties.Merge(optionsConf)
8789
}
8890

91+
// Check for residual invalid options...
92+
for _, invalidOption := range userConfigs.Keys() {
93+
if invalidOption == "" {
94+
return nil, fmt.Errorf("invalid empty option found")
95+
}
96+
return nil, fmt.Errorf("invalid option '%s'", invalidOption)
97+
}
98+
8999
return buildProperties, nil
90100
}
91101

Diff for: vendor/github.com/arduino/go-properties-orderedmap/objects.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: vendor/github.com/arduino/go-properties-orderedmap/properties.go

+37
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)