package main import ( "flag" "fmt" "os" "os/signal" "syscall" "code.betamike.com/micropelago/pmux/pmuxlib" "gopkg.in/yaml.v3" ) func main() { cfgPath := flag.String("c", "./pmux.yml", "Path to config yaml file") flag.Parse() cfgB, err := os.ReadFile(*cfgPath) if err != nil { panic(fmt.Sprintf("couldn't read cfg file at %q: %v", *cfgPath, err)) } var cfg pmuxlib.Config if err := yaml.Unmarshal(cfgB, &cfg); err != nil { panic(fmt.Sprintf("couldn't parse cfg file: %v", err)) } p := pmuxlib.NewPmux(cfg, os.Stdout, os.Stderr) defer p.Stop() sigCh := make(chan os.Signal, 2) signal.Notify(sigCh, os.Interrupt, syscall.SIGTERM) <-sigCh go func() { <-sigCh fmt.Fprintln(os.Stderr, "forcefully exiting pmux process, there may be zombie child processes being left behind, good luck!") os.Stderr.Sync() os.Exit(1) }() }