1
0
mirror of https://github.com/SAP/jenkins-library.git synced 2025-09-16 09:26:22 +02:00

main.go generator

This commit is contained in:
Googlom
2025-07-15 16:27:19 +03:00
parent da77666068
commit 2ba80a9b2e
2 changed files with 30 additions and 4 deletions

View File

@@ -17,6 +17,7 @@ import (
)
type stepInfo struct {
ModuleName string
CobraCmdFuncName string
CreateCmdVar string
ExportPrefix string
@@ -188,6 +189,21 @@ func bindEnvToFlag(stepCmd *cobra.Command) {
{{- end -}}
`
const mainGoTemplate = `
package main
import (
"{{ .ModuleName }}/cmd"
)
func main() {
err := cmd.{{.CobraCmdFuncName}}().Execute()
if err != nil {
return
}
}
`
// StepTestGoTemplate ...
const stepTestGoTemplate = `//go:build unit
// +build unit
@@ -362,7 +378,7 @@ func GetAllStepMetadata() map[string]config.StepData {
`
// ProcessMetaFiles generates step coding based on step configuration provided in yaml files
func ProcessMetaFiles(metadataFiles []string, targetDir string, stepHelperData StepHelperData) error {
func ProcessMetaFiles(metadataFiles []string, moduleName, targetDir string, stepHelperData StepHelperData) error {
allSteps := struct{ Steps []string }{}
for key := range metadataFiles {
@@ -401,12 +417,19 @@ func ProcessMetaFiles(metadataFiles []string, targetDir string, stepHelperData S
checkError(err)
myStepInfo, err := getStepInfo(&stepData, osImport, stepHelperData.ExportPrefix)
myStepInfo.ModuleName = moduleName
checkError(err)
step := stepTemplate(myStepInfo, "step", stepGoTemplate)
err = stepHelperData.WriteFile(filepath.Join(targetDir, fmt.Sprintf("%v_generated.go", stepName)), step, 0644)
checkError(err)
if myStepInfo.ModuleName != "" {
mainGo := generateCode(myStepInfo, "main", mainGoTemplate, nil)
err = stepHelperData.WriteFile(filepath.Join(targetDir, fmt.Sprintf("%v_generated.go", stepName)), mainGo, 0644)
checkError(err)
}
// do not generate these tests for POC
//test := stepTemplate(myStepInfo, "stepTest", stepTestGoTemplate)
//err = stepHelperData.WriteFile(filepath.Join(targetDir, fmt.Sprintf("%v_generated_test.go", stepName)), test, 0644)

View File

@@ -12,18 +12,21 @@ import (
)
func main() {
var metadataFile, metadataPath, targetDir string
var metadataFile, moduleName, metadataPath, targetDir string
flag.StringVar(&metadataFile, "metadataFile", "", "Single metadata file used to generate code for a step.")
flag.StringVar(&moduleName, "moduleName", "", "Name of the module created with go mod init.")
flag.StringVar(&metadataPath, "metadataDir", "./resources/metadata", "The directory containing the step metadata. Default points to \\'resources/metadata\\'.")
flag.StringVar(&targetDir, "targetDir", "./cmd", "The target directory for the generated commands.")
flag.Parse()
fmt.Printf("metadataFile: %v\nmetadataDir: %v\ntargetDir: %v\n", metadataFile, metadataPath, targetDir)
fmt.Printf("metadataFile: %v\nmoduleName: %v\nmetadataDir: %v\ntargetDir: %v\n", metadataFile, moduleName, metadataPath, targetDir)
var metadataFiles []string
var err error
if metadataFile != "" {
fmt.Printf("Using single metadata file: %v\n", metadataFile)
metadataFiles = []string{metadataFile}
fmt.Println("Setting target directory to './cmd' as only one step is being generated.")
targetDir = "./cmd"
} else {
fmt.Printf("Using metadata directory: %v\n", metadataPath)
metadataFiles, err = helper.MetadataFiles(metadataPath)
@@ -33,7 +36,7 @@ func main() {
}
}
err = helper.ProcessMetaFiles(metadataFiles, targetDir, helper.StepHelperData{
err = helper.ProcessMetaFiles(metadataFiles, moduleName, targetDir, helper.StepHelperData{
OpenFile: openMetaFile,
WriteFile: os.WriteFile,
ExportPrefix: "",