From 614b4d7a1bb04d4d68ee78cad6c1d55e20395cbf Mon Sep 17 00:00:00 2001 From: exfly Date: Wed, 23 Aug 2023 17:05:23 +0800 Subject: [PATCH 1/2] feat: ignore method --- cmd_generate.go | 11 +++++++++-- generator/generator.go | 6 ++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/cmd_generate.go b/cmd_generate.go index d809f5b..9d58bb1 100644 --- a/cmd_generate.go +++ b/cmd_generate.go @@ -29,6 +29,7 @@ type GenerateCommand struct { noGenerate bool vars vars localPrefix string + ignoreMethod string loader templateLoader filepath fs @@ -56,6 +57,7 @@ func NewGenerateCommand(l remoteTemplateLoader) *GenerateCommand { "run `gowrap template list` for details") fs.Var(&gc.vars, "v", "a key-value pair to parametrize the template,\narguments without an equal sign are treated as a bool values,\ni.e. -v foo=bar -v disableChecks") fs.StringVar(&gc.localPrefix, "l", "", "put imports beginning with this string after 3rd-party packages; comma-separated list") + fs.StringVar(&gc.ignoreMethod, "ignore_method", "", "ignore method") gc.BaseCommand = BaseCommand{ Short: "generate decorators", @@ -122,6 +124,10 @@ func (gc *GenerateCommand) checkFlags() error { } func (gc *GenerateCommand) getOptions() (*generator.Options, error) { + var ignoreMethod []string + if len(gc.ignoreMethod) > 0 { + ignoreMethod = strings.Split(gc.ignoreMethod, ",") + } options := generator.Options{ InterfaceName: gc.interfaceName, OutputFile: gc.outputFile, @@ -132,8 +138,9 @@ func (gc *GenerateCommand) getOptions() (*generator.Options, error) { "OutputFileName": filepath.Base(gc.outputFile), "VarsArgs": varsToArgs(gc.vars), }, - Vars: gc.vars.toMap(), - LocalPrefix: gc.localPrefix, + Vars: gc.vars.toMap(), + LocalPrefix: gc.localPrefix, + IgnoreMethod: ignoreMethod, } outputFileDir, err := gc.filepath.Abs(gc.filepath.Dir(gc.outputFile)) diff --git a/generator/generator.go b/generator/generator.go index afc0b6e..3d62414 100644 --- a/generator/generator.go +++ b/generator/generator.go @@ -128,6 +128,8 @@ type Options struct { //LocalPrefix is a comma-separated string of import path prefixes, which, if set, instructs Process to sort the import //paths with the given prefixes into another group after 3rd-party packages. LocalPrefix string + + IgnoreMethod []string } type methodsList map[string]Method @@ -221,6 +223,10 @@ func NewGenerator(options Options) (*Generator, error) { return nil, errors.Wrap(err, "failed to parse interface declaration") } + for _, one := range options.IgnoreMethod { + delete(output.methods, one) + } + if len(output.methods) == 0 { return nil, errEmptyInterface } From 1d992794ea2a1361b3341f195ac960fb9682b81d Mon Sep 17 00:00:00 2001 From: exfly Date: Wed, 23 Aug 2023 17:13:28 +0800 Subject: [PATCH 2/2] fix: gen cmd line add ignore method --- cmd_generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd_generate.go b/cmd_generate.go index 9d58bb1..4d1ae78 100644 --- a/cmd_generate.go +++ b/cmd_generate.go @@ -312,7 +312,7 @@ const headerTemplate = `// Code generated by gowrap. DO NOT EDIT. package {{.Package.Name}} {{if (not .Options.HeaderVars.DisableGoGenerate)}} -//{{"go:generate"}} gowrap gen -p {{.SourcePackage.PkgPath}} -i {{.Options.InterfaceName}} -t {{.Options.HeaderVars.Template}} -o {{.Options.HeaderVars.OutputFileName}}{{.Options.HeaderVars.VarsArgs}} -l "{{.Options.LocalPrefix}}" +//{{"go:generate"}} gowrap gen -p {{.SourcePackage.PkgPath}} -i {{.Options.InterfaceName}} -t {{.Options.HeaderVars.Template}} -o {{.Options.HeaderVars.OutputFileName}}{{.Options.HeaderVars.VarsArgs}} --ignore_method "{{ join "," .Options.IgnoreMethod }}" -l "{{.Options.LocalPrefix}}" {{end}} `