github.com/konsorten/ktn-build-info@v1.0.11/ver/update_regex.go (about) 1 package ver 2 3 import ( 4 "io/ioutil" 5 "regexp" 6 7 log "github.com/sirupsen/logrus" 8 ) 9 10 func UpdateRegexFile(filename string, matchMap UpdateActions, usePosix bool, vi *VersionInformation) error { 11 // read the file 12 txt, err := ioutil.ReadFile(filename) 13 14 if err != nil { 15 log.Errorf("Failed to read %v file: %v", filename, err) 16 return err 17 } 18 19 // update the data 20 for k, v := range matchMap { 21 // compile the regular expression 22 var r *regexp.Regexp 23 24 if usePosix { 25 r, err = regexp.CompilePOSIX(k) 26 } else { 27 r, err = regexp.Compile(k) 28 } 29 30 // render value 31 log.Debugf("Applying regex: %v", v) 32 33 newValue, err := RenderTemplate(v, filename, vi) 34 35 if err != nil { 36 return err 37 } 38 39 // replace 40 txt = r.ReplaceAll(txt, []byte(newValue)) 41 } 42 43 // write back the file 44 err = ioutil.WriteFile(filename, txt, 0644) 45 46 if err != nil { 47 return err 48 } 49 50 // done 51 log.Infof("Updated regex %v file", filename) 52 53 return nil 54 }