|
|
@@ -15,13 +15,14 @@ import ( |
|
|
|
) |
|
|
|
|
|
|
|
var ( |
|
|
|
// ErrExecTimeout represent a timeout error |
|
|
|
ErrExecTimeout = errors.New("Process execution timeout") |
|
|
|
) |
|
|
|
|
|
|
|
// Common timeout. |
|
|
|
var ( |
|
|
|
// DefaultTimeout is the timeout used by Exec* family |
|
|
|
// of function when timeout parameter is omitted or |
|
|
|
// passed as -1 |
|
|
|
// NOTE: could be custom in config file for default. |
|
|
|
DEFAULT = 60 * time.Second |
|
|
|
DefaultTimeout = 60 * time.Second |
|
|
|
) |
|
|
|
|
|
|
|
// Process represents a working process inherit from Gogs. |
|
|
@@ -51,10 +52,13 @@ func Add(desc string, cmd *exec.Cmd) int64 { |
|
|
|
return pid |
|
|
|
} |
|
|
|
|
|
|
|
// Exec starts executing a command in given path, it records its process and timeout. |
|
|
|
// ExecDir runs a command in given path and waits for its completion |
|
|
|
// up to the given timeout (or DefaultTimeout if -1 is given). |
|
|
|
// Returns its complete stdout and stderr |
|
|
|
// outputs and an error, if any (including timeout) |
|
|
|
func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) (string, string, error) { |
|
|
|
if timeout == -1 { |
|
|
|
timeout = DEFAULT |
|
|
|
timeout = DefaultTimeout |
|
|
|
} |
|
|
|
|
|
|
|
bufOut := new(bytes.Buffer) |
|
|
@@ -89,12 +93,17 @@ func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) ( |
|
|
|
return bufOut.String(), bufErr.String(), err |
|
|
|
} |
|
|
|
|
|
|
|
// Exec starts executing a command, it records its process and timeout. |
|
|
|
// ExecTimeout runs a command and waits for its completion |
|
|
|
// up to the given timeout (or DefaultTimeout if -1 is given). |
|
|
|
// Returns its complete stdout and stderr |
|
|
|
// outputs and an error, if any (including timeout) |
|
|
|
func ExecTimeout(timeout time.Duration, desc, cmdName string, args ...string) (string, string, error) { |
|
|
|
return ExecDir(timeout, "", desc, cmdName, args...) |
|
|
|
} |
|
|
|
|
|
|
|
// Exec starts executing a command, it records its process and has default timeout. |
|
|
|
// Exec runs a command and waits for its completion |
|
|
|
// up to DefaultTimeout. Returns its complete stdout and stderr |
|
|
|
// outputs and an error, if any (including timeout) |
|
|
|
func Exec(desc, cmdName string, args ...string) (string, string, error) { |
|
|
|
return ExecDir(-1, "", desc, cmdName, args...) |
|
|
|
} |