mirror of
				https://github.com/go-gitea/gitea
				synced 2025-10-31 03:18:24 +00:00 
			
		
		
		
	modules/process: add ExecDirEnv (next to ExecDir)
Add a sibling to ExecDir which is capable of specifying environment variables, so that we can invoke `git` with GIT_INDEX_FILE, GIT_DIR, etc.. For #258
This commit is contained in:
		| @@ -52,11 +52,11 @@ func Add(desc string, cmd *exec.Cmd) int64 { | |||||||
| 	return pid | 	return pid | ||||||
| } | } | ||||||
|  |  | ||||||
| // ExecDir runs a command in given path and waits for its completion | // ExecDirEnv runs a command in given path and environment variables, and waits for its completion | ||||||
| // up to the given timeout (or DefaultTimeout if -1 is given). | // up to the given timeout (or DefaultTimeout if -1 is given). | ||||||
| // Returns its complete stdout and stderr | // Returns its complete stdout and stderr | ||||||
| // outputs and an error, if any (including timeout) | // outputs and an error, if any (including timeout) | ||||||
| func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) (string, string, error) { | func ExecDirEnv(timeout time.Duration, dir, desc string, env []string, cmdName string, args ...string) (string, string, error) { | ||||||
| 	if timeout == -1 { | 	if timeout == -1 { | ||||||
| 		timeout = DefaultTimeout | 		timeout = DefaultTimeout | ||||||
| 	} | 	} | ||||||
| @@ -66,6 +66,7 @@ func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) ( | |||||||
|  |  | ||||||
| 	cmd := exec.Command(cmdName, args...) | 	cmd := exec.Command(cmdName, args...) | ||||||
| 	cmd.Dir = dir | 	cmd.Dir = dir | ||||||
|  | 	cmd.Env = env | ||||||
| 	cmd.Stdout = bufOut | 	cmd.Stdout = bufOut | ||||||
| 	cmd.Stderr = bufErr | 	cmd.Stderr = bufErr | ||||||
| 	if err := cmd.Start(); err != nil { | 	if err := cmd.Start(); err != nil { | ||||||
| @@ -93,6 +94,11 @@ func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) ( | |||||||
| 	return bufOut.String(), bufErr.String(), err | 	return bufOut.String(), bufErr.String(), err | ||||||
| } | } | ||||||
|  |  | ||||||
|  | // ExecDir works exactly like ExecDirEnv except no environment variable is provided. | ||||||
|  | func ExecDir(timeout time.Duration, dir, desc, cmdName string, args ...string) (string, string, error) { | ||||||
|  | 	return ExecDirEnv(timeout, dir, desc, nil, cmdName, args...) | ||||||
|  | } | ||||||
|  |  | ||||||
| // ExecTimeout runs a command and waits for its completion | // ExecTimeout runs a command and waits for its completion | ||||||
| // up to the given timeout (or DefaultTimeout if -1 is given). | // up to the given timeout (or DefaultTimeout if -1 is given). | ||||||
| // Returns its complete stdout and stderr | // Returns its complete stdout and stderr | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user