mirror of https://github.com/databricks/cli.git
Propagate TF_CLI_CONFIG_FILE env variable (#555)
## Changes Propagate `TF_CLI_CONFIG_FILE` env variable. From Terraform documentation: > The location of the Terraform CLI configuration file can also be specified using the TF_CLI_CONFIG_FILE [environment variable](https://developer.hashicorp.com/terraform/cli/config/environment-variables) It allows using custom builds of terraform-provider-databricks, using config files like: ```tf provider_installation { dev_overrides { "databricks/databricks" = "/Users/gleb.kanterov/terraform-provider-databricks" } direct {} } ``` ## Tests I added unit tests.
This commit is contained in:
parent
b14920cd12
commit
179154477e
|
@ -70,6 +70,23 @@ func (m *initialize) findExecPath(ctx context.Context, b *bundle.Bundle, tf *con
|
||||||
return tf.ExecPath, nil
|
return tf.ExecPath, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This function inherits some environment variables for Terraform CLI.
|
||||||
|
func inheritEnvVars(env map[string]string) error {
|
||||||
|
// Include $HOME in set of environment variables to pass along.
|
||||||
|
home, ok := os.LookupEnv("HOME")
|
||||||
|
if ok {
|
||||||
|
env["HOME"] = home
|
||||||
|
}
|
||||||
|
|
||||||
|
// Include $TF_CLI_CONFIG_FILE to override terraform provider in development.
|
||||||
|
configFile, ok := os.LookupEnv("TF_CLI_CONFIG_FILE")
|
||||||
|
if ok {
|
||||||
|
env["TF_CLI_CONFIG_FILE"] = configFile
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// This function sets temp dir location for terraform to use. If user does not
|
// This function sets temp dir location for terraform to use. If user does not
|
||||||
// specify anything here, we fall back to a `tmp` directory in the bundle's cache
|
// specify anything here, we fall back to a `tmp` directory in the bundle's cache
|
||||||
// directory
|
// directory
|
||||||
|
@ -145,10 +162,9 @@ func (m *initialize) Apply(ctx context.Context, b *bundle.Bundle) error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// Include $HOME in set of environment variables to pass along.
|
err = inheritEnvVars(env)
|
||||||
home, ok := os.LookupEnv("HOME")
|
if err != nil {
|
||||||
if ok {
|
return err
|
||||||
env["HOME"] = home
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Set the temporary directory environment variables
|
// Set the temporary directory environment variables
|
||||||
|
|
|
@ -272,3 +272,19 @@ func TestSetProxyEnvVars(t *testing.T) {
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
assert.ElementsMatch(t, []string{"HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY"}, maps.Keys(env))
|
assert.ElementsMatch(t, []string{"HTTP_PROXY", "HTTPS_PROXY", "NO_PROXY"}, maps.Keys(env))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestInheritEnvVars(t *testing.T) {
|
||||||
|
env := map[string]string{}
|
||||||
|
|
||||||
|
t.Setenv("HOME", "/home/testuser")
|
||||||
|
t.Setenv("TF_CLI_CONFIG_FILE", "/tmp/config.tfrc")
|
||||||
|
|
||||||
|
err := inheritEnvVars(env)
|
||||||
|
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Equal(t, map[string]string{
|
||||||
|
"HOME": "/home/testuser",
|
||||||
|
"TF_CLI_CONFIG_FILE": "/tmp/config.tfrc",
|
||||||
|
}, env)
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue