Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- func main() {
- var wg sync.WaitGroup
- for _, bar := range bars {
- log.Infoln(fmt.Sprintf("Loading bar '%s'", bar))
- wg.Add(1)
- go polybar(newEnv, bar, wg)
- // wg.Done()
- }
- wg.Wait()
- // wg.Done()
- }
- func polybar(env []string, bar string, wg sync.WaitGroup) {
- s := fmt.Sprintf("polybar -r %s", bar)
- cmd := exec.Command("bash", "-c", s)
- cmd.Env = env
- var stdoutBuf, stderrBuf bytes.Buffer
- stdoutIn, _ := cmd.StdoutPipe()
- stderrIn, _ := cmd.StderrPipe()
- var errStdout, errStderr error
- stdout := io.MultiWriter(os.Stdout, &stdoutBuf)
- stderr := io.MultiWriter(os.Stderr, &stderrBuf)
- err := cmd.Start()
- if err != nil {
- // log.Fatalf("cmd.Start() failed with '%s'\n", err)
- log.Errorf("cmd.Start() failed with '%s'\n", err)
- }
- _, errStdout = io.Copy(stdout, stdoutIn)
- _, errStderr = io.Copy(stderr, stderrIn)
- err = cmd.Wait()
- if err != nil {
- log.Errorf("Starting bar %s failed with %s\n", bar, err)
- }
- if errStdout != nil || errStderr != nil {
- log.Error("failed to capture stdout or stderr\n")
- }
- outStr, errStr := string(stdoutBuf.Bytes()), string(stderrBuf.Bytes())
- fmt.Printf("\nout:\n%s\nerr:\n%s\n", outStr, errStr)
- wg.Done()
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement