From bd2ec29b65e430f83f430db5fdc424c7d631989d Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Sat, 12 Apr 2025 18:45:36 +0200 Subject: add initial git support --- cmd/diff/main.go | 102 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ cmd/git/main.go | 4 +++ cmd/root.go | 6 ++++ 3 files changed, 112 insertions(+) create mode 100644 cmd/diff/main.go create mode 100644 cmd/git/main.go (limited to 'cmd') diff --git a/cmd/diff/main.go b/cmd/diff/main.go new file mode 100644 index 000000000..da93e4660 --- /dev/null +++ b/cmd/diff/main.go @@ -0,0 +1,102 @@ +package main + +import ( + "fmt" + "io" + "os" + "os/exec" + "path/filepath" +) + +func main() { + // Create a temporary directory + tempDir, err := os.MkdirTemp("", "git-split-diffs") + if err != nil { + fmt.Printf("Error creating temp directory: %v\n", err) + os.Exit(1) + } + defer func() { + fmt.Printf("Cleaning up temporary directory: %s\n", tempDir) + os.RemoveAll(tempDir) + }() + fmt.Printf("Created temporary directory: %s\n", tempDir) + + // Clone the repository with minimum depth + fmt.Println("Cloning git-split-diffs repository with minimum depth...") + cmd := exec.Command("git", "clone", "--depth=1", "https://github.com/kujtimiihoxha/git-split-diffs", tempDir) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + if err := cmd.Run(); err != nil { + fmt.Printf("Error cloning repository: %v\n", err) + os.Exit(1) + } + + // Run npm install + fmt.Println("Running npm install...") + cmdNpmInstall := exec.Command("npm", "install") + cmdNpmInstall.Dir = tempDir + cmdNpmInstall.Stdout = os.Stdout + cmdNpmInstall.Stderr = os.Stderr + if err := cmdNpmInstall.Run(); err != nil { + fmt.Printf("Error running npm install: %v\n", err) + os.Exit(1) + } + + // Run npm run build + fmt.Println("Running npm run build...") + cmdNpmBuild := exec.Command("npm", "run", "build") + cmdNpmBuild.Dir = tempDir + cmdNpmBuild.Stdout = os.Stdout + cmdNpmBuild.Stderr = os.Stderr + if err := cmdNpmBuild.Run(); err != nil { + fmt.Printf("Error running npm run build: %v\n", err) + os.Exit(1) + } + + destDir := filepath.Join(".", "internal", "assets", "diff") + destFile := filepath.Join(destDir, "index.mjs") + + // Make sure the destination directory exists + if err := os.MkdirAll(destDir, 0o755); err != nil { + fmt.Printf("Error creating destination directory: %v\n", err) + os.Exit(1) + } + + // Copy the file + srcFile := filepath.Join(tempDir, "build", "index.mjs") + fmt.Printf("Copying %s to %s\n", srcFile, destFile) + if err := copyFile(srcFile, destFile); err != nil { + fmt.Printf("Error copying file: %v\n", err) + os.Exit(1) + } + + fmt.Println("Successfully completed the process!") +} + +// copyFile copies a file from src to dst +func copyFile(src, dst string) error { + sourceFile, err := os.Open(src) + if err != nil { + return err + } + defer sourceFile.Close() + + destFile, err := os.Create(dst) + if err != nil { + return err + } + defer destFile.Close() + + _, err = io.Copy(destFile, sourceFile) + if err != nil { + return err + } + + // Make sure the file is written to disk + err = destFile.Sync() + if err != nil { + return err + } + + return nil +} diff --git a/cmd/git/main.go b/cmd/git/main.go new file mode 100644 index 000000000..da29a2cad --- /dev/null +++ b/cmd/git/main.go @@ -0,0 +1,4 @@ +package main + +func main() { +} diff --git a/cmd/root.go b/cmd/root.go index bdab53e14..d846a14c2 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -8,6 +8,7 @@ import ( tea "github.com/charmbracelet/bubbletea" "github.com/kujtimiihoxha/termai/internal/app" + "github.com/kujtimiihoxha/termai/internal/assets" "github.com/kujtimiihoxha/termai/internal/config" "github.com/kujtimiihoxha/termai/internal/db" "github.com/kujtimiihoxha/termai/internal/llm/agent" @@ -28,6 +29,9 @@ var rootCmd = &cobra.Command{ } debug, _ := cmd.Flags().GetBool("debug") err := config.Load(debug) + if err != nil { + return err + } cfg := config.Get() defaultLevel := slog.LevelInfo if cfg.Debug { @@ -38,9 +42,11 @@ var rootCmd = &cobra.Command{ })) slog.SetDefault(logger) + err = assets.WriteAssets() if err != nil { return err } + conn, err := db.Connect() if err != nil { return err -- cgit v1.2.3