Skip to content

Commit 1547e75

Browse files
committed
feat: add versions for generated code
1 parent 979c303 commit 1547e75

24 files changed

+88
-27
lines changed

cmd/kod/internal/generate_generator.go

+19-4
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
"os"
1414
"path"
1515
"path/filepath"
16+
"runtime/debug"
1617
"sort"
1718
"strconv"
1819
"strings"
@@ -644,6 +645,11 @@ func (g *generator) componentRef(comp *component) string {
644645
func (g *generator) generateImports(p printFn) {
645646
p(`// Code generated by "kod generate". DO NOT EDIT.`)
646647
p("//go:build !ignoreKodGen")
648+
debugInfo, ok := debug.ReadBuildInfo()
649+
if ok {
650+
p(`// versions:`)
651+
p("// - %s\t%s", debugInfo.Path, debugInfo.Main.Version)
652+
}
647653
p("")
648654
p("package %s", g.pkg.Name)
649655
p("")
@@ -667,6 +673,9 @@ func (g *generator) generateFullMethodNames(p printFn) {
667673
p(`const (`)
668674
for _, comp := range g.components {
669675
for _, m := range comp.methods() {
676+
if g.getFirstArgTypeString(m) != "context.Context" {
677+
continue
678+
}
670679
p(`// %s is the full name of the method [%s.%s].`, comp.fullMethodNameVar(m.Name()), comp.implName(), m.Name())
671680
p(`%s = %q`, comp.fullMethodNameVar(m.Name()), comp.fullFullMethodName(m.Name()))
672681
}
@@ -790,10 +799,7 @@ func (g *generator) generateLocalStubs(p printFn) {
790799

791800
mt := m.Type().(*types.Signature)
792801

793-
firstArgTypeString := ""
794-
if mt.Params().Len() > 0 {
795-
firstArgTypeString = g.tset.genTypeString(mt.Params().At(0).Type())
796-
}
802+
firstArgTypeString := g.getFirstArgTypeString(m)
797803

798804
p(``)
799805
p(`// %s wraps the method [%s.%s].`, m.Name(), comp.implName(), m.Name())
@@ -844,6 +850,15 @@ func (g *generator) generateLocalStubs(p printFn) {
844850
}
845851
}
846852

853+
func (g *generator) getFirstArgTypeString(m *types.Func) string {
854+
mt := m.Type().(*types.Signature)
855+
856+
if mt.Params().Len() > 0 {
857+
return g.tset.genTypeString(mt.Params().At(0).Type())
858+
}
859+
return ""
860+
}
861+
847862
func (g *generator) setReturnsList(sig *types.Signature) string {
848863
var returns strings.Builder
849864
for i := 0; i < sig.Results().Len(); i++ {

cmd/kod/internal/mock_watcher_test.go

+1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cmd/kod/internal/struct2interface.go

+12-2
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"os/exec"
1212
"path/filepath"
13+
"runtime/debug"
1314
"strings"
1415
"time"
1516

@@ -202,9 +203,17 @@ func makeInterfaceHead(pkgName string, imports []string) []string {
202203
output := []string{
203204
"// Code generated by \"kod generate\"; DO NOT EDIT.",
204205
"",
206+
}
207+
debugInfo, ok := debug.ReadBuildInfo()
208+
if ok {
209+
output = append(output, "// versions:")
210+
output = append(output, fmt.Sprintf("// - kod\t%s", debugInfo.Main.Version))
211+
}
212+
213+
output = append(output, []string{
205214
"package " + pkgName,
206215
"import (",
207-
}
216+
}...)
208217
output = append(output, imports...)
209218
output = append(output,
210219
")",
@@ -265,7 +274,8 @@ func createFile(c *cobra.Command, objs map[string]*makeInterfaceFile) error {
265274
}
266275

267276
if commandExists("mockgen") {
268-
cmd := exec.Command("mockgen", "-source", fileName, "-destination", filepath.Join(obj.DirPath, "kod_gen_mock.go"), "-package", pkgName, "-typed")
277+
cmd := exec.Command("mockgen", "-source", fileName, "-destination", filepath.Join(obj.DirPath, "kod_gen_mock.go"),
278+
"-package", pkgName, "-typed", "-build_constraint", "!ignoreKodGen")
269279
cmd.Stderr = os.Stderr
270280
cmd.Stdout = os.Stdout
271281

examples/helloworld/kod_gen.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/helloworld/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

examples/helloworld/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case1/kod_gen.go

+3-10
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case1/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case1/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case2/kod_gen.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case2/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case2/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case3/kod_gen.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case3/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case3/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case4/kod_gen.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case4/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case4/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case5/kod_gen.go

+3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case5/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/case5/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/graphcase/kod_gen.go

+3-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/graphcase/kod_gen_interface.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

tests/graphcase/kod_gen_mock.go

+3-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)