Move OutputFileBase flag to each tool
This commit is contained in:
		| @@ -177,7 +177,7 @@ function codegen::deepcopy() { | ||||
|     "${gen_deepcopy_bin}" \ | ||||
|         -v "${KUBE_VERBOSE}" \ | ||||
|         --go-header-file "${BOILERPLATE_FILENAME}" \ | ||||
|         --output-file-base "${output_file}" \ | ||||
|         --output-file "${output_file}" \ | ||||
|         --bounding-dirs "k8s.io/kubernetes,k8s.io/api" \ | ||||
|         $(printf -- " -i %s" "${tag_pkgs[@]}") \ | ||||
|         "$@" | ||||
| @@ -309,7 +309,7 @@ function codegen::prerelease() { | ||||
|     "${gen_prerelease_bin}" \ | ||||
|         -v "${KUBE_VERBOSE}" \ | ||||
|         --go-header-file "${BOILERPLATE_FILENAME}" \ | ||||
|         --output-file-base "${output_file}" \ | ||||
|         --output-file "${output_file}" \ | ||||
|         $(printf -- " -i %s" "${tag_pkgs[@]}") \ | ||||
|         "$@" | ||||
|  | ||||
| @@ -377,7 +377,7 @@ function codegen::defaults() { | ||||
|     "${gen_defaulter_bin}" \ | ||||
|         -v "${KUBE_VERBOSE}" \ | ||||
|         --go-header-file "${BOILERPLATE_FILENAME}" \ | ||||
|         --output-file-base "${output_file}" \ | ||||
|         --output-file "${output_file}" \ | ||||
|         $(printf -- " -i %s" "${tag_pkgs[@]}") \ | ||||
|         "$@" | ||||
|  | ||||
| @@ -456,7 +456,7 @@ function codegen::conversions() { | ||||
|     "${gen_conversion_bin}" \ | ||||
|         -v "${KUBE_VERBOSE}" \ | ||||
|         --go-header-file "${BOILERPLATE_FILENAME}" \ | ||||
|         --output-file-base "${output_file}" \ | ||||
|         --output-file "${output_file}" \ | ||||
|         $(printf -- " --extra-peer-dirs %s" "${extra_peer_pkgs[@]}") \ | ||||
|         $(printf -- " -i %s" "${tag_pkgs[@]}") \ | ||||
|         "$@" | ||||
| @@ -551,7 +551,7 @@ function codegen::openapi() { | ||||
|     "${gen_openapi_bin}" \ | ||||
|         -v "${KUBE_VERBOSE}" \ | ||||
|         --go-header-file "${BOILERPLATE_FILENAME}" \ | ||||
|         --output-file-base "${output_file}" \ | ||||
|         --output-file "${output_file}" \ | ||||
|         --output-dir "${output_dir}" \ | ||||
|         --output-pkg "${output_pkg}" \ | ||||
|         --report-filename "${report_file}" \ | ||||
|   | ||||
| @@ -33,6 +33,9 @@ var DefaultBasePeerDirs = []string{ | ||||
|  | ||||
| // CustomArgs is used by the gengo framework to pass args specific to this generator. | ||||
| type CustomArgs struct { | ||||
| 	// The filename of the generated results. | ||||
| 	OutputFile string | ||||
|  | ||||
| 	// Base peer dirs which nearly everybody will use, i.e. outside of Kubernetes core. Peer dirs | ||||
| 	// are declared to make the generator pick up manually written conversion funcs from external | ||||
| 	// packages. | ||||
| @@ -62,12 +65,13 @@ func NewDefaults() (*args.GeneratorArgs, *CustomArgs) { | ||||
| 		SkipUnsafe:   false, | ||||
| 	} | ||||
| 	genericArgs.CustomArgs = customArgs | ||||
| 	genericArgs.OutputFileBaseName = "conversion_generated" | ||||
| 	return genericArgs, customArgs | ||||
| } | ||||
|  | ||||
| // AddFlags add the generator flags to the flag set. | ||||
| func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
| 	fs.StringVar(&ca.OutputFile, "output-file", "generated.conversion.go", | ||||
| 		"the name of the file to be generated") | ||||
| 	fs.StringSliceVar(&ca.BasePeerDirs, "base-peer-dirs", ca.BasePeerDirs, | ||||
| 		"Comma-separated list of apimachinery import paths which are considered, after tag-specified peers, for conversions. Only change these if you have very good reasons.") | ||||
| 	fs.StringSliceVar(&ca.ExtraPeerDirs, "extra-peer-dirs", ca.ExtraPeerDirs, | ||||
| @@ -80,10 +84,10 @@ func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
|  | ||||
| // Validate checks the given arguments. | ||||
| func Validate(genericArgs *args.GeneratorArgs) error { | ||||
| 	_ = genericArgs.CustomArgs.(*CustomArgs) | ||||
| 	custom := genericArgs.CustomArgs.(*CustomArgs) | ||||
|  | ||||
| 	if len(genericArgs.OutputFileBaseName) == 0 { | ||||
| 		return fmt.Errorf("output file base name cannot be empty") | ||||
| 	if len(custom.OutputFile) == 0 { | ||||
| 		return fmt.Errorf("--output-file must be specified") | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -336,7 +336,7 @@ func GetTargets(context *generator.Context, arguments *args.GeneratorArgs) []gen | ||||
| 				}, | ||||
| 				GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) { | ||||
| 					return []generator.Generator{ | ||||
| 						NewGenConversion(arguments.OutputFileBaseName, typesPkg.Path, pkg.Path, manualConversions, pkgToPeers[pkg.Path], unsafeEquality), | ||||
| 						NewGenConversion(customArgs.OutputFile, typesPkg.Path, pkg.Path, manualConversions, pkgToPeers[pkg.Path], unsafeEquality), | ||||
| 					} | ||||
| 				}, | ||||
| 			}) | ||||
|   | ||||
| @@ -32,22 +32,23 @@ func NewDefaults() (*args.GeneratorArgs, *CustomArgs) { | ||||
| 	genericArgs := args.Default().WithoutDefaultFlagParsing() | ||||
| 	customArgs := &CustomArgs{} | ||||
| 	genericArgs.CustomArgs = (*generators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there | ||||
| 	genericArgs.OutputFileBaseName = "deepcopy_generated" | ||||
| 	return genericArgs, customArgs | ||||
| } | ||||
|  | ||||
| // AddFlags add the generator flags to the flag set. | ||||
| func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
| 	fs.StringVar(&ca.OutputFile, "output-file", "generated.deepcopy.go", | ||||
| 		"the name of the file to be generated") | ||||
| 	fs.StringSliceVar(&ca.BoundingDirs, "bounding-dirs", ca.BoundingDirs, | ||||
| 		"Comma-separated list of import paths which bound the types for which deep-copies will be generated.") | ||||
| } | ||||
|  | ||||
| // Validate checks the given arguments. | ||||
| func Validate(genericArgs *args.GeneratorArgs) error { | ||||
| 	_ = genericArgs.CustomArgs.(*generators.CustomArgs) | ||||
| 	custom := genericArgs.CustomArgs.(*generators.CustomArgs) | ||||
|  | ||||
| 	if len(genericArgs.OutputFileBaseName) == 0 { | ||||
| 		return fmt.Errorf("output file base name cannot be empty") | ||||
| 	if len(custom.OutputFile) == 0 { | ||||
| 		return fmt.Errorf("--output-file must be specified") | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -32,22 +32,23 @@ func NewDefaults() (*args.GeneratorArgs, *CustomArgs) { | ||||
| 	genericArgs := args.Default().WithoutDefaultFlagParsing() | ||||
| 	customArgs := &CustomArgs{} | ||||
| 	genericArgs.CustomArgs = (*generators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there | ||||
| 	genericArgs.OutputFileBaseName = "zz_generated.defaults" | ||||
| 	return genericArgs, customArgs | ||||
| } | ||||
|  | ||||
| // AddFlags add the generator flags to the flag set. | ||||
| func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
| 	fs.StringVar(&ca.OutputFile, "output-file", "generated.defaults.go", | ||||
| 		"the name of the file to be generated") | ||||
| 	fs.StringSliceVar(&ca.ExtraPeerDirs, "extra-peer-dirs", ca.ExtraPeerDirs, | ||||
| 		"Comma-separated list of import paths which are considered, after tag-specified peers, for conversions.") | ||||
| } | ||||
|  | ||||
| // Validate checks the given arguments. | ||||
| func Validate(genericArgs *args.GeneratorArgs) error { | ||||
| 	_ = genericArgs.CustomArgs.(*generators.CustomArgs) | ||||
| 	custom := genericArgs.CustomArgs.(*generators.CustomArgs) | ||||
|  | ||||
| 	if len(genericArgs.OutputFileBaseName) == 0 { | ||||
| 		return fmt.Errorf("output file base name cannot be empty") | ||||
| 	if len(custom.OutputFile) == 0 { | ||||
| 		return fmt.Errorf("--output-file must be specified") | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -32,20 +32,21 @@ func NewDefaults() (*args.GeneratorArgs, *CustomArgs) { | ||||
| 	genericArgs := args.Default().WithoutDefaultFlagParsing() | ||||
| 	customArgs := &CustomArgs{} | ||||
| 	genericArgs.CustomArgs = (*statusgenerators.CustomArgs)(customArgs) // convert to upstream type to make type-casts work there | ||||
| 	genericArgs.OutputFileBaseName = "zz_prerelease_lifecycle_generated" | ||||
| 	return genericArgs, customArgs | ||||
| } | ||||
|  | ||||
| // AddFlags add the generator flags to the flag set. | ||||
| func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
| 	fs.StringVar(&ca.OutputFile, "output-file", "generated.prerelease_lifecycle.go", | ||||
| 		"the name of the file to be generated") | ||||
| } | ||||
|  | ||||
| // Validate checks the given arguments. | ||||
| func Validate(genericArgs *args.GeneratorArgs) error { | ||||
| 	_ = genericArgs.CustomArgs.(*statusgenerators.CustomArgs) | ||||
| 	custom := genericArgs.CustomArgs.(*statusgenerators.CustomArgs) | ||||
|  | ||||
| 	if len(genericArgs.OutputFileBaseName) == 0 { | ||||
| 		return fmt.Errorf("output file base name cannot be empty") | ||||
| 	if len(custom.OutputFile) == 0 { | ||||
| 		return fmt.Errorf("--output-file must be specified") | ||||
| 	} | ||||
|  | ||||
| 	return nil | ||||
|   | ||||
| @@ -33,6 +33,7 @@ import ( | ||||
|  | ||||
| // CustomArgs is used tby the go2idl framework to pass args specific to this generator. | ||||
| type CustomArgs struct { | ||||
| 	OutputFile string | ||||
| } | ||||
|  | ||||
| // This is the comment tag that carries parameters for API status generation.  Because the cadence is fixed, we can predict | ||||
| @@ -229,6 +230,8 @@ func GetTargets(context *generator.Context, arguments *args.GeneratorArgs) []gen | ||||
| 			} | ||||
| 		} | ||||
|  | ||||
| 		customArgs := arguments.CustomArgs.(*CustomArgs) | ||||
|  | ||||
| 		if pkgNeedsGeneration { | ||||
| 			targets = append(targets, | ||||
| 				&generator.SimpleTarget{ | ||||
| @@ -241,7 +244,7 @@ func GetTargets(context *generator.Context, arguments *args.GeneratorArgs) []gen | ||||
| 					}, | ||||
| 					GeneratorsFunc: func(c *generator.Context) (generators []generator.Generator) { | ||||
| 						return []generator.Generator{ | ||||
| 							NewPrereleaseLifecycleGen(arguments.OutputFileBaseName, pkg.Path), | ||||
| 							NewPrereleaseLifecycleGen(customArgs.OutputFile, pkg.Path), | ||||
| 						} | ||||
| 					}, | ||||
| 				}) | ||||
|   | ||||
| @@ -19,19 +19,31 @@ package args | ||||
| import ( | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/spf13/pflag" | ||||
| 	"k8s.io/gengo/v2/args" | ||||
| ) | ||||
|  | ||||
| type CustomArgs struct { | ||||
| 	OutputFile string | ||||
| } | ||||
|  | ||||
| // NewDefaults returns default arguments for the generator. | ||||
| func NewDefaults() *args.GeneratorArgs { | ||||
| 	genericArgs := args.Default().WithoutDefaultFlagParsing() | ||||
| 	genericArgs.OutputFileBaseName = "zz_generated.register" | ||||
| 	genericArgs.CustomArgs = &CustomArgs{} | ||||
| 	return genericArgs | ||||
| } | ||||
|  | ||||
| // AddFlags add the generator flags to the flag set. | ||||
| func (ca *CustomArgs) AddFlags(fs *pflag.FlagSet) { | ||||
| 	fs.StringVar(&ca.OutputFile, "output-file", "generated.register.go", | ||||
| 		"the name of the file to be generated") | ||||
| } | ||||
|  | ||||
| // Validate checks the given arguments. | ||||
| func Validate(genericArgs *args.GeneratorArgs) error { | ||||
| 	if len(genericArgs.OutputFileBaseName) == 0 { | ||||
| 	custom := genericArgs.CustomArgs.(*CustomArgs) | ||||
| 	if len(custom.OutputFile) == 0 { | ||||
| 		return fmt.Errorf("output file base name cannot be empty") | ||||
| 	} | ||||
|  | ||||
|   | ||||
| @@ -25,6 +25,7 @@ import ( | ||||
| 	"k8s.io/klog/v2" | ||||
|  | ||||
| 	clientgentypes "k8s.io/code-generator/cmd/client-gen/types" | ||||
| 	registerargs "k8s.io/code-generator/cmd/register-gen/args" | ||||
| 	"k8s.io/gengo/v2/args" | ||||
| 	"k8s.io/gengo/v2/generator" | ||||
| 	"k8s.io/gengo/v2/namer" | ||||
| @@ -49,22 +50,24 @@ func GetTargets(context *generator.Context, arguments *args.GeneratorArgs) []gen | ||||
| 		klog.Fatalf("Failed loading boilerplate: %v", err) | ||||
| 	} | ||||
|  | ||||
| 	customArgs := arguments.CustomArgs.(*registerargs.CustomArgs) | ||||
|  | ||||
| 	targets := []generator.Target{} | ||||
| 	for _, input := range context.Inputs { | ||||
| 		pkg := context.Universe.Package(input) | ||||
| 		internal, err := isInternal(pkg) | ||||
| 		if err != nil { | ||||
| 			klog.V(5).Infof("skipping the generation of %s file, due to err %v", arguments.OutputFileBaseName, err) | ||||
| 			klog.V(5).Infof("skipping the generation of %s file, due to err %v", customArgs.OutputFile, err) | ||||
| 			continue | ||||
| 		} | ||||
| 		if internal { | ||||
| 			klog.V(5).Infof("skipping the generation of %s file because %s package contains internal types, note that internal types don't have \"json\" tags", arguments.OutputFileBaseName, pkg.Name) | ||||
| 			klog.V(5).Infof("skipping the generation of %s file because %s package contains internal types, note that internal types don't have \"json\" tags", customArgs.OutputFile, pkg.Name) | ||||
| 			continue | ||||
| 		} | ||||
| 		registerFileName := "register.go" | ||||
| 		searchPath := path.Join(pkg.SourcePath, registerFileName) | ||||
| 		if _, err := os.Stat(path.Join(searchPath)); err == nil { | ||||
| 			klog.V(5).Infof("skipping the generation of %s file because %s already exists in the path %s", arguments.OutputFileBaseName, registerFileName, searchPath) | ||||
| 			klog.V(5).Infof("skipping the generation of %s file because %s already exists in the path %s", customArgs.OutputFile, registerFileName, searchPath) | ||||
| 			continue | ||||
| 		} else if err != nil && !os.IsNotExist(err) { | ||||
| 			klog.Fatalf("an error %v has occurred while checking if %s exists", err, registerFileName) | ||||
| @@ -109,7 +112,7 @@ func GetTargets(context *generator.Context, arguments *args.GeneratorArgs) []gen | ||||
| 					return []generator.Generator{ | ||||
| 						®isterExternalGenerator{ | ||||
| 							GoGenerator: generator.GoGenerator{ | ||||
| 								OutputFilename: arguments.OutputFileBaseName, | ||||
| 								OutputFilename: customArgs.OutputFile, | ||||
| 							}, | ||||
| 							gv:              gv, | ||||
| 							typesToGenerate: typesToRegister, | ||||
|   | ||||
| @@ -144,7 +144,7 @@ function kube::codegen::gen_helpers() { | ||||
|         done | ||||
|         "${gobin}/deepcopy-gen" \ | ||||
|             -v "${v}" \ | ||||
|             --output-file-base zz_generated.deepcopy.go \ | ||||
|             --output-file zz_generated.deepcopy.go \ | ||||
|             --go-header-file "${boilerplate}" \ | ||||
|             "${input_args[@]}" | ||||
|     fi | ||||
| @@ -180,7 +180,7 @@ function kube::codegen::gen_helpers() { | ||||
|         done | ||||
|         "${gobin}/defaulter-gen" \ | ||||
|             -v "${v}" \ | ||||
|             --output-file-base zz_generated.defaults.go \ | ||||
|             --output-file zz_generated.defaults.go \ | ||||
|             --go-header-file "${boilerplate}" \ | ||||
|             "${input_args[@]}" | ||||
|     fi | ||||
| @@ -220,7 +220,7 @@ function kube::codegen::gen_helpers() { | ||||
|         done | ||||
|         "${gobin}/conversion-gen" \ | ||||
|             -v "${v}" \ | ||||
|             --output-file-base zz_generated.conversion.go \ | ||||
|             --output-file zz_generated.conversion.go \ | ||||
|             --go-header-file "${boilerplate}" \ | ||||
|             "${extra_peer_args[@]:+"${extra_peer_args[@]}"}" \ | ||||
|             "${input_args[@]}" | ||||
| @@ -373,7 +373,7 @@ function kube::codegen::gen_openapi() { | ||||
|         done | ||||
|         "${gobin}/openapi-gen" \ | ||||
|             -v "${v}" \ | ||||
|             --output-file-base zz_generated.openapi.go \ | ||||
|             --output-file zz_generated.openapi.go \ | ||||
|             --go-header-file "${boilerplate}" \ | ||||
|             --output-dir "${out_dir}" \ | ||||
|             --output-pkg "${out_pkg}" \ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tim Hockin
					Tim Hockin