mirror of https://github.com/databricks/cli.git
Initialise a empty default bundle if BUNDLE_ROOT and DATABRICKS_BUNDLE_INCLUDES env vars are present (#604)
## Changes <!-- Summary of your changes that are easy to understand --> ## Tests <!-- How is this tested? -->
This commit is contained in:
parent
31b178ad6c
commit
3140a8feef
|
@ -43,10 +43,27 @@ type Bundle struct {
|
|||
AutoApprove bool
|
||||
}
|
||||
|
||||
const ExtraIncludePathsKey string = "DATABRICKS_BUNDLE_INCLUDES"
|
||||
|
||||
func Load(path string) (*Bundle, error) {
|
||||
bundle := &Bundle{}
|
||||
stat, err := os.Stat(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
configFile, err := config.FileNames.FindInPath(path)
|
||||
if err != nil {
|
||||
_, hasIncludePathEnv := os.LookupEnv(ExtraIncludePathsKey)
|
||||
_, hasBundleRootEnv := os.LookupEnv(envBundleRoot)
|
||||
if hasIncludePathEnv && hasBundleRootEnv && stat.IsDir() {
|
||||
bundle.Config = config.Root{
|
||||
Path: path,
|
||||
Bundle: config.Bundle{
|
||||
Name: filepath.Base(path),
|
||||
},
|
||||
}
|
||||
return bundle, nil
|
||||
}
|
||||
return nil, err
|
||||
}
|
||||
err = bundle.Config.Load(configFile)
|
||||
|
|
|
@ -12,11 +12,9 @@ import (
|
|||
"golang.org/x/exp/slices"
|
||||
)
|
||||
|
||||
const ExtraIncludePathsKey string = "DATABRICKS_BUNDLE_INCLUDES"
|
||||
|
||||
// Get extra include paths from environment variable
|
||||
func GetExtraIncludePaths() []string {
|
||||
value, exists := os.LookupEnv(ExtraIncludePathsKey)
|
||||
value, exists := os.LookupEnv(bundle.ExtraIncludePathsKey)
|
||||
if !exists {
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -129,9 +129,9 @@ func TestProcessRootIncludesExtrasFromEnvVar(t *testing.T) {
|
|||
rootPath := t.TempDir()
|
||||
testYamlName := "extra_include_path.yml"
|
||||
touch(t, rootPath, testYamlName)
|
||||
os.Setenv(mutator.ExtraIncludePathsKey, path.Join(rootPath, testYamlName))
|
||||
os.Setenv(bundle.ExtraIncludePathsKey, path.Join(rootPath, testYamlName))
|
||||
t.Cleanup(func() {
|
||||
os.Unsetenv(mutator.ExtraIncludePathsKey)
|
||||
os.Unsetenv(bundle.ExtraIncludePathsKey)
|
||||
})
|
||||
|
||||
bundle := &bundle.Bundle{
|
||||
|
@ -149,7 +149,7 @@ func TestProcessRootIncludesDedupExtrasFromEnvVar(t *testing.T) {
|
|||
rootPath := t.TempDir()
|
||||
testYamlName := "extra_include_path.yml"
|
||||
touch(t, rootPath, testYamlName)
|
||||
t.Setenv(mutator.ExtraIncludePathsKey, fmt.Sprintf("%s%s%s", path.Join(rootPath, testYamlName), string(os.PathListSeparator), path.Join(rootPath, testYamlName)))
|
||||
t.Setenv(bundle.ExtraIncludePathsKey, fmt.Sprintf("%s%s%s", path.Join(rootPath, testYamlName), string(os.PathListSeparator), path.Join(rootPath, testYamlName)))
|
||||
|
||||
bundle := &bundle.Bundle{
|
||||
Config: config.Root{
|
||||
|
|
|
@ -6,6 +6,7 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/databricks/cli/bundle/config"
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -102,3 +103,45 @@ func TestRootLookupError(t *testing.T) {
|
|||
_, err := mustGetRoot()
|
||||
require.ErrorContains(t, err, "unable to locate bundle root")
|
||||
}
|
||||
|
||||
func TestLoadYamlWhenIncludesEnvPresent(t *testing.T) {
|
||||
chdir(t, filepath.Join(".", "tests", "basic"))
|
||||
t.Setenv(ExtraIncludePathsKey, "test")
|
||||
|
||||
bundle, err := MustLoad()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, "basic", bundle.Config.Bundle.Name)
|
||||
|
||||
cwd, err := os.Getwd()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, cwd, bundle.Config.Path)
|
||||
}
|
||||
|
||||
func TestLoadDefautlBundleWhenNoYamlAndRootAndIncludesEnvPresent(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
chdir(t, dir)
|
||||
t.Setenv(envBundleRoot, dir)
|
||||
t.Setenv(ExtraIncludePathsKey, "test")
|
||||
|
||||
bundle, err := MustLoad()
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, dir, bundle.Config.Path)
|
||||
}
|
||||
|
||||
func TestErrorIfNoYamlNoRootEnvAndIncludesEnvPresent(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
chdir(t, dir)
|
||||
t.Setenv(ExtraIncludePathsKey, "test")
|
||||
|
||||
_, err := MustLoad()
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
||||
func TestErrorIfNoYamlNoIncludesEnvAndRootEnvPresent(t *testing.T) {
|
||||
dir := t.TempDir()
|
||||
chdir(t, dir)
|
||||
t.Setenv(envBundleRoot, dir)
|
||||
|
||||
_, err := MustLoad()
|
||||
assert.Error(t, err)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue