updated dependencies and go
This commit is contained in:
+2
-2
@@ -61,12 +61,12 @@ func (r *CommandRunner) Envs(env []string) *CommandRunner {
|
||||
}
|
||||
|
||||
func (r *CommandRunner) EnsureExitcode(arg ...int) *CommandRunner {
|
||||
r.enforceExitCodes = langext.Ptr(langext.ForceArray(arg))
|
||||
r.enforceExitCodes = new(langext.ForceArray(arg))
|
||||
return r
|
||||
}
|
||||
|
||||
func (r *CommandRunner) FailOnExitCode() *CommandRunner {
|
||||
r.enforceExitCodes = langext.Ptr([]int{0})
|
||||
r.enforceExitCodes = new([]int{0})
|
||||
return r
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -37,7 +37,7 @@ func run(opt CommandRunner) (CommandResult, error) {
|
||||
}
|
||||
|
||||
preader := pipeReader{
|
||||
lineBufferSize: langext.Ptr(128 * 1024 * 1024), // 128MB max size of a single line, is hopefully enough....
|
||||
lineBufferSize: new(128 * 1024 * 1024), // 128MB max size of a single line, is hopefully enough....
|
||||
stdout: stdoutPipe,
|
||||
stderr: stderrPipe,
|
||||
}
|
||||
@@ -66,7 +66,7 @@ func run(opt CommandRunner) (CommandResult, error) {
|
||||
|
||||
if opt.enforceNoStderr {
|
||||
listener = append(listener, genericCommandListener{
|
||||
_readRawStderr: langext.Ptr(func(v []byte) {
|
||||
_readRawStderr: new(func(v []byte) {
|
||||
if len(v) > 0 {
|
||||
stderrFailChan <- true
|
||||
}
|
||||
|
||||
+12
-15
@@ -4,6 +4,7 @@ import (
|
||||
"bufio"
|
||||
"git.blackforestbytes.com/BlackForestBytes/goext/syncext"
|
||||
"io"
|
||||
"strings"
|
||||
"sync"
|
||||
)
|
||||
|
||||
@@ -29,14 +30,14 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
|
||||
wg.Add(1)
|
||||
stdoutBufferReader, stdoutBufferWriter := io.Pipe()
|
||||
stdout := ""
|
||||
var stdout strings.Builder
|
||||
go func() {
|
||||
buf := make([]byte, 128)
|
||||
for {
|
||||
n, err := pr.stdout.Read(buf)
|
||||
if n > 0 {
|
||||
txt := string(buf[:n])
|
||||
stdout += txt
|
||||
stdout.WriteString(txt)
|
||||
_, _ = stdoutBufferWriter.Write(buf[:n])
|
||||
for _, lstr := range listener {
|
||||
lstr.ReadRawStdout(buf[:n])
|
||||
@@ -58,7 +59,7 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
|
||||
wg.Add(1)
|
||||
stderrBufferReader, stderrBufferWriter := io.Pipe()
|
||||
stderr := ""
|
||||
var stderr strings.Builder
|
||||
go func() {
|
||||
buf := make([]byte, 128)
|
||||
for {
|
||||
@@ -66,7 +67,7 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
|
||||
if n > 0 {
|
||||
txt := string(buf[:n])
|
||||
stderr += txt
|
||||
stderr.WriteString(txt)
|
||||
_, _ = stderrBufferWriter.Write(buf[:n])
|
||||
for _, lstr := range listener {
|
||||
lstr.ReadRawStderr(buf[:n])
|
||||
@@ -88,8 +89,7 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
|
||||
// [3] collect stdout line-by-line
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
wg.Go(func() {
|
||||
scanner := bufio.NewScanner(stdoutBufferReader)
|
||||
if pr.lineBufferSize != nil {
|
||||
scanner.Buffer([]byte{}, *pr.lineBufferSize)
|
||||
@@ -105,13 +105,11 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
errch <- err
|
||||
}
|
||||
combch <- combevt{"", true}
|
||||
wg.Done()
|
||||
}()
|
||||
})
|
||||
|
||||
// [4] collect stderr line-by-line
|
||||
|
||||
wg.Add(1)
|
||||
go func() {
|
||||
wg.Go(func() {
|
||||
scanner := bufio.NewScanner(stderrBufferReader)
|
||||
if pr.lineBufferSize != nil {
|
||||
scanner.Buffer([]byte{}, *pr.lineBufferSize)
|
||||
@@ -127,13 +125,12 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
errch <- err
|
||||
}
|
||||
combch <- combevt{"", true}
|
||||
wg.Done()
|
||||
}()
|
||||
})
|
||||
|
||||
// [5] combine stdcombined
|
||||
|
||||
wg.Add(1)
|
||||
stdcombined := ""
|
||||
var stdcombined strings.Builder
|
||||
go func() {
|
||||
stopctr := 0
|
||||
for stopctr < 2 {
|
||||
@@ -141,7 +138,7 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
if vvv.stop {
|
||||
stopctr++
|
||||
} else {
|
||||
stdcombined += vvv.line + "\n" // this comes from bufio.Scanner and has no newlines...
|
||||
stdcombined.WriteString(vvv.line + "\n") // this comes from bufio.Scanner and has no newlines...
|
||||
}
|
||||
}
|
||||
wg.Done()
|
||||
@@ -154,5 +151,5 @@ func (pr *pipeReader) Read(listener []CommandListener) (string, string, string,
|
||||
return "", "", "", err
|
||||
}
|
||||
|
||||
return stdout, stderr, stdcombined, nil
|
||||
return stdout.String(), stderr.String(), stdcombined.String(), nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user