wslkd/wslkd.go

45 lines
883 B
Go
Raw Permalink Normal View History

2022-11-22 13:31:38 +08:00
package main
2022-11-22 14:00:07 +08:00
import (
"flag"
"github.com/xiaoqidun/gowsl"
"log"
"os"
2022-11-22 14:00:07 +08:00
"strings"
"sync"
"syscall"
2022-11-22 14:00:07 +08:00
)
2022-11-22 13:31:38 +08:00
func main() {
2022-11-22 14:00:07 +08:00
var d string
flag.StringVar(&d, "d", "Debian", "distribution")
2022-11-22 14:18:05 +08:00
flag.Parse()
2022-11-22 14:00:07 +08:00
waitGroup := &sync.WaitGroup{}
distroList := strings.Split(d, ",")
for i := 0; i < len(distroList); i++ {
distro := strings.TrimSpace(distroList[i])
if distro == "" {
continue
}
waitGroup.Add(1)
go exec(waitGroup, distro)
}
waitGroup.Wait()
}
2022-11-22 13:31:38 +08:00
2022-11-22 14:00:07 +08:00
func exec(done *sync.WaitGroup, distro string) {
defer done.Done()
if !gowsl.Registered(distro) {
log.Printf("%v does not exist\n", distro)
return
}
2022-11-23 21:59:00 +08:00
cmd := gowsl.Command(distro, "", "/bin/bash")
cmd.Stdin = os.Stdin
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
cmd.SysProcAttr = &syscall.SysProcAttr{HideWindow: true}
2022-11-22 14:00:07 +08:00
if err := cmd.Run(); err != nil {
2023-08-06 16:20:23 +08:00
log.Printf("%v cmd run err: %v\n", distro, err)
2022-11-22 14:00:07 +08:00
}
2022-11-22 13:31:38 +08:00
}