1
0
Эх сурвалжийг харах

fix: support Windows in execShell by replacing /bin/sh with cmd.exe (#1389)

Co-authored-by: Alireza Gholie <alireza.gholie@gmail.com>
Alireza Gholiei 1 долоо хоног өмнө
parent
commit
9eb759d567
1 өөрчлөгдсөн 16 нэмэгдсэн , 1 устгасан
  1. 16 1
      internal/nginx/exec.go

+ 16 - 1
internal/nginx/exec.go

@@ -3,13 +3,28 @@ package nginx
 import (
 	"context"
 	"os/exec"
+	"runtime"
 
 	"github.com/0xJacky/Nginx-UI/internal/docker"
 	"github.com/0xJacky/Nginx-UI/settings"
 )
 
 func execShell(cmd string) (stdOut string, stdErr error) {
-	return execCommand("/bin/sh", "-c", cmd)
+	var execCmd *exec.Cmd
+
+	if runtime.GOOS == "windows" {
+		execCmd = exec.Command("cmd", "/c", cmd)
+	} else {
+		execCmd = exec.Command("/bin/sh", "-c", cmd)
+	}
+
+	execCmd.Dir = GetNginxExeDir()
+	bytes, err := execCmd.CombinedOutput()
+	stdOut = string(bytes)
+	if err != nil {
+		stdErr = err
+	}
+	return
 }
 
 func execCommand(name string, cmd ...string) (stdOut string, stdErr error) {