@@ -130,59 +130,47 @@ func execSizeReceipe(properties properties.Map, logger i18n.Logger) (textSize in
130
130
// force multiline match prepending "(?m)" to the actual regexp
131
131
// return an error if RECIPE_SIZE_REGEXP doesn't exist
132
132
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 {
148
139
resErr = errors .New ("Missing size regexp" )
149
140
return
150
141
}
151
142
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
168
147
}
169
148
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
182
172
}
183
173
}
184
- } else {
185
- eepromSize = - 1
186
174
}
187
- return
175
+ return size , nil
188
176
}
0 commit comments