diff options
Diffstat (limited to 'internal/api')
| -rw-r--r-- | internal/api/changestats.go | 48 |
1 files changed, 7 insertions, 41 deletions
diff --git a/internal/api/changestats.go b/internal/api/changestats.go index 0b70105..4f18f7f 100644 --- a/internal/api/changestats.go +++ b/internal/api/changestats.go @@ -1,49 +1,15 @@ package api -import ( - "bufio" - "os" - "regexp" - "strconv" - "strings" +import "github.com/thepeterstone/claudomator/internal/task" - "github.com/thepeterstone/claudomator/internal/task" -) - -// gitDiffStatRe matches git diff --stat summary lines, e.g.: -// -// "3 files changed, 50 insertions(+), 10 deletions(-)" -// "1 file changed, 5 insertions(+)" -// "1 file changed, 3 deletions(-)" -var gitDiffStatRe = regexp.MustCompile(`(\d+) files? changed(?:, (\d+) insertions?\(\+\))?(?:, (\d+) deletions?\(-\))?`) - -// parseChangestatFromOutput scans text for git diff --stat summary lines and -// returns the first match as a Changestats value. Returns nil if no match found. +// parseChangestatFromOutput delegates to task.ParseChangestatFromOutput. +// Kept as a package-local wrapper for use within the api package. func parseChangestatFromOutput(output string) *task.Changestats { - scanner := bufio.NewScanner(strings.NewReader(output)) - for scanner.Scan() { - line := scanner.Text() - if m := gitDiffStatRe.FindStringSubmatch(line); m != nil { - cs := &task.Changestats{} - cs.FilesChanged, _ = strconv.Atoi(m[1]) - if m[2] != "" { - cs.LinesAdded, _ = strconv.Atoi(m[2]) - } - if m[3] != "" { - cs.LinesRemoved, _ = strconv.Atoi(m[3]) - } - return cs - } - } - return nil + return task.ParseChangestatFromOutput(output) } -// parseChangestatFromFile reads a log file and extracts the first git diff stat -// summary it finds. Returns nil if the file cannot be read or contains no match. +// parseChangestatFromFile delegates to task.ParseChangestatFromFile. +// Kept as a package-local wrapper for use within the api package. func parseChangestatFromFile(path string) *task.Changestats { - data, err := os.ReadFile(path) - if err != nil { - return nil - } - return parseChangestatFromOutput(string(data)) + return task.ParseChangestatFromFile(path) } |
