1package diff
 2
 3import (
 4	"strings"
 5
 6	"github.com/aymanbagabas/go-udiff"
 7)
 8
 9// GenerateDiff creates a unified diff from two file contents
10func GenerateDiff(beforeContent, afterContent, fileName string) (string, int, int) {
11	fileName = strings.TrimPrefix(fileName, "/")
12
13	var (
14		unified   = udiff.Unified("a/"+fileName, "b/"+fileName, beforeContent, afterContent)
15		additions = 0
16		removals  = 0
17	)
18
19	lines := strings.SplitSeq(unified, "\n")
20	for line := range lines {
21		if strings.HasPrefix(line, "+") && !strings.HasPrefix(line, "+++") {
22			additions++
23		} else if strings.HasPrefix(line, "-") && !strings.HasPrefix(line, "---") {
24			removals++
25		}
26	}
27
28	return unified, additions, removals
29}