main.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. package main
  2. import (
  3. "fmt"
  4. "io"
  5. "os"
  6. "os/exec"
  7. "path/filepath"
  8. )
  9. func main() {
  10. // Create a temporary directory
  11. tempDir, err := os.MkdirTemp("", "git-split-diffs")
  12. if err != nil {
  13. fmt.Printf("Error creating temp directory: %v\n", err)
  14. os.Exit(1)
  15. }
  16. defer func() {
  17. fmt.Printf("Cleaning up temporary directory: %s\n", tempDir)
  18. os.RemoveAll(tempDir)
  19. }()
  20. fmt.Printf("Created temporary directory: %s\n", tempDir)
  21. // Clone the repository with minimum depth
  22. fmt.Println("Cloning git-split-diffs repository with minimum depth...")
  23. cmd := exec.Command("git", "clone", "--depth=1", "https://github.com/kujtimiihoxha/git-split-diffs", tempDir)
  24. cmd.Stdout = os.Stdout
  25. cmd.Stderr = os.Stderr
  26. if err := cmd.Run(); err != nil {
  27. fmt.Printf("Error cloning repository: %v\n", err)
  28. os.Exit(1)
  29. }
  30. // Run npm install
  31. fmt.Println("Running npm install...")
  32. cmdNpmInstall := exec.Command("npm", "install")
  33. cmdNpmInstall.Dir = tempDir
  34. cmdNpmInstall.Stdout = os.Stdout
  35. cmdNpmInstall.Stderr = os.Stderr
  36. if err := cmdNpmInstall.Run(); err != nil {
  37. fmt.Printf("Error running npm install: %v\n", err)
  38. os.Exit(1)
  39. }
  40. // Run npm run build
  41. fmt.Println("Running npm run build...")
  42. cmdNpmBuild := exec.Command("npm", "run", "build")
  43. cmdNpmBuild.Dir = tempDir
  44. cmdNpmBuild.Stdout = os.Stdout
  45. cmdNpmBuild.Stderr = os.Stderr
  46. if err := cmdNpmBuild.Run(); err != nil {
  47. fmt.Printf("Error running npm run build: %v\n", err)
  48. os.Exit(1)
  49. }
  50. destDir := filepath.Join(".", "internal", "assets", "diff")
  51. destFile := filepath.Join(destDir, "index.mjs")
  52. // Make sure the destination directory exists
  53. if err := os.MkdirAll(destDir, 0o755); err != nil {
  54. fmt.Printf("Error creating destination directory: %v\n", err)
  55. os.Exit(1)
  56. }
  57. // Copy the file
  58. srcFile := filepath.Join(tempDir, "build", "index.mjs")
  59. fmt.Printf("Copying %s to %s\n", srcFile, destFile)
  60. if err := copyFile(srcFile, destFile); err != nil {
  61. fmt.Printf("Error copying file: %v\n", err)
  62. os.Exit(1)
  63. }
  64. fmt.Println("Successfully completed the process!")
  65. }
  66. // copyFile copies a file from src to dst
  67. func copyFile(src, dst string) error {
  68. sourceFile, err := os.Open(src)
  69. if err != nil {
  70. return err
  71. }
  72. defer sourceFile.Close()
  73. destFile, err := os.Create(dst)
  74. if err != nil {
  75. return err
  76. }
  77. defer destFile.Close()
  78. _, err = io.Copy(destFile, sourceFile)
  79. if err != nil {
  80. return err
  81. }
  82. // Make sure the file is written to disk
  83. err = destFile.Sync()
  84. if err != nil {
  85. return err
  86. }
  87. return nil
  88. }