|
@@ -4,8 +4,56 @@ import (
|
|
"fmt"
|
|
"fmt"
|
|
"os/exec"
|
|
"os/exec"
|
|
"runtime"
|
|
"runtime"
|
|
|
|
+ "log"
|
|
|
|
+ "strings"
|
|
|
|
+ "strconv"
|
|
)
|
|
)
|
|
|
|
|
|
|
|
+func KillProcessByName(processName string) error {
|
|
|
|
+ var err error
|
|
|
|
+ switch runtime.GOOS {
|
|
|
|
+ case "linux", "darwin":
|
|
|
|
+ killStatement := fmt.Sprintf(`kill -9 $(ps -ef | grep %s | grep -v grep | awk '{print $2}')`, processName)
|
|
|
|
+ err = exec.Command("sh", "-c", killStatement).Start()
|
|
|
|
+ case "windows":
|
|
|
|
+ killStatement := fmt.Sprintf(`taskkill /F /IM %s`, processName)
|
|
|
|
+ err = exec.Command("cmd", "/C", killStatement).Start()
|
|
|
|
+ default:
|
|
|
|
+ err = fmt.Errorf("unsupported platform")
|
|
|
|
+ }
|
|
|
|
+ return err
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func KillProcess(port int) error {
|
|
|
|
+ var err error
|
|
|
|
+ switch runtime.GOOS {
|
|
|
|
+ case "linux", "darwin":
|
|
|
|
+ killStatement := fmt.Sprintf(`kill -9 $(lsof -i:%d -t)`, port)
|
|
|
|
+ err = exec.Command("sh", "-c", killStatement).Start()
|
|
|
|
+ case "windows":
|
|
|
|
+ killStatement := fmt.Sprintf(`netstat -ano | findstr %d`, port)
|
|
|
|
+ output, err := exec.Command("cmd", "/C", killStatement).Output()
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ pidString := strings.TrimSpace(string(output))
|
|
|
|
+ fields := strings.Fields(pidString)
|
|
|
|
+ pid, err := strconv.Atoi(fields[len(fields)-1])
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ killCommand := fmt.Sprintf("taskkill /F /PID %d", pid)
|
|
|
|
+ err = exec.Command("cmd", "/C", killCommand).Start()
|
|
|
|
+ if err != nil {
|
|
|
|
+ log.Fatal(err)
|
|
|
|
+ }
|
|
|
|
+ default:
|
|
|
|
+ err = fmt.Errorf("unsupported platform")
|
|
|
|
+ }
|
|
|
|
+ return err
|
|
|
|
+}
|
|
|
|
+
|
|
func OpenBrowser(url string) error {
|
|
func OpenBrowser(url string) error {
|
|
var err error
|
|
var err error
|
|
|
|
|