diff --git a/internal/jennies/golang/converter_test.go b/internal/jennies/golang/converter_test.go new file mode 100644 index 00000000..eb3dbcad --- /dev/null +++ b/internal/jennies/golang/converter_test.go @@ -0,0 +1,45 @@ +package golang + +import ( + "testing" + + "github.com/grafana/cog/internal/languages" + "github.com/grafana/cog/internal/testutils" + "github.com/stretchr/testify/require" +) + +func TestConverter_Generate(t *testing.T) { + test := testutils.GoldenFilesTestSuite[languages.Context]{ + TestDataRoot: "../../../testdata/jennies/builders", + Name: "GoConverter", + Skip: map[string]string{ + "anonymous_struct": "anonymous structs are eliminated with compiler passes", + "builder_delegation_in_disjunction": "disjunctions are eliminated with compiler passes", + "dashboard_panel": "this test if for Java generics for dashboard.Panel", + }, + } + + config := Config{ + PackageRoot: "github.com/grafana/cog/generated", + } + language := New(config) + jenny := Converter{ + Config: config, + NullableConfig: language.NullableKinds(), + Tmpl: initTemplates([]string{}), + } + + test.Run(t, func(tc *testutils.Test[languages.Context]) { + var err error + req := require.New(tc) + + context := tc.UnmarshalJSONInput(testutils.BuildersContextInputFile) + context, err = languages.GenerateBuilderNilChecks(language, context) + req.NoError(err) + + files, err := jenny.Generate(context) + req.NoError(err) + + tc.WriteFiles(files) + }) +} diff --git a/testdata/jennies/builders/array_append/GoConverter/sandbox/somestruct_converter_gen.go b/testdata/jennies/builders/array_append/GoConverter/sandbox/somestruct_converter_gen.go new file mode 100644 index 00000000..7835b303 --- /dev/null +++ b/testdata/jennies/builders/array_append/GoConverter/sandbox/somestruct_converter_gen.go @@ -0,0 +1,28 @@ +package sandbox + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `sandbox.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Tags != nil && len(input.Tags) >= 1 {for _, item := range input.Tags { + + buffer.WriteString(`Tags(`) + arg0 :=fmt.Sprintf("%#v", item) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + }} + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/basic_struct/GoConverter/basic_struct/somestruct_converter_gen.go b/testdata/jennies/builders/basic_struct/GoConverter/basic_struct/somestruct_converter_gen.go new file mode 100644 index 00000000..d29b7eed --- /dev/null +++ b/testdata/jennies/builders/basic_struct/GoConverter/basic_struct/somestruct_converter_gen.go @@ -0,0 +1,69 @@ +package basic_struct + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `basic_struct.NewSomeStructBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Id(`) + arg0 :=fmt.Sprintf("%#v", input.Id) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + if input.Uid != "" { + + buffer.WriteString(`Uid(`) + arg0 :=fmt.Sprintf("%#v", input.Uid) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Tags != nil && len(input.Tags) >= 1 { + + buffer.WriteString(`Tags(`) + tmparg0 := []string{} + for _, arg1 := range input.Tags { + tmptagsarg1 :=fmt.Sprintf("%#v", arg1) + tmparg0 = append(tmparg0, tmptagsarg1) + } + arg0 := "[]string{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + { + buffer.WriteString(`LiveNow(`) + arg0 :=fmt.Sprintf("%#v", input.LiveNow) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/basic_struct_defaults/GoConverter/basic_struct_defaults/somestruct_converter_gen.go b/testdata/jennies/builders/basic_struct_defaults/GoConverter/basic_struct_defaults/somestruct_converter_gen.go new file mode 100644 index 00000000..301118c8 --- /dev/null +++ b/testdata/jennies/builders/basic_struct_defaults/GoConverter/basic_struct_defaults/somestruct_converter_gen.go @@ -0,0 +1,69 @@ +package basic_struct_defaults + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `basic_struct_defaults.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Id != 42 { + + buffer.WriteString(`Id(`) + arg0 :=fmt.Sprintf("%#v", input.Id) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Uid != "" && input.Uid != "default-uid" { + + buffer.WriteString(`Uid(`) + arg0 :=fmt.Sprintf("%#v", input.Uid) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Tags != nil && len(input.Tags) >= 1 { + + buffer.WriteString(`Tags(`) + tmparg0 := []string{} + for _, arg1 := range input.Tags { + tmptagsarg1 :=fmt.Sprintf("%#v", arg1) + tmparg0 = append(tmparg0, tmptagsarg1) + } + arg0 := "[]string{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.LiveNow != true { + + buffer.WriteString(`LiveNow(`) + arg0 :=fmt.Sprintf("%#v", input.LiveNow) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboard_converter_gen.go b/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboard_converter_gen.go new file mode 100644 index 00000000..0f6bb1f8 --- /dev/null +++ b/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboard_converter_gen.go @@ -0,0 +1,91 @@ +package builder_delegation + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func DashboardConverter(input *Dashboard) string { + calls := []string{ + `builder_delegation.NewDashboardBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Id(`) + arg0 :=fmt.Sprintf("%#v", input.Id) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Links != nil && len(input.Links) >= 1 { + + buffer.WriteString(`Links(`) + tmparg0 := []string{} + for _, arg1 := range input.Links { + tmplinksarg1 := DashboardLinkConverter(&arg1) + tmparg0 = append(tmparg0, tmplinksarg1) + } + arg0 := "[]cog.Builder[builder_delegation.DashboardLink]{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.LinksOfLinks != nil && len(input.LinksOfLinks) >= 1 { + + buffer.WriteString(`LinksOfLinks(`) + tmparg0 := []string{} + for _, arg1 := range input.LinksOfLinks { + tmptmplinksOfLinksarg1 := []string{} + for _, arg1Value := range arg1 { + tmparg1arg1Value := DashboardLinkConverter(&arg1Value) + tmptmplinksOfLinksarg1 = append(tmptmplinksOfLinksarg1, tmparg1arg1Value) + } + tmplinksOfLinksarg1 := "[]cog.Builder[builder_delegation.DashboardLink]{" + strings.Join(tmptmplinksOfLinksarg1, ",\n") + "}" + tmparg0 = append(tmparg0, tmplinksOfLinksarg1) + } + arg0 := "[][]cog.Builder[builder_delegation.DashboardLink]{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + { + buffer.WriteString(`SingleLink(`) + arg0 := DashboardLinkConverter(&input.SingleLink) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboardlink_converter_gen.go b/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboardlink_converter_gen.go new file mode 100644 index 00000000..2bfecade --- /dev/null +++ b/testdata/jennies/builders/builder_delegation/GoConverter/builder_delegation/dashboardlink_converter_gen.go @@ -0,0 +1,40 @@ +package builder_delegation + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func DashboardLinkConverter(input *DashboardLink) string { + calls := []string{ + `builder_delegation.NewDashboardLinkBuilder()`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Url != "" { + + buffer.WriteString(`Url(`) + arg0 :=fmt.Sprintf("%#v", input.Url) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/composable_slot/GoConverter/composable_slot/lokibuilder_converter_gen.go b/testdata/jennies/builders/composable_slot/GoConverter/composable_slot/lokibuilder_converter_gen.go new file mode 100644 index 00000000..3078878a --- /dev/null +++ b/testdata/jennies/builders/composable_slot/GoConverter/composable_slot/lokibuilder_converter_gen.go @@ -0,0 +1,45 @@ +package composable_slot + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func LokiBuilderConverter(input *Dashboard) string { + calls := []string{ + `composable_slot.NewLokiBuilderBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Target(`) + arg0 := cog.ConvertDataqueryToCode(input.Target, ) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + if input.Targets != nil && len(input.Targets) >= 1 { + + buffer.WriteString(`Targets(`) + tmparg0 := []string{} + for _, arg1 := range input.Targets { + tmptargetsarg1 := cog.ConvertDataqueryToCode(arg1, ) + tmparg0 = append(tmparg0, tmptargetsarg1) + } + arg0 := "[]cog.Builder[variants.Dataquery]{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/constant_assignment/GoConverter/sandbox/somestruct_converter_gen.go b/testdata/jennies/builders/constant_assignment/GoConverter/sandbox/somestruct_converter_gen.go new file mode 100644 index 00000000..59e16012 --- /dev/null +++ b/testdata/jennies/builders/constant_assignment/GoConverter/sandbox/somestruct_converter_gen.go @@ -0,0 +1,52 @@ +package sandbox + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `sandbox.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Editable == true { + + buffer.WriteString(`Editable(`) + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Editable == false { + + buffer.WriteString(`Readonly(`) + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.AutoRefresh != nil && *input.AutoRefresh == true { + + buffer.WriteString(`AutoRefresh(`) + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.AutoRefresh != nil && *input.AutoRefresh == false { + + buffer.WriteString(`NoAutoRefresh(`) + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/constraints/GoConverter/constraints/somestruct_converter_gen.go b/testdata/jennies/builders/constraints/GoConverter/constraints/somestruct_converter_gen.go new file mode 100644 index 00000000..eba56d1f --- /dev/null +++ b/testdata/jennies/builders/constraints/GoConverter/constraints/somestruct_converter_gen.go @@ -0,0 +1,40 @@ +package constraints + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `constraints.NewSomeStructBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Id(`) + arg0 :=fmt.Sprintf("%#v", input.Id) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/constructor_argument/GoConverter/sandbox/somestruct_converter_gen.go b/testdata/jennies/builders/constructor_argument/GoConverter/sandbox/somestruct_converter_gen.go new file mode 100644 index 00000000..1ad5c9c3 --- /dev/null +++ b/testdata/jennies/builders/constructor_argument/GoConverter/sandbox/somestruct_converter_gen.go @@ -0,0 +1,28 @@ +package sandbox + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `sandbox.NewSomeStructBuilder(`+fmt.Sprintf("%#v", input.Title)+`)`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/constructor_initializations/GoConverter/constructor_initializations/somepanel_converter_gen.go b/testdata/jennies/builders/constructor_initializations/GoConverter/constructor_initializations/somepanel_converter_gen.go new file mode 100644 index 00000000..a35f578d --- /dev/null +++ b/testdata/jennies/builders/constructor_initializations/GoConverter/constructor_initializations/somepanel_converter_gen.go @@ -0,0 +1,28 @@ +package constructor_initializations + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomePanelConverter(input *SomePanel) string { + calls := []string{ + `constructor_initializations.NewSomePanelBuilder()`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/dataquery_variant_builder/GoConverter/dataquery_variant_builder/lokibuilder_converter_gen.go b/testdata/jennies/builders/dataquery_variant_builder/GoConverter/dataquery_variant_builder/lokibuilder_converter_gen.go new file mode 100644 index 00000000..0799c759 --- /dev/null +++ b/testdata/jennies/builders/dataquery_variant_builder/GoConverter/dataquery_variant_builder/lokibuilder_converter_gen.go @@ -0,0 +1,28 @@ +package dataquery_variant_builder + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func LokiBuilderConverter(input *Loki) string { + calls := []string{ + `dataquery_variant_builder.NewLokiBuilderBuilder()`, + } + var buffer strings.Builder + if input.Expr != "" { + + buffer.WriteString(`Expr(`) + arg0 :=fmt.Sprintf("%#v", input.Expr) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/envelope_assignment/GoConverter/sandbox/dashboard_converter_gen.go b/testdata/jennies/builders/envelope_assignment/GoConverter/sandbox/dashboard_converter_gen.go new file mode 100644 index 00000000..2963b92b --- /dev/null +++ b/testdata/jennies/builders/envelope_assignment/GoConverter/sandbox/dashboard_converter_gen.go @@ -0,0 +1,31 @@ +package sandbox + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func DashboardConverter(input *Dashboard) string { + calls := []string{ + `sandbox.NewDashboardBuilder()`, + } + var buffer strings.Builder + if input.Variables != nil && len(input.Variables) >= 1 {for _, item := range input.Variables { + + buffer.WriteString(`WithVariable(`) + arg0 :=fmt.Sprintf("%#v", item.Name) + buffer.WriteString(arg0) + buffer.WriteString(", ") + arg1 :=fmt.Sprintf("%#v", item.Value) + buffer.WriteString(arg1) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + }} + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/foreign_builder/GoConverter/builder_pkg/somenicebuilder_converter_gen.go b/testdata/jennies/builders/foreign_builder/GoConverter/builder_pkg/somenicebuilder_converter_gen.go new file mode 100644 index 00000000..a6d1980b --- /dev/null +++ b/testdata/jennies/builders/foreign_builder/GoConverter/builder_pkg/somenicebuilder_converter_gen.go @@ -0,0 +1,29 @@ +package builder_pkg + + + +import ( + cog "github.com/grafana/cog/generated/cog" + some_pkg "github.com/grafana/cog/generated/some_pkg" +) + +func SomeNiceBuilderConverter(input *some_pkg.SomeStruct) string { + calls := []string{ + `builder_pkg.NewSomeNiceBuilderBuilder()`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/initialization_safeguards/GoConverter/initialization_safeguards/somepanel_converter_gen.go b/testdata/jennies/builders/initialization_safeguards/GoConverter/initialization_safeguards/somepanel_converter_gen.go new file mode 100644 index 00000000..2de50bf5 --- /dev/null +++ b/testdata/jennies/builders/initialization_safeguards/GoConverter/initialization_safeguards/somepanel_converter_gen.go @@ -0,0 +1,40 @@ +package initialization_safeguards + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomePanelConverter(input *SomePanel) string { + calls := []string{ + `initialization_safeguards.NewSomePanelBuilder()`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Options != nil { + + buffer.WriteString(`ShowLegend(`) + arg0 :=fmt.Sprintf("%#v", input.Options.Legend.Show) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/known_any/GoConverter/known_any/somestruct_converter_gen.go b/testdata/jennies/builders/known_any/GoConverter/known_any/somestruct_converter_gen.go new file mode 100644 index 00000000..27eec065 --- /dev/null +++ b/testdata/jennies/builders/known_any/GoConverter/known_any/somestruct_converter_gen.go @@ -0,0 +1,28 @@ +package known_any + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `known_any.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Config.(*Config).Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Config.(*Config).Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/nullable_map_assignment/GoConverter/nullable_map_assignment/somestruct_converter_gen.go b/testdata/jennies/builders/nullable_map_assignment/GoConverter/nullable_map_assignment/somestruct_converter_gen.go new file mode 100644 index 00000000..9cc23f16 --- /dev/null +++ b/testdata/jennies/builders/nullable_map_assignment/GoConverter/nullable_map_assignment/somestruct_converter_gen.go @@ -0,0 +1,28 @@ +package nullable_map_assignment + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `nullable_map_assignment.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Config != nil { + + buffer.WriteString(`Config(`) + arg0 :=cog.Dump(input.Config) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/package-with-dashes/GoConverter/builderpkg/somenicebuilder_converter_gen.go b/testdata/jennies/builders/package-with-dashes/GoConverter/builderpkg/somenicebuilder_converter_gen.go new file mode 100644 index 00000000..20924cc0 --- /dev/null +++ b/testdata/jennies/builders/package-with-dashes/GoConverter/builderpkg/somenicebuilder_converter_gen.go @@ -0,0 +1,29 @@ +package builderpkg + + + +import ( + cog "github.com/grafana/cog/generated/cog" + withdashes "github.com/grafana/cog/generated/with-dashes" +) + +func SomeNiceBuilderConverter(input *withdashes.SomeStruct) string { + calls := []string{ + `builderpkg.NewSomeNiceBuilderBuilder()`, + } + var buffer strings.Builder + if input.Title != "" { + + buffer.WriteString(`Title(`) + arg0 :=fmt.Sprintf("%#v", input.Title) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/panel_builders/GoConverter/panelbuilder/panel_converter_gen.go b/testdata/jennies/builders/panel_builders/GoConverter/panelbuilder/panel_converter_gen.go new file mode 100644 index 00000000..2021b469 --- /dev/null +++ b/testdata/jennies/builders/panel_builders/GoConverter/panelbuilder/panel_converter_gen.go @@ -0,0 +1,141 @@ +package panelbuilder + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func PanelConverter(input *Panel) string { + calls := []string{ + `panelbuilder.NewPanelBuilder()`, + } + var buffer strings.Builder + if input.OnlyFromThisDashboard != false { + + buffer.WriteString(`OnlyFromThisDashboard(`) + arg0 :=fmt.Sprintf("%#v", input.OnlyFromThisDashboard) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.OnlyInTimeRange != false { + + buffer.WriteString(`OnlyInTimeRange(`) + arg0 :=fmt.Sprintf("%#v", input.OnlyInTimeRange) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Tags != nil && len(input.Tags) >= 1 { + + buffer.WriteString(`Tags(`) + tmparg0 := []string{} + for _, arg1 := range input.Tags { + tmptagsarg1 :=fmt.Sprintf("%#v", arg1) + tmparg0 = append(tmparg0, tmptagsarg1) + } + arg0 := "[]string{" + strings.Join(tmparg0, ",\n") + "}" + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.Limit != 10 { + + buffer.WriteString(`Limit(`) + arg0 :=fmt.Sprintf("%#v", input.Limit) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.ShowUser != true { + + buffer.WriteString(`ShowUser(`) + arg0 :=fmt.Sprintf("%#v", input.ShowUser) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.ShowTime != true { + + buffer.WriteString(`ShowTime(`) + arg0 :=fmt.Sprintf("%#v", input.ShowTime) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.ShowTags != true { + + buffer.WriteString(`ShowTags(`) + arg0 :=fmt.Sprintf("%#v", input.ShowTags) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.NavigateToPanel != true { + + buffer.WriteString(`NavigateToPanel(`) + arg0 :=fmt.Sprintf("%#v", input.NavigateToPanel) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.NavigateBefore != "" && input.NavigateBefore != "10m" { + + buffer.WriteString(`NavigateBefore(`) + arg0 :=fmt.Sprintf("%#v", input.NavigateBefore) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + if input.NavigateAfter != "" && input.NavigateAfter != "10m" { + + buffer.WriteString(`NavigateAfter(`) + arg0 :=fmt.Sprintf("%#v", input.NavigateAfter) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/properties/GoConverter/properties/somestruct_converter_gen.go b/testdata/jennies/builders/properties/GoConverter/properties/somestruct_converter_gen.go new file mode 100644 index 00000000..565c9720 --- /dev/null +++ b/testdata/jennies/builders/properties/GoConverter/properties/somestruct_converter_gen.go @@ -0,0 +1,28 @@ +package properties + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `properties.NewSomeStructBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Id(`) + arg0 :=fmt.Sprintf("%#v", input.Id) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/references/GoConverter/some_pkg/person_converter_gen.go b/testdata/jennies/builders/references/GoConverter/some_pkg/person_converter_gen.go new file mode 100644 index 00000000..3ac3b4c8 --- /dev/null +++ b/testdata/jennies/builders/references/GoConverter/some_pkg/person_converter_gen.go @@ -0,0 +1,28 @@ +package some_pkg + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func PersonConverter(input *Person) string { + calls := []string{ + `some_pkg.NewPersonBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`Name(`) + arg0 :=cog.Dump(input.Name) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/struct_fields_as_args_assignment/GoConverter/sandbox/somestruct_converter_gen.go b/testdata/jennies/builders/struct_fields_as_args_assignment/GoConverter/sandbox/somestruct_converter_gen.go new file mode 100644 index 00000000..81a2967e --- /dev/null +++ b/testdata/jennies/builders/struct_fields_as_args_assignment/GoConverter/sandbox/somestruct_converter_gen.go @@ -0,0 +1,31 @@ +package sandbox + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func SomeStructConverter(input *SomeStruct) string { + calls := []string{ + `sandbox.NewSomeStructBuilder()`, + } + var buffer strings.Builder + if input.Time != nil && input.Time.From != "" && input.Time.From != "now-6h" && input.Time.To != "" && input.Time.To != "now" { + + buffer.WriteString(`Time(`) + arg0 :=fmt.Sprintf("%#v", input.Time.From) + buffer.WriteString(arg0) + buffer.WriteString(", ") + arg1 :=fmt.Sprintf("%#v", input.Time.To) + buffer.WriteString(arg1) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/nestedstruct_converter_gen.go b/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/nestedstruct_converter_gen.go new file mode 100644 index 00000000..cc34971f --- /dev/null +++ b/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/nestedstruct_converter_gen.go @@ -0,0 +1,40 @@ +package struct_with_defaults + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func NestedStructConverter(input *NestedStruct) string { + calls := []string{ + `struct_with_defaults.NewNestedStructBuilder()`, + } + var buffer strings.Builder + if input.StringVal != "" { + + buffer.WriteString(`StringVal(`) + arg0 :=fmt.Sprintf("%#v", input.StringVal) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + + } + + { + buffer.WriteString(`IntVal(`) + arg0 :=fmt.Sprintf("%#v", input.IntVal) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + } diff --git a/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/struct_converter_gen.go b/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/struct_converter_gen.go new file mode 100644 index 00000000..d0993cbb --- /dev/null +++ b/testdata/jennies/builders/struct_with_defaults/GoConverter/struct_with_defaults/struct_converter_gen.go @@ -0,0 +1,76 @@ +package struct_with_defaults + + + +import ( + cog "github.com/grafana/cog/generated/cog" +) + +func StructConverter(input *Struct) string { + calls := []string{ + `struct_with_defaults.NewStructBuilder()`, + } + var buffer strings.Builder + + { + buffer.WriteString(`AllFields(`) + arg0 := NestedStructConverter(&input.AllFields) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + { + buffer.WriteString(`PartialFields(`) + arg0 := NestedStructConverter(&input.PartialFields) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + { + buffer.WriteString(`EmptyFields(`) + arg0 := NestedStructConverter(&input.EmptyFields) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + { + buffer.WriteString(`ComplexField(`) + arg0 :=cog.Dump(input.ComplexField) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + { + buffer.WriteString(`PartialComplexField(`) + arg0 :=cog.Dump(input.PartialComplexField) + buffer.WriteString(arg0) + + buffer.WriteString(")") + + calls = append(calls, buffer.String()) + buffer.Reset() + } + + + return strings.Join(calls, ".\t\n") + }