Files
BrowserOS/packages/browseros-agent/tools/dev/proc/run.go
Dani Akash 290ee91a8b Add 'packages/browseros-agent/' from commit '90bd4be3008285bf3825aad3702aff98f872671a'
git-subtree-dir: packages/browseros-agent
git-subtree-mainline: 8f148d0918
git-subtree-split: 90bd4be300
2026-03-13 21:22:09 +05:30

49 lines
993 B
Go

package proc
import (
"context"
"os/exec"
"sync"
)
func RunBlocking(ctx context.Context, dir string, t Tag, args ...string) error {
cmd := exec.CommandContext(ctx, args[0], args[1:]...)
cmd.Dir = dir
stdout, _ := cmd.StdoutPipe()
stderr, _ := cmd.StderrPipe()
if err := cmd.Start(); err != nil {
return err
}
var wg sync.WaitGroup
wg.Add(2)
go func() { defer wg.Done(); StreamLines(stdout, t) }()
go func() { defer wg.Done(); StreamLines(stderr, t) }()
wg.Wait()
return cmd.Wait()
}
func RunBlockingWithEnv(ctx context.Context, dir string, env []string, t Tag, args ...string) error {
cmd := exec.CommandContext(ctx, args[0], args[1:]...)
cmd.Dir = dir
cmd.Env = env
stdout, _ := cmd.StdoutPipe()
stderr, _ := cmd.StderrPipe()
if err := cmd.Start(); err != nil {
return err
}
var wg sync.WaitGroup
wg.Add(2)
go func() { defer wg.Done(); StreamLines(stdout, t) }()
go func() { defer wg.Done(); StreamLines(stderr, t) }()
wg.Wait()
return cmd.Wait()
}