generator: fixed issue with templates not being generated
This commit is contained in:
parent
4f836630b0
commit
88d365155f
3 changed files with 19 additions and 5 deletions
|
|
@ -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 {
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue