generator: fixed issue with templates not being generated

This commit is contained in:
David Allen 2025-01-07 12:16:08 -07:00
parent 4f836630b0
commit 88d365155f
Signed by: towk
GPG key ID: 793B2924A49B3A3F
3 changed files with 19 additions and 5 deletions

View file

@ -163,7 +163,7 @@ func LoadPlugins(dirpath string, opts ...Option) (map[string]Generator, error) {
// be used. This function will only load the plugin on-demand and fetch resources as needed. // be used. This function will only load the plugin on-demand and fetch resources as needed.
// //
// This function requires that a target and plugin path be set at minimum. // This function requires that a target and plugin path be set at minimum.
func Generate(plugin string, params Params) (FileMap, error) { func Generate(config *config.Config, plugin string, params Params) (FileMap, error) {
var ( var (
gen Generator gen Generator
ok bool ok bool
@ -182,7 +182,7 @@ func Generate(plugin string, params Params) (FileMap, error) {
} }
} }
return gen.Generate(nil, params) return gen.Generate(config, params)
} }
// Main function to generate a collection of files as a map with the path as the key and // Main function to generate a collection of files as a map with the path as the key and
@ -232,6 +232,11 @@ func GenerateWithTarget(config *config.Config, target string) (FileMap, error) {
} }
} }
// check if there's at least one template available
if len(targetInfo.TemplatePaths) <= 0 {
return nil, fmt.Errorf("expects at least one template to be available")
}
// prepare params to pass into generator // prepare params to pass into generator
params.Templates = map[string]Template{} params.Templates = map[string]Template{}
for _, templatePath := range targetInfo.TemplatePaths { for _, templatePath := range targetInfo.TemplatePaths {

View file

@ -8,6 +8,7 @@ import (
"github.com/OpenCHAMI/configurator/pkg/util" "github.com/OpenCHAMI/configurator/pkg/util"
"github.com/nikolalohinski/gonja/v2" "github.com/nikolalohinski/gonja/v2"
"github.com/nikolalohinski/gonja/v2/exec" "github.com/nikolalohinski/gonja/v2/exec"
"github.com/rs/zerolog/log"
) )
type Template struct { type Template struct {
@ -65,6 +66,8 @@ func ApplyTemplates(mappings Mappings, templates map[string]Template) (FileMap,
outputs[path] = b.Bytes() outputs[path] = b.Bytes()
} }
log.Debug().Any("templates", templates).Any("outputs", outputs).Any("mappings", mappings).Msg("apply templates")
return outputs, nil return outputs, nil
} }

View file

@ -93,6 +93,7 @@ func (s *Server) Serve() error {
// create client with opts to use to fetch data from SMD // create client with opts to use to fetch data from SMD
opts := []client.Option{ opts := []client.Option{
client.WithHost(s.Config.SmdClient.Host),
client.WithAccessToken(s.Config.AccessToken), client.WithAccessToken(s.Config.AccessToken),
client.WithCertPoolFile(s.Config.CertPath), client.WithCertPoolFile(s.Config.CertPath),
} }
@ -146,7 +147,7 @@ func (s *Server) Generate(opts ...client.Option) func(w http.ResponseWriter, r *
outputs generator.FileMap outputs generator.FileMap
err error err error
) )
s.GeneratorParams = parseGeneratorParams(r, opts...) s.GeneratorParams = parseGeneratorParams(r, target, opts...)
if targetParam == "" { if targetParam == "" {
err = writeErrorResponse(w, "must specify a target") err = writeErrorResponse(w, "must specify a target")
log.Error().Err(err).Msg("failed to parse generator params") log.Error().Err(err).Msg("failed to parse generator params")
@ -156,7 +157,8 @@ func (s *Server) Generate(opts ...client.Option) func(w http.ResponseWriter, r *
// try to generate with target supplied by client first // try to generate with target supplied by client first
if target != nil { if target != nil {
log.Debug().Any("target", target).Msg("target for Generate()") log.Debug().Any("target", target).Msg("target for Generate()")
outputs, err = generator.Generate(target.PluginPath, s.GeneratorParams) outputs, err = generator.Generate(s.Config, target.PluginPath, s.GeneratorParams)
log.Debug().Any("outputs map", outputs).Msgf("after generate")
if err != nil { if err != nil {
log.Error().Err(err).Msg("failed to generate file") log.Error().Err(err).Msg("failed to generate file")
return return
@ -299,9 +301,13 @@ func writeErrorResponse(w http.ResponseWriter, format string, a ...any) error {
return fmt.Errorf(errmsg) return fmt.Errorf(errmsg)
} }
func parseGeneratorParams(r *http.Request, opts ...client.Option) generator.Params { func parseGeneratorParams(r *http.Request, target *Target, opts ...client.Option) generator.Params {
var params = generator.Params{ var params = generator.Params{
ClientOpts: opts, ClientOpts: opts,
Templates: make(map[string]generator.Template, len(target.Templates)),
}
for i, template := range target.Templates {
params.Templates[fmt.Sprintf("%s_%d", target.Name, i)] = template
} }
return params return params
} }