diff --git a/libs/template/config.go b/libs/template/config.go index 8ebc4d843..8e7695b91 100644 --- a/libs/template/config.go +++ b/libs/template/config.go @@ -29,8 +29,8 @@ type config struct { schema *jsonschema.Schema } -func newConfig(ctx context.Context, templateRoot fs.FS, schemaPath string) (*config, error) { - schema, err := jsonschema.LoadFS(templateRoot, schemaPath) +func newConfig(ctx context.Context, templateFS fs.FS, schemaPath string) (*config, error) { + schema, err := jsonschema.LoadFS(templateFS, schemaPath) if err != nil { return nil, err } diff --git a/libs/template/materialize.go b/libs/template/materialize.go index c24519efd..15b1b3c3c 100644 --- a/libs/template/materialize.go +++ b/libs/template/materialize.go @@ -21,12 +21,12 @@ const schemaFileName = "databricks_template_schema.json" // configFilePath: file path containing user defined config values // templateRoot: root of the template definition // outputDir: root of directory where to initialize the template -func Materialize(ctx context.Context, configFilePath string, templateRoot fs.FS, outputDir string) error { - if _, err := fs.Stat(templateRoot, schemaFileName); errors.Is(err, fs.ErrNotExist) { +func Materialize(ctx context.Context, configFilePath string, templateFS fs.FS, outputDir string) error { + if _, err := fs.Stat(templateFS, schemaFileName); errors.Is(err, fs.ErrNotExist) { return fmt.Errorf("not a bundle template: expected to find a template schema file at %s", schemaFileName) } - config, err := newConfig(ctx, templateRoot, schemaFileName) + config, err := newConfig(ctx, templateFS, schemaFileName) if err != nil { return err } @@ -40,7 +40,7 @@ func Materialize(ctx context.Context, configFilePath string, templateRoot fs.FS, } helpers := loadHelpers(ctx) - r, err := newRenderer(ctx, config.values, helpers, templateRoot, templateDirName, libraryDirName, outputDir) + r, err := newRenderer(ctx, config.values, helpers, templateFS, templateDirName, libraryDirName, outputDir) if err != nil { return err } diff --git a/libs/template/renderer.go b/libs/template/renderer.go index b35f150af..bc8650399 100644 --- a/libs/template/renderer.go +++ b/libs/template/renderer.go @@ -50,9 +50,8 @@ type renderer struct { // do not match any glob patterns from this list skipPatterns []string - // [fs.FS] for the template root. The file tree from this root is walked to - // generate the project - templateRoot fs.FS + // [fs.FS] that holds the template's file tree. + srcFS fs.FS // Root directory for the project instantiated from the template instanceRoot string @@ -86,7 +85,7 @@ func newRenderer( } } - fsys, err := fs.Sub(templateFS, path.Clean(templateDir)) + srcFS, err := fs.Sub(templateFS, path.Clean(templateDir)) if err != nil { return nil, err } @@ -99,7 +98,7 @@ func newRenderer( baseTemplate: tmpl, files: make([]file, 0), skipPatterns: make([]string, 0), - templateRoot: fsys, + srcFS: srcFS, instanceRoot: instanceRoot, }, nil } @@ -150,7 +149,7 @@ func (r *renderer) executeTemplate(templateDefinition string) (string, error) { func (r *renderer) computeFile(relPathTemplate string) (file, error) { // read file permissions - info, err := fs.Stat(r.templateRoot, relPathTemplate) + info, err := fs.Stat(r.srcFS, relPathTemplate) if err != nil { return nil, err } @@ -172,7 +171,7 @@ func (r *renderer) computeFile(relPathTemplate string) (file, error) { }, perm: perm, ctx: r.ctx, - srcFS: r.templateRoot, + srcFS: r.srcFS, srcPath: relPathTemplate, }, nil } else { @@ -182,7 +181,7 @@ func (r *renderer) computeFile(relPathTemplate string) (file, error) { } // read template file's content - templateReader, err := r.templateRoot.Open(relPathTemplate) + templateReader, err := r.srcFS.Open(relPathTemplate) if err != nil { return nil, err } @@ -272,7 +271,7 @@ func (r *renderer) walk() error { // // 2. For directories: They are appended to a slice, which acts as a queue // allowing BFS traversal of the template file tree - entries, err := fs.ReadDir(r.templateRoot, currentDirectory) + entries, err := fs.ReadDir(r.srcFS, currentDirectory) if err != nil { return err }