summaryrefslogtreecommitdiffhomepage
path: root/internal/git/diff.go
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-13 14:37:05 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:41:27 +0200
commitcdc5f209dccdc980714f2ca1aeb52133d6e93cce (patch)
tree02fe97994dfce7f2e842be7b4c5170f534220eee /internal/git/diff.go
parent3ad983db0f2c08826d56cb5de274d706c95b3353 (diff)
downloadopencode-cdc5f209dccdc980714f2ca1aeb52133d6e93cce.tar.gz
opencode-cdc5f209dccdc980714f2ca1aeb52133d6e93cce.zip
cleanup diff, cleanup agent
Diffstat (limited to 'internal/git/diff.go')
-rw-r--r--internal/git/diff.go35
1 files changed, 17 insertions, 18 deletions
diff --git a/internal/git/diff.go b/internal/git/diff.go
index d87956f01..2ab139642 100644
--- a/internal/git/diff.go
+++ b/internal/git/diff.go
@@ -11,7 +11,6 @@ import (
"github.com/go-git/go-git/v5"
"github.com/go-git/go-git/v5/plumbing/object"
- "github.com/kujtimiihoxha/termai/internal/config"
)
type DiffStats struct {
@@ -197,32 +196,32 @@ func isSplitDiffsAvailable() bool {
}
func formatWithSplitDiffs(diffText string, width int) (string, error) {
- var cmd *exec.Cmd
+ args := []string{
+ "--color",
+ }
- appCfg := config.Get()
- appWd := config.WorkingDirectory()
- script := filepath.Join(
- appWd,
- appCfg.Data.Directory,
- "diff",
- "index.mjs",
- )
+ var diffCmd *exec.Cmd
- cmd = exec.Command("node", script, "--color")
+ if _, err := exec.LookPath("git-split-diffs-opencode"); err == nil {
+ fullArgs := append([]string{"git-split-diffs-opencode"}, args...)
+ diffCmd = exec.Command(fullArgs[0], fullArgs[1:]...)
+ } else {
+ npxArgs := append([]string{"git-split-diffs-opencode"}, args...)
+ diffCmd = exec.Command("npx", npxArgs...)
+ }
- cmd.Env = append(os.Environ(), fmt.Sprintf("COLUMNS=%d", width))
+ diffCmd.Env = append(os.Environ(), fmt.Sprintf("DIFF_COLUMNS=%d", width))
- cmd.Stdin = strings.NewReader(diffText)
+ diffCmd.Stdin = strings.NewReader(diffText)
var out bytes.Buffer
- cmd.Stdout = &out
+ diffCmd.Stdout = &out
var stderr bytes.Buffer
- cmd.Stderr = &stderr
+ diffCmd.Stderr = &stderr
- err := cmd.Run()
- if err != nil {
- return "", fmt.Errorf("git-split-diffs error: %v, stderr: %s", err, stderr.String())
+ if err := diffCmd.Run(); err != nil {
+ return "", fmt.Errorf("git-split-diffs-opencode error: %w, stderr: %s", err, stderr.String())
}
return out.String(), nil