in tooling/templatize/pkg/pipeline/bicep.go [55:96]
func transformParameters(ctx context.Context, cfg config.Configuration, inputs map[string]any, bicepParameterTemplateFile string) (map[string]interface{}, map[string]interface{}, error) {
bicepParamContent, err := config.PreprocessFile(bicepParameterTemplateFile, cfg)
if err != nil {
return nil, nil, fmt.Errorf("failed to preprocess file: %w", err)
}
bicepParamBaseDir := filepath.Dir(bicepParameterTemplateFile)
bicepParamFile, err := os.CreateTemp(bicepParamBaseDir, "bicep-params-*.bicepparam")
if err != nil {
return nil, nil, fmt.Errorf("failed to create temp file: %w", err)
}
defer os.Remove(bicepParamFile.Name())
_, err = bicepParamFile.Write(bicepParamContent)
if err != nil {
return nil, nil, fmt.Errorf("failed to write to target file: %w", err)
}
cmd := exec.CommandContext(ctx, "az", "bicep", "build-params", "-f", bicepParamFile.Name(), "--stdout")
output, err := cmd.Output()
if err != nil {
combinedOutput, _ := cmd.CombinedOutput()
return nil, nil, fmt.Errorf("failed to get output from command: %w\n%s", err, string(combinedOutput))
}
var result generationResult
if err := json.Unmarshal(output, &result); err != nil {
return nil, nil, fmt.Errorf("failed to unmarshal output: %w", err)
}
template, err := result.Template()
if err != nil {
return nil, nil, fmt.Errorf("failed to get template: %w", err)
}
params, err := result.Parameters()
if err != nil {
return nil, nil, fmt.Errorf("failed to get parameters: %w", err)
}
for k, v := range inputs {
params[k] = map[string]interface{}{
"value": v,
}
}
return template, params, nil
}