You've already forked sap-jenkins-library
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:
@@ -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)
|
||||
|
@@ -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: "",
|
||||
|
Reference in New Issue
Block a user