Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.18 KB | None | 0 0
  1. func main() {
  2.     var wg sync.WaitGroup
  3.     for _, bar := range bars {
  4.         log.Infoln(fmt.Sprintf("Loading bar '%s'", bar))
  5.         wg.Add(1)
  6.         go polybar(newEnv, bar, wg)
  7.         // wg.Done()
  8.     }
  9.     wg.Wait()
  10.     // wg.Done()
  11. }
  12.  
  13. func polybar(env []string, bar string, wg sync.WaitGroup) {
  14.  
  15.     s := fmt.Sprintf("polybar -r %s", bar)
  16.     cmd := exec.Command("bash", "-c", s)
  17.     cmd.Env = env
  18.  
  19.     var stdoutBuf, stderrBuf bytes.Buffer
  20.     stdoutIn, _ := cmd.StdoutPipe()
  21.     stderrIn, _ := cmd.StderrPipe()
  22.  
  23.     var errStdout, errStderr error
  24.     stdout := io.MultiWriter(os.Stdout, &stdoutBuf)
  25.     stderr := io.MultiWriter(os.Stderr, &stderrBuf)
  26.     err := cmd.Start()
  27.     if err != nil {
  28.         // log.Fatalf("cmd.Start() failed with '%s'\n", err)
  29.         log.Errorf("cmd.Start() failed with '%s'\n", err)
  30.     }
  31.  
  32.     _, errStdout = io.Copy(stdout, stdoutIn)
  33.  
  34.     _, errStderr = io.Copy(stderr, stderrIn)
  35.  
  36.     err = cmd.Wait()
  37.     if err != nil {
  38.         log.Errorf("Starting bar %s failed with %s\n", bar, err)
  39.     }
  40.     if errStdout != nil || errStderr != nil {
  41.         log.Error("failed to capture stdout or stderr\n")
  42.     }
  43.     outStr, errStr := string(stdoutBuf.Bytes()), string(stderrBuf.Bytes())
  44.     fmt.Printf("\nout:\n%s\nerr:\n%s\n", outStr, errStr)
  45.     wg.Done()
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement