diff --git a/pkg/scaffold/internal/deployment-single-stack/stack/ci-test/settings.yaml b/pkg/scaffold/internal/deployment-single-stack/dev/ci-test/settings.yaml similarity index 100% rename from pkg/scaffold/internal/deployment-single-stack/stack/ci-test/settings.yaml rename to pkg/scaffold/internal/deployment-single-stack/dev/ci-test/settings.yaml diff --git a/pkg/scaffold/internal/deployment-single-stack/stack/kcl.yaml b/pkg/scaffold/internal/deployment-single-stack/dev/kcl.yaml similarity index 100% rename from pkg/scaffold/internal/deployment-single-stack/stack/kcl.yaml rename to pkg/scaffold/internal/deployment-single-stack/dev/kcl.yaml diff --git a/pkg/scaffold/internal/deployment-single-stack/stack/main.k b/pkg/scaffold/internal/deployment-single-stack/dev/main.k similarity index 100% rename from pkg/scaffold/internal/deployment-single-stack/stack/main.k rename to pkg/scaffold/internal/deployment-single-stack/dev/main.k diff --git a/pkg/scaffold/internal/deployment-single-stack/stack/stack.yaml b/pkg/scaffold/internal/deployment-single-stack/dev/stack.yaml similarity index 100% rename from pkg/scaffold/internal/deployment-single-stack/stack/stack.yaml rename to pkg/scaffold/internal/deployment-single-stack/dev/stack.yaml diff --git a/pkg/scaffold/internal_templates_test.go b/pkg/scaffold/internal_templates_test.go index 57b5f745b..b9be667e7 100644 --- a/pkg/scaffold/internal_templates_test.go +++ b/pkg/scaffold/internal_templates_test.go @@ -85,14 +85,14 @@ func Test_readIntoFS(t *testing.T) { "internal/deployment-single-stack/README.md", "internal/deployment-single-stack/base", "internal/deployment-single-stack/base/base.k", + "internal/deployment-single-stack/dev", + "internal/deployment-single-stack/dev/ci-test", + "internal/deployment-single-stack/dev/ci-test/settings.yaml", + "internal/deployment-single-stack/dev/kcl.yaml", + "internal/deployment-single-stack/dev/main.k", + "internal/deployment-single-stack/dev/stack.yaml", "internal/deployment-single-stack/kusion.yaml", "internal/deployment-single-stack/project.yaml", - "internal/deployment-single-stack/stack", - "internal/deployment-single-stack/stack/ci-test", - "internal/deployment-single-stack/stack/ci-test/settings.yaml", - "internal/deployment-single-stack/stack/kcl.yaml", - "internal/deployment-single-stack/stack/main.k", - "internal/deployment-single-stack/stack/stack.yaml", } assert.Equal(t, want, got) } diff --git a/pkg/scaffold/templates.go b/pkg/scaffold/templates.go index 7399f2182..315c56599 100644 --- a/pkg/scaffold/templates.go +++ b/pkg/scaffold/templates.go @@ -459,19 +459,19 @@ func RenderFSTemplate(srcFS afero.Fs, srcDir string, destFS afero.Fs, destDir st for k, v := range tc.ProjectConfig { configs[k] = v } - // Walk each stack - for stackName, stackConfigs := range tc.StacksConfig { - // Use stack name as sub dir - dest = filepath.Join(destDir, stackName) - // Merge and override project config - for k, v := range stackConfigs { - configs[k] = v - } - // Walk stack dir with merged configs - err = walkFiles(srcFS, src, destFS, dest, configs) - if err != nil { - return err - } + // Skip if stackConfigs are not provided + stackConfigs, exits := tc.StacksConfig[fileInfo.Name()] + if !exits { + continue + } + // Merge and override project config + for k, v := range stackConfigs { + configs[k] = v + } + // Walk stack dir with merged configs + err = walkFiles(srcFS, src, destFS, dest, configs) + if err != nil { + return err } } else { // Stack dir nested in 3rd level or even deeper, eg: meta_app/deployed_unit/stack_dir