Skip to content

Commit d70a143

Browse files
author
Matheus
committed
initial structure
1 parent 4bde3eb commit d70a143

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

go.mod

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
module github.com/HashLoad/go-cmd-runner
2+
3+
go 1.13

runner.go

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package cmd
2+
3+
import (
4+
"bufio"
5+
"fmt"
6+
"io"
7+
"os/exec"
8+
"strings"
9+
)
10+
11+
func RunCmd(dir, cmdName string) error {
12+
fields := strings.Fields(cmdName)
13+
14+
cmd := exec.Command(fields[0], fields[1:]...)
15+
cmd.Dir = dir
16+
cmdReader, err := cmd.StdoutPipe()
17+
cmdErr, _ := cmd.StderrPipe()
18+
if err != nil {
19+
return err
20+
}
21+
merged := io.MultiReader(cmdReader, cmdErr)
22+
scanner := bufio.NewScanner(merged)
23+
go func() {
24+
for scanner.Scan() {
25+
text := scanner.Text()
26+
fmt.Printf("%s\n", text)
27+
}
28+
29+
}()
30+
31+
err = cmd.Start()
32+
if err != nil {
33+
return err
34+
}
35+
36+
err = cmd.Wait()
37+
if err != nil {
38+
return err
39+
}
40+
41+
return nil
42+
}

runner_test.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package cmd
2+
3+
import (
4+
"log"
5+
"testing"
6+
)
7+
8+
func TestRunCmd(t *testing.T) {
9+
err := RunCmd("/", "echo 'ok'")
10+
if err != nil {
11+
log.Fatal(err)
12+
}
13+
}

0 commit comments

Comments
 (0)