summaryrefslogtreecommitdiffstats
path: root/modules/process
diff options
context:
space:
mode:
authorzeripath <art27@cantab.net>2020-06-13 22:47:31 +0100
committerGitHub <noreply@github.com>2020-06-13 17:47:31 -0400
commitae3cfa844945f446b511dbcae358b3f5b930b3ce (patch)
treee980a77cd07dca7729369499a1d8bf25ac016485 /modules/process
parent48842ed1085c9186c40c1a07aa0887f70707fce4 (diff)
downloadgitea-ae3cfa844945f446b511dbcae358b3f5b930b3ce.tar.gz
gitea-ae3cfa844945f446b511dbcae358b3f5b930b3ce.zip
Only write to global gitconfig if necessary (#11876)
* Only write to global gitconfig if necessary Fix #11855 Signed-off-by: Andrew Thornton <art27@cantab.net> * placate lint Signed-off-by: Andrew Thornton <art27@cantab.net> Co-authored-by: techknowlogick <techknowlogick@gitea.io>
Diffstat (limited to 'modules/process')
-rw-r--r--modules/process/manager.go28
1 files changed, 27 insertions, 1 deletions
diff --git a/modules/process/manager.go b/modules/process/manager.go
index af6ee9b81d..27ed1d4964 100644
--- a/modules/process/manager.go
+++ b/modules/process/manager.go
@@ -157,7 +157,14 @@ func (pm *Manager) ExecDirEnvStdIn(timeout time.Duration, dir, desc string, env
pm.Remove(pid)
if err != nil {
- err = fmt.Errorf("exec(%d:%s) failed: %v(%v) stdout: %v stderr: %v", pid, desc, err, ctx.Err(), stdOut, stdErr)
+ err = &Error{
+ PID: pid,
+ Description: desc,
+ Err: err,
+ CtxErr: ctx.Err(),
+ Stdout: stdOut.String(),
+ Stderr: stdErr.String(),
+ }
}
return stdOut.String(), stdErr.String(), err
@@ -176,3 +183,22 @@ func (l processList) Less(i, j int) bool {
func (l processList) Swap(i, j int) {
l[i], l[j] = l[j], l[i]
}
+
+// Error is a wrapped error describing the error results of Process Execution
+type Error struct {
+ PID int64
+ Description string
+ Err error
+ CtxErr error
+ Stdout string
+ Stderr string
+}
+
+func (err *Error) Error() string {
+ return fmt.Sprintf("exec(%d:%s) failed: %v(%v) stdout: %s stderr: %s", err.PID, err.Description, err.Err, err.CtxErr, err.Stdout, err.Stderr)
+}
+
+// Unwrap implements the unwrappable implicit interface for go1.13 Unwrap()
+func (err *Error) Unwrap() error {
+ return err.Err
+}