File tree Expand file tree Collapse file tree 3 files changed +58
-0
lines changed Expand file tree Collapse file tree 3 files changed +58
-0
lines changed Original file line number Diff line number Diff line change
1
+ module github.com/HashLoad/go-cmd-runner
2
+
3
+ go 1.13
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change
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
+ }
You can’t perform that action at this time.
0 commit comments