MCPcopy Create free account
hub / github.com/cortesi/modd / start

Method start

shell/shell.go:65–109  ·  view source on GitHub ↗
(
	log termlog.Stream, bufferr bool,
)

Source from the content-addressed store, hash-verified

63}
64
65func (e *Executor) start(
66 log termlog.Stream, bufferr bool,
67) (*exec.Cmd, *bytes.Buffer, *sync.WaitGroup, error) {
68 e.Lock()
69 defer e.Unlock()
70
71 cmd, err := makeCommand(e.Shell, e.Command, e.Dir)
72 if err != nil {
73 return nil, nil, nil, err
74 }
75 e.cmd = cmd
76
77 stdo, err := cmd.StdoutPipe()
78 if err != nil {
79 return nil, nil, nil, err
80 }
81 stde, err := cmd.StderrPipe()
82 if err != nil {
83 return nil, nil, nil, err
84 }
85 e.stdo = stdo
86 e.stde = stde
87
88 buff := new(bytes.Buffer)
89 err = cmd.Start()
90 if err != nil {
91 return nil, nil, nil, err
92 }
93 wg := sync.WaitGroup{}
94 wg.Add(2)
95 buflock := sync.Mutex{}
96 go logOutput(
97 &wg, stde,
98 func(s string, args ...interface{}) {
99 log.Warn(s, args...)
100 if bufferr {
101 buflock.Lock()
102 defer buflock.Unlock()
103 fmt.Fprintf(buff, "%s\n", args...)
104 }
105 },
106 )
107 go logOutput(&wg, stdo, log.Say)
108 return cmd, buff, &wg, nil
109}
110
111func (e *Executor) running() bool {
112 return e.cmd != nil

Callers 1

RunMethod · 0.95

Calls 2

makeCommandFunction · 0.85
logOutputFunction · 0.70

Tested by

no test coverage detected