Skip to content

Commit b60ac1c

Browse files
cmagliefacchinm
authored andcommitted
Factored out size computation function.
This helps creating the test on the next commit. Signed-off-by: Cristian Maglie <[email protected]>
1 parent 34ae019 commit b60ac1c

File tree

1 file changed

+34
-46
lines changed

1 file changed

+34
-46
lines changed

Diff for: src/arduino.cc/builder/phases/sizer.go

+34-46
Original file line numberDiff line numberDiff line change
@@ -130,59 +130,47 @@ func execSizeReceipe(properties properties.Map, logger i18n.Logger) (textSize in
130130
// force multiline match prepending "(?m)" to the actual regexp
131131
// return an error if RECIPE_SIZE_REGEXP doesn't exist
132132

133-
if len(properties[constants.RECIPE_SIZE_REGEXP]) > 0 {
134-
textRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP])
135-
if err != nil {
136-
resErr = errors.New("Invalid size regexp: " + err.Error())
137-
return
138-
}
139-
result := textRegexp.FindAllSubmatch(out, -1)
140-
for _, b := range result {
141-
for _, c := range b {
142-
if res, err := strconv.Atoi(string(c)); err == nil {
143-
textSize += res
144-
}
145-
}
146-
}
147-
} else {
133+
textSize, err = computeSize(properties[constants.RECIPE_SIZE_REGEXP], out)
134+
if err != nil {
135+
resErr = errors.New("Invalid size regexp: " + err.Error())
136+
return
137+
}
138+
if textSize == -1 {
148139
resErr = errors.New("Missing size regexp")
149140
return
150141
}
151142

152-
if len(properties[constants.RECIPE_SIZE_REGEXP_DATA]) > 0 {
153-
dataRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP_DATA])
154-
if err != nil {
155-
resErr = errors.New("Invalid data size regexp: " + err.Error())
156-
return
157-
}
158-
result := dataRegexp.FindAllSubmatch(out, -1)
159-
for _, b := range result {
160-
for _, c := range b {
161-
if res, err := strconv.Atoi(string(c)); err == nil {
162-
dataSize += res
163-
}
164-
}
165-
}
166-
} else {
167-
dataSize = -1
143+
dataSize, err = computeSize(properties[constants.RECIPE_SIZE_REGEXP_DATA], out)
144+
if err != nil {
145+
resErr = errors.New("Invalid data size regexp: " + err.Error())
146+
return
168147
}
169148

170-
if len(properties[constants.RECIPE_SIZE_REGEXP_EEPROM]) > 0 {
171-
eepromRegexp, err := regexp.Compile("(?m)" + properties[constants.RECIPE_SIZE_REGEXP_EEPROM])
172-
if err != nil {
173-
resErr = errors.New("Invalid eeprom size regexp: " + err.Error())
174-
return
175-
}
176-
result := eepromRegexp.FindAllSubmatch(out, -1)
177-
for _, b := range result {
178-
for _, c := range b {
179-
if res, err := strconv.Atoi(string(c)); err == nil {
180-
eepromSize += res
181-
}
149+
eepromSize, err = computeSize(properties[constants.RECIPE_SIZE_REGEXP_EEPROM], out)
150+
if err != nil {
151+
resErr = errors.New("Invalid eeprom size regexp: " + err.Error())
152+
return
153+
}
154+
155+
return
156+
}
157+
158+
func computeSize(re string, output []byte) (int, error) {
159+
if re == "" {
160+
return -1, nil
161+
}
162+
r, err := regexp.Compile("(?m)" + re)
163+
if err != nil {
164+
return -1, err
165+
}
166+
result := r.FindAllSubmatch(output, -1)
167+
size := 0
168+
for _, b := range result {
169+
for _, c := range b {
170+
if res, err := strconv.Atoi(string(c)); err == nil {
171+
size += res
182172
}
183173
}
184-
} else {
185-
eepromSize = -1
186174
}
187-
return
175+
return size, nil
188176
}

0 commit comments

Comments
 (0)