@@ -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