rename execEnvs to envExec
Signed-off-by: yxxhero <aiopsclub@163.com>
This commit is contained in:
		
							parent
							
								
									2dff652862
								
							
						
					
					
						commit
						d83e9214e6
					
				|  | @ -1124,13 +1124,13 @@ mysetting: | | ||||||
| 
 | 
 | ||||||
| The possibility is endless. Try importing values from your golang app, bash script, jsonnet, or anything! | The possibility is endless. Try importing values from your golang app, bash script, jsonnet, or anything! | ||||||
| 
 | 
 | ||||||
| Then `execEnvs` same as `exec`, but it can receive a dict as the envs.   | Then `envExec` same as `exec`, but it can receive a dict as the envs.   | ||||||
| 
 | 
 | ||||||
| A usual usage of `execEnvs` would look like this:   | A usual usage of `envExec` would look like this:   | ||||||
| 
 | 
 | ||||||
| ```yaml | ```yaml | ||||||
| mysetting: | | mysetting: | | ||||||
| {{ execEnvs (dict "envkey" "envValue") "./mycmd" (list "arg1" "arg2" "--flag1") | indent 2 }} | {{ envExec (dict "envkey" "envValue") "./mycmd" (list "arg1" "arg2" "--flag1") | indent 2 }} | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,7 +20,7 @@ type Values = map[string]interface{} | ||||||
| 
 | 
 | ||||||
