This commit is contained in:
Pieter Noordhuis 2024-11-18 20:43:12 +01:00
parent e2174f5870
commit c4d565a98a
No known key found for this signature in database
GPG Key ID: 12ACCCC104CF2930
3 changed files with 14 additions and 15 deletions

View File

@ -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
}

View File

@ -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
}

View File

@ -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
}