Added gist methods related to git + Truncate command output

This commit is contained in:
Thomas Miceli
2023-03-18 16:18:24 +01:00
parent 167abd4ae5
commit 22668be923
8 changed files with 202 additions and 112 deletions

View File

@ -0,0 +1,39 @@
package git
import (
"bytes"
"io"
)
func truncateCommandOutput(out io.Reader, maxBytes int64) (string, bool, error) {
var (
buf []byte
err error
)
if maxBytes < 0 {
// read entire output
buf, err = io.ReadAll(out)
if err != nil {
return "", false, err
}
return string(buf), false, nil
}
// read up to maxBytes bytes
buf = make([]byte, maxBytes)
n, err := io.ReadFull(out, buf)
if err != nil && err != io.EOF && err != io.ErrUnexpectedEOF {
return "", false, err
}
bytesRead := int64(n)
// find index of last newline character
lastNewline := bytes.LastIndexByte(buf, '\n')
if lastNewline >= 0 {
// truncate buffer to exclude last line
buf = buf[:lastNewline]
}
return string(buf), bytesRead == maxBytes, nil
}