| func (c *Context) createFuncMap() template.FuncMap { | func (c *Context) createFuncMap() template.FuncMap { | ||||||
| 	funcMap := template.FuncMap{ | 	funcMap := template.FuncMap{ | ||||||
| 		"execEnvs":         c.ExecEnvs, | 		"envExec":          c.EnvExec, | ||||||
| 		"exec":             c.Exec, | 		"exec":             c.Exec, | ||||||
| 		"isFile":           c.IsFile, | 		"isFile":           c.IsFile, | ||||||
| 		"readFile":         c.ReadFile, | 		"readFile":         c.ReadFile, | ||||||
|  | @ -50,7 +50,7 @@ func (c *Context) createFuncMap() template.FuncMap { | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // TODO: in the next major version, remove this function.
 | // TODO: in the next major version, remove this function.
 | ||||||
| func (c *Context) ExecEnvs(envs map[string]string, command string, args []interface{}, inputs ...string) (string, error) { | func (c *Context) EnvExec(envs map[string]interface{}, command string, args []interface{}, inputs ...string) (string, error) { | ||||||
| 	var input string | 	var input string | ||||||
| 	if len(inputs) > 0 { | 	if len(inputs) > 0 { | ||||||
| 		input = inputs[0] | 		input = inputs[0] | ||||||
|  | @ -66,6 +66,18 @@ func (c *Context) ExecEnvs(envs map[string]string, command string, args []interf | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	envsLen := len(envs) | ||||||
|  | 	strEnvs := make(map[string]string, envsLen) | ||||||
|  | 
 | ||||||
|  | 	for k, v := range envs { | ||||||
|  | 		switch v.(type) { | ||||||
|  | 		case string: | ||||||
|  | 			strEnvs[k] = fmt.Sprintf("%v", v) | ||||||
|  | 		default: | ||||||
|  | 			return "", fmt.Errorf("unexpected type of env \"%s\" in envs %v at index %s", reflect.TypeOf(v), envs, k) | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
| 	cmd := exec.Command(command, strArgs...) | 	cmd := exec.Command(command, strArgs...) | ||||||
| 	cmd.Dir = c.basePath | 	cmd.Dir = c.basePath | ||||||
| 	if envs != nil { | 	if envs != nil { | ||||||
|  | @ -128,7 +140,7 @@ func (c *Context) ExecEnvs(envs map[string]string, command string, args []interf | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Context) Exec(command string, args []interface{}, inputs ...string) (string, error) { | func (c *Context) Exec(command string, args []interface{}, inputs ...string) (string, error) { | ||||||
| 	return c.ExecEnvs(nil, command, args, inputs...) | 	return c.EnvExec(nil, command, args, inputs...) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| func (c *Context) IsFile(filename string) (bool, error) { | func (c *Context) IsFile(filename string) (bool, error) { | ||||||
|  |  | ||||||
|  | @ -268,9 +268,9 @@ func TestExec(t *testing.T) { | ||||||
| 	require.Error(t, err, "Expected error to be returned when executing command with non-zero exit code") | 	require.Error(t, err, "Expected error to be returned when executing command with non-zero exit code") | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // TestExecEnvs tests that ExecEnvs returns the expected output.
 | // TestEnvExec tests that EnvExec returns the expected output.
 | ||||||
| // TODO: in the next major version, this test should be removed.
 | // TODO: in the next major version, this test should be removed.
 | ||||||
| func TestExecEnvs(t *testing.T) { | func TestEnvExec(t *testing.T) { | ||||||
| 	ctx := &Context{basePath: "."} | 	ctx := &Context{basePath: "."} | ||||||
| 
 | 
 | ||||||
| 	expected := "foo" | 	expected := "foo" | ||||||
|  | @ -278,14 +278,20 @@ func TestExecEnvs(t *testing.T) { | ||||||
| 	testKey := "testkey" | 	testKey := "testkey" | ||||||
| 
 | 
 | ||||||
| 	// test that the command is executed with environment variables
 | 	// test that the command is executed with environment variables
 | ||||||
| 	output, err := ctx.ExecEnvs(map[string]string{testKey: "foo"}, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | 	output, err := ctx.EnvExec(map[string]interface{}{testKey: "foo"}, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | ||||||
| 
 | 
 | ||||||
| 	require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables") | 	require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables") | ||||||
| 
 | 
 | ||||||
| 	require.Equalf(t, expected, output, "Expected %s to be returned when executing command with environment variables", expected) | 	require.Equalf(t, expected, output, "Expected %s to be returned when executing command with environment variables", expected) | ||||||
| 
 | 
 | ||||||
|  | 	// test that the command is executed with invalid environment variables
 | ||||||
|  | 	output, err = ctx.EnvExec(map[string]interface{}{testKey: 123}, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | ||||||
|  | 
 | ||||||
|  | 	require.Errorf(t, err, "Expected error to be returned when executing command with invalid environment variables") | ||||||
|  | 	require.Emptyf(t, output, "Expected empty string to be returned when executing command with invalid environment variables") | ||||||
|  | 
 | ||||||
| 	// test that the command is executed with no environment variables
 | 	// test that the command is executed with no environment variables
 | ||||||
| 	output, err = ctx.ExecEnvs(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | 	output, err = ctx.EnvExec(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | ||||||
| 	require.Nilf(t, err, "Expected no error to be returned when executing command with no environment variables") | 	require.Nilf(t, err, "Expected no error to be returned when executing command with no environment variables") | ||||||
| 
 | 
 | ||||||
| 	require.Emptyf(t, output, "Expected empty string to be returned when executing command with no environment variables") | 	require.Emptyf(t, output, "Expected empty string to be returned when executing command with no environment variables") | ||||||
|  | @ -293,7 +299,7 @@ func TestExecEnvs(t *testing.T) { | ||||||
| 	// test that the command is executed with os environment variables
 | 	// test that the command is executed with os environment variables
 | ||||||
| 	os.Setenv(testKey, "foo") | 	os.Setenv(testKey, "foo") | ||||||
| 	defer os.Unsetenv(testKey) | 	defer os.Unsetenv(testKey) | ||||||
| 	output, err = ctx.ExecEnvs(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | 	output, err = ctx.EnvExec(nil, "bash", []interface{}{"-c", fmt.Sprintf("echo -n $%s", testKey)}, "") | ||||||
| 
 | 
 | ||||||
| 	require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables") | 	require.Nilf(t, err, "Expected no error to be returned when executing command with environment variables") | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue