2019-05-16 22:23:05 +00:00
/ *
Copyright 2017 The Kubernetes Authors .
Licensed under the Apache License , Version 2.0 ( the "License" ) ;
you may not use this file except in compliance with the License .
You may obtain a copy of the License at
http : //www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing , software
distributed under the License is distributed on an "AS IS" BASIS ,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
See the License for the specific language governing permissions and
limitations under the License .
* /
package args
import (
"fmt"
"path"
"github.com/spf13/pflag"
codegenutil "k8s.io/code-generator/pkg/util"
"k8s.io/gengo/args"
)
// CustomArgs is used by the gengo framework to pass args specific to this generator.
2021-05-15 10:08:31 +00:00
type CustomArgs struct {
// PluralExceptions specify list of exceptions used when pluralizing certain types.
// For example 'Endpoints:Endpoints', otherwise the pluralizer will generate 'Endpointes'.
PluralExceptions [ ] string
}
2019-05-16 22:23:05 +00:00
// NewDefaults returns default arguments for the generator.
func NewDefaults ( ) ( * args . GeneratorArgs , * CustomArgs ) {
genericArgs := args . Default ( ) . WithoutDefaultFlagParsing ( )
2021-05-15 10:08:31 +00:00
customArgs := & CustomArgs {
PluralExceptions : [ ] string { "Endpoints:Endpoints" } ,
}
2019-05-16 22:23:05 +00:00
genericArgs . CustomArgs = customArgs
if pkg := codegenutil . CurrentPackage ( ) ; len ( pkg ) != 0 {
genericArgs . OutputPackagePath = path . Join ( pkg , "pkg/client/listers" )
}
return genericArgs , customArgs
}
// AddFlags add the generator flags to the flag set.
2021-05-15 10:08:31 +00:00
func ( ca * CustomArgs ) AddFlags ( fs * pflag . FlagSet ) {
fs . StringSliceVar ( & ca . PluralExceptions , "plural-exceptions" , ca . PluralExceptions , "list of comma separated plural exception definitions in Type:PluralizedType format" )
}
2019-05-16 22:23:05 +00:00
// Validate checks the given arguments.
func Validate ( genericArgs * args . GeneratorArgs ) error {
_ = genericArgs . CustomArgs . ( * CustomArgs )
if len ( genericArgs . OutputPackagePath ) == 0 {
return fmt . Errorf ( "output package cannot be empty" )
}
return nil
}