diff options
Diffstat (limited to 'match_license.go')
| -rw-r--r-- | match_license.go | 36 |
1 files changed, 25 insertions, 11 deletions
diff --git a/match_license.go b/match_license.go index 1d15d7f..a9abb99 100644 --- a/match_license.go +++ b/match_license.go @@ -9,8 +9,10 @@ import ( ) type matchLicense struct { - rePattern *regexp.Regexp - reDeleteLine []*regexp.Regexp + rePattern *regexp.Regexp + + reDeleteLineBefore []*regexp.Regexp + reDeleteLineAfter []*regexp.Regexp // Pattern to be searched in file. Pattern string `ini:"match-license::pattern"` @@ -19,11 +21,15 @@ type matchLicense struct { // value if Pattern match. LicenseIdentifier string `ini:"match-license::license_identifier"` - // DeleteLinePattern zero or more pattern that will be search after - // Pattern match line. - // A line that match with this pattern will be deleted. - // An empty line stop the search. - DeleteLinePattern []string `ini:"match-license::delete_line_pattern"` + // DeleteLineBefore zero or more pattern that will be search before + // the matched Pattern line, and deleted if its match. + // Each pattern is executed in order until it does not match. + DeleteLineBefore []string `ini:"match-license::delete_line_before"` + + // DeleteLineAfter zero or more pattern that will be search after + // the matched Pattern line, and deleted if its match. + // Each pattern is executed in order until it does not match. + DeleteLineAfter []string `ini:"match-license::delete_line_after"` } func (cml *matchLicense) init() (err error) { @@ -34,13 +40,21 @@ func (cml *matchLicense) init() (err error) { return fmt.Errorf(`%s: pattern %q: %w`, logp, cml.Pattern, err) } } - cml.reDeleteLine = make([]*regexp.Regexp, len(cml.DeleteLinePattern)) - for x, pattern := range cml.DeleteLinePattern { + cml.reDeleteLineBefore = make([]*regexp.Regexp, len(cml.DeleteLineBefore)) + for x, pattern := range cml.DeleteLineBefore { + re, err := regexp.Compile(pattern) + if err != nil { + return fmt.Errorf(`%s: delete_line_before %q: %w`, logp, pattern, err) + } + cml.reDeleteLineBefore[x] = re + } + cml.reDeleteLineAfter = make([]*regexp.Regexp, len(cml.DeleteLineAfter)) + for x, pattern := range cml.DeleteLineAfter { re, err := regexp.Compile(pattern) if err != nil { - return fmt.Errorf(`%s: delete_line_pattern %q: %w`, logp, pattern, err) + return fmt.Errorf(`%s: delete_line_after %q: %w`, logp, pattern, err) } - cml.reDeleteLine[x] = re + cml.reDeleteLineAfter[x] = re } return nil } |
