summaryrefslogtreecommitdiffhomepage
path: root/cmd
diff options
context:
space:
mode:
authorKujtim Hoxha <[email protected]>2025-04-12 18:45:36 +0200
committerKujtim Hoxha <[email protected]>2025-04-21 13:38:42 +0200
commitbd2ec29b65e430f83f430db5fdc424c7d631989d (patch)
tree0d7ee1a29a7932d54ffa1f247303568d85a3cf11 /cmd
parent0697dcc1d9c7330d8c9d8a2be0bb94b3d46c9345 (diff)
downloadopencode-bd2ec29b65e430f83f430db5fdc424c7d631989d.tar.gz
opencode-bd2ec29b65e430f83f430db5fdc424c7d631989d.zip
add initial git support
Diffstat (limited to 'cmd')
-rw-r--r--cmd/diff/main.go102
-rw-r--r--cmd/git/main.go4
-rw-r--r--cmd/root.go6
3 files changed, 112 insertions, 0 deletions
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