package metadata import ( "regexp" "strings" ) type snapshotExtractor struct { re *regexp.Regexp } func (e snapshotExtractor) Matches(line string) bool { return e.re.MatchString(line) } func (e snapshotExtractor) Extract(metadata *BackupLogMetadata, line string) { // Sample line: "snapshot 917c7691 saved" metadata.SnapshotID = strings.Split(line, " ")[1] } func NewSnapshotExtractor() MetadatExtractor { return snapshotExtractor{regexp.MustCompile(`(?i)^snapshot \w+ saved`)} }