summaryrefslogtreecommitdiffhomepage
path: root/cmd/diff
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/diff
parent0697dcc1d9c7330d8c9d8a2be0bb94b3d46c9345 (diff)
downloadopencode-bd2ec29b65e430f83f430db5fdc424c7d631989d.tar.gz
opencode-bd2ec29b65e430f83f430db5fdc424c7d631989d.zip
add initial git support
Diffstat (limited to 'cmd/diff')
-rw-r--r--cmd/diff/main.go102
1 files changed, 102 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
+}