Skip to content

Commit 3483e39

Browse files
authored
refactor(sidekick): use pointer for parser.ModelConfig (#4002)
Update parser.ModelConfig usages across the codebase, changing pass-by-value into pass-by-reference. Fixes #3991 --------- Signed-off-by: James Wu <jameslynnwu@users.noreply.github.com>
1 parent 6374e1a commit 3483e39

24 files changed

Lines changed: 84 additions & 84 deletions

internal/librarian/dart/codec.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ import (
2323
"github.com/googleapis/librarian/internal/sidekick/source"
2424
)
2525

26-
func toModelConfig(library *config.Library, ch *config.API, sources *source.Sources) (parser.ModelConfig, error) {
26+
func toModelConfig(library *config.Library, ch *config.API, sources *source.Sources) (*parser.ModelConfig, error) {
2727
src := addLibraryRoots(library, sources)
2828

2929
if library.DescriptionOverride != "" {
@@ -45,10 +45,10 @@ func toModelConfig(library *config.Library, ch *config.API, sources *source.Sour
4545
}
4646
api, err := serviceconfig.Find(root, ch.Path, serviceconfig.LangDart)
4747
if err != nil {
48-
return parser.ModelConfig{}, err
48+
return nil, err
4949
}
5050

51-
modelConfig := parser.ModelConfig{
51+
modelConfig := &parser.ModelConfig{
5252
SpecificationFormat: config.SpecProtobuf,
5353
ServiceConfig: api.ServiceConfig,
5454
SpecificationSource: ch.Path,

internal/librarian/dart/codec_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ func TestToModelConfig(t *testing.T) {
282282
library *config.Library
283283
channel *config.API
284284
googleapisDir string
285-
want parser.ModelConfig
285+
want *parser.ModelConfig
286286
wantErr error
287287
}{
288288
{
@@ -292,7 +292,7 @@ func TestToModelConfig(t *testing.T) {
292292
Path: "google/api/apikeys/v2",
293293
},
294294
googleapisDir: googleapisDir,
295-
want: parser.ModelConfig{
295+
want: &parser.ModelConfig{
296296
SpecificationFormat: config.SpecProtobuf,
297297
ServiceConfig: "",
298298
SpecificationSource: "google/api/apikeys/v2",
@@ -312,7 +312,7 @@ func TestToModelConfig(t *testing.T) {
312312
Path: "google/api/apikeys/v2",
313313
},
314314
googleapisDir: googleapisDir,
315-
want: parser.ModelConfig{
315+
want: &parser.ModelConfig{
316316
SpecificationFormat: config.SpecProtobuf,
317317
ServiceConfig: "",
318318
SpecificationSource: "google/api/apikeys/v2",
@@ -335,7 +335,7 @@ func TestToModelConfig(t *testing.T) {
335335
Path: "google/api/apikeys/v2",
336336
},
337337
googleapisDir: googleapisDir,
338-
want: parser.ModelConfig{
338+
want: &parser.ModelConfig{
339339
SpecificationFormat: config.SpecProtobuf,
340340
ServiceConfig: "",
341341
SpecificationSource: "google/api/apikeys/v2",
@@ -378,7 +378,7 @@ func TestToModelConfig(t *testing.T) {
378378
Path: "google/api/apikeys/v2",
379379
},
380380
googleapisDir: googleapisDir,
381-
want: parser.ModelConfig{
381+
want: &parser.ModelConfig{
382382
SpecificationFormat: config.SpecProtobuf,
383383
ServiceConfig: "",
384384
SpecificationSource: "google/api/apikeys/v2",

internal/librarian/rust/codec.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/googleapis/librarian/internal/sidekick/source"
2626
)
2727

28-
func libraryToModelConfig(library *config.Library, ch *config.API, sources *source.Sources) (parser.ModelConfig, error) {
28+
func libraryToModelConfig(library *config.Library, ch *config.API, sources *source.Sources) (*parser.ModelConfig, error) {
2929
specFormat := config.SpecProtobuf
3030
if library.SpecificationFormat != "" {
3131
specFormat = library.SpecificationFormat
@@ -41,7 +41,7 @@ func libraryToModelConfig(library *config.Library, ch *config.API, sources *sour
4141
}
4242
api, err := serviceconfig.Find(root, ch.Path, serviceconfig.LangRust)
4343
if err != nil {
44-
return parser.ModelConfig{}, err
44+
return nil, err
4545
}
4646
if api.Title != "" {
4747
src["title-override"] = api.Title
@@ -57,7 +57,7 @@ func libraryToModelConfig(library *config.Library, ch *config.API, sources *sour
5757
specSource = ch.Path
5858
}
5959

60-
modelCfg := parser.ModelConfig{
60+
modelCfg := &parser.ModelConfig{
6161
Language: "rust",
6262
SpecificationFormat: specFormat,
6363
SpecificationSource: specSource,
@@ -220,7 +220,7 @@ func formatPackageDependency(dep *config.RustPackageDependency) string {
220220
return strings.Join(parts, ",")
221221
}
222222

223-
func moduleToModelConfig(library *config.Library, module *config.RustModule, sources *source.Sources) (parser.ModelConfig, error) {
223+
func moduleToModelConfig(library *config.Library, module *config.RustModule, sources *source.Sources) (*parser.ModelConfig, error) {
224224
src := addLibraryRoots(library, sources)
225225
if len(module.IncludedIds) > 0 {
226226
src["included-ids"] = strings.Join(module.IncludedIds, ",")
@@ -234,7 +234,7 @@ func moduleToModelConfig(library *config.Library, module *config.RustModule, sou
234234
if module.Source != "" && src["roots"] == "googleapis" {
235235
api, err := serviceconfig.Find(sources.Googleapis, module.Source, serviceconfig.LangRust)
236236
if err != nil {
237-
return parser.ModelConfig{}, fmt.Errorf("failed to find service config for %q: %w", module.Source, err)
237+
return nil, fmt.Errorf("failed to find service config for %q: %w", module.Source, err)
238238
}
239239
if api != nil && api.Title != "" {
240240
src["title-override"] = api.Title
@@ -252,7 +252,7 @@ func moduleToModelConfig(library *config.Library, module *config.RustModule, sou
252252
if module.SpecificationFormat != "" {
253253
specificationFormat = module.SpecificationFormat
254254
}
255-
modelCfg := parser.ModelConfig{
255+
modelCfg := &parser.ModelConfig{
256256
Language: language,
257257
SpecificationFormat: specificationFormat,
258258
ServiceConfig: module.ServiceConfig,

internal/librarian/rust/codec_test.go

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ func TestLibraryToModelConfig(t *testing.T) {
4747
name string
4848
library *config.Library
4949
api *config.API
50-
want parser.ModelConfig
50+
want *parser.ModelConfig
5151
}{
5252
{
5353
name: "minimal config",
@@ -59,7 +59,7 @@ func TestLibraryToModelConfig(t *testing.T) {
5959
api: &config.API{
6060
Path: "google/cloud/secretmanager/v1",
6161
},
62-
want: parser.ModelConfig{
62+
want: &parser.ModelConfig{
6363
Language: "rust",
6464
SpecificationFormat: config.SpecProtobuf,
6565
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -82,7 +82,7 @@ func TestLibraryToModelConfig(t *testing.T) {
8282
api: &config.API{
8383
Path: "google/cloud/secretmanager/v1",
8484
},
85-
want: parser.ModelConfig{
85+
want: &parser.ModelConfig{
8686
Language: "rust",
8787
SpecificationFormat: config.SpecProtobuf,
8888
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -104,7 +104,7 @@ func TestLibraryToModelConfig(t *testing.T) {
104104
api: &config.API{
105105
Path: "google/cloud/secretmanager/v1",
106106
},
107-
want: parser.ModelConfig{
107+
want: &parser.ModelConfig{
108108
Language: "rust",
109109
SpecificationFormat: config.SpecProtobuf,
110110
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -141,7 +141,7 @@ func TestLibraryToModelConfig(t *testing.T) {
141141
api: &config.API{
142142
Path: "google/cloud/secretmanager/v1",
143143
},
144-
want: parser.ModelConfig{
144+
want: &parser.ModelConfig{
145145
Language: "rust",
146146
SpecificationFormat: config.SpecProtobuf,
147147
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -163,7 +163,7 @@ func TestLibraryToModelConfig(t *testing.T) {
163163
api: &config.API{
164164
Path: "google/cloud/secretmanager/v1",
165165
},
166-
want: parser.ModelConfig{
166+
want: &parser.ModelConfig{
167167
Language: "rust",
168168
SpecificationFormat: config.SpecProtobuf,
169169
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -197,7 +197,7 @@ func TestLibraryToModelConfig(t *testing.T) {
197197
api: &config.API{
198198
Path: "google/cloud/secretmanager/v1",
199199
},
200-
want: parser.ModelConfig{
200+
want: &parser.ModelConfig{
201201
Language: "rust",
202202
SpecificationFormat: config.SpecProtobuf,
203203
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -226,7 +226,7 @@ func TestLibraryToModelConfig(t *testing.T) {
226226
api: &config.API{
227227
Path: "google/cloud/secretmanager/v1",
228228
},
229-
want: parser.ModelConfig{
229+
want: &parser.ModelConfig{
230230
Language: "rust",
231231
SpecificationFormat: config.SpecProtobuf,
232232
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -261,7 +261,7 @@ func TestLibraryToModelConfig(t *testing.T) {
261261
api: &config.API{
262262
Path: "google/cloud/secretmanager/v1",
263263
},
264-
want: parser.ModelConfig{
264+
want: &parser.ModelConfig{
265265
Language: "rust",
266266
SpecificationFormat: config.SpecProtobuf,
267267
SpecificationSource: "google/cloud/secretmanager/v1",
@@ -289,7 +289,7 @@ func TestLibraryToModelConfig(t *testing.T) {
289289
api: &config.API{
290290
Path: "discoveries/compute.v1.json",
291291
},
292-
want: parser.ModelConfig{
292+
want: &parser.ModelConfig{
293293
Language: "rust",
294294
SpecificationFormat: config.SpecDiscovery,
295295
SpecificationSource: "discoveries/compute.v1.json",
@@ -312,7 +312,7 @@ func TestLibraryToModelConfig(t *testing.T) {
312312
api: &config.API{
313313
Path: "testdata/secretmanager_openapi_v1.json",
314314
},
315-
want: parser.ModelConfig{
315+
want: &parser.ModelConfig{
316316
Language: "rust",
317317
SpecificationFormat: config.SpecOpenAPI,
318318
SpecificationSource: "testdata/secretmanager_openapi_v1.json",
@@ -334,7 +334,7 @@ func TestLibraryToModelConfig(t *testing.T) {
334334
api: &config.API{
335335
Path: "discoveries/compute.v1.json",
336336
},
337-
want: parser.ModelConfig{
337+
want: &parser.ModelConfig{
338338
Language: "rust",
339339
SpecificationFormat: config.SpecDiscovery,
340340
SpecificationSource: "discoveries/compute.v1.json",
@@ -356,7 +356,7 @@ func TestLibraryToModelConfig(t *testing.T) {
356356
api: &config.API{
357357
Path: "google/apps/script/type/gmail",
358358
},
359-
want: parser.ModelConfig{
359+
want: &parser.ModelConfig{
360360
Language: "rust",
361361
SpecificationFormat: config.SpecProtobuf,
362362
SpecificationSource: "google/apps/script/type/gmail",
@@ -376,7 +376,7 @@ func TestLibraryToModelConfig(t *testing.T) {
376376
api: &config.API{
377377
Path: "google/longrunning",
378378
},
379-
want: parser.ModelConfig{
379+
want: &parser.ModelConfig{
380380
Language: "rust",
381381
SpecificationFormat: config.SpecProtobuf,
382382
SpecificationSource: "google/longrunning",
@@ -402,7 +402,7 @@ func TestLibraryToModelConfig(t *testing.T) {
402402
api: &config.API{
403403
Path: "google/spanner/admin/database/v1",
404404
},
405-
want: parser.ModelConfig{
405+
want: &parser.ModelConfig{
406406
Language: "rust",
407407
SpecificationFormat: config.SpecProtobuf,
408408
SpecificationSource: "google/spanner/admin/database/v1",
@@ -424,7 +424,7 @@ func TestLibraryToModelConfig(t *testing.T) {
424424
api: &config.API{
425425
Path: "google/cloud/storageinsights/v1",
426426
},
427-
want: parser.ModelConfig{
427+
want: &parser.ModelConfig{
428428
Language: "rust",
429429
SpecificationFormat: config.SpecProtobuf,
430430
SpecificationSource: "google/cloud/storageinsights/v1",
@@ -463,7 +463,7 @@ func TestLibraryToModelConfig(t *testing.T) {
463463
api: &config.API{
464464
Path: "discoveries/compute.v1.json",
465465
},
466-
want: parser.ModelConfig{
466+
want: &parser.ModelConfig{
467467
Language: "rust",
468468
SpecificationFormat: config.SpecDiscovery,
469469
SpecificationSource: "discoveries/compute.v1.json",
@@ -502,7 +502,7 @@ func TestLibraryToModelConfig(t *testing.T) {
502502
api: &config.API{
503503
Path: "google/cloud/vision/v1",
504504
},
505-
want: parser.ModelConfig{
505+
want: &parser.ModelConfig{
506506
Language: "rust",
507507
SpecificationFormat: config.SpecProtobuf,
508508
SpecificationSource: "google/cloud/vision/v1",
@@ -523,7 +523,7 @@ func TestLibraryToModelConfig(t *testing.T) {
523523
api: &config.API{
524524
Path: "schema/google/showcase/v1beta1",
525525
},
526-
want: parser.ModelConfig{
526+
want: &parser.ModelConfig{
527527
Language: "rust",
528528
SpecificationFormat: config.SpecProtobuf,
529529
SpecificationSource: "schema/google/showcase/v1beta1",
@@ -564,7 +564,7 @@ func TestModuleToModelConfig(t *testing.T) {
564564
for _, test := range []struct {
565565
name string
566566
library *config.Library
567-
want parser.ModelConfig
567+
want *parser.ModelConfig
568568
}{
569569
{
570570
name: "with veneer documentation overrides",
@@ -593,7 +593,7 @@ func TestModuleToModelConfig(t *testing.T) {
593593
},
594594
},
595595
},
596-
want: parser.ModelConfig{
596+
want: &parser.ModelConfig{
597597
Language: "rust",
598598
Source: map[string]string{
599599
"googleapis-root": absPath(t, googleapisRoot),
@@ -625,7 +625,7 @@ func TestModuleToModelConfig(t *testing.T) {
625625
},
626626
},
627627
},
628-
want: parser.ModelConfig{
628+
want: &parser.ModelConfig{
629629
Language: "rust_storage",
630630
SpecificationFormat: config.SpecProtobuf,
631631
Source: map[string]string{
@@ -646,7 +646,7 @@ func TestModuleToModelConfig(t *testing.T) {
646646
},
647647
},
648648
},
649-
want: parser.ModelConfig{
649+
want: &parser.ModelConfig{
650650
Language: "rust",
651651
SpecificationFormat: "none",
652652
Source: map[string]string{
@@ -667,7 +667,7 @@ func TestModuleToModelConfig(t *testing.T) {
667667
},
668668
},
669669
},
670-
want: parser.ModelConfig{
670+
want: &parser.ModelConfig{
671671
Language: "rust",
672672
SpecificationFormat: config.SpecProtobuf,
673673
Source: map[string]string{
@@ -689,7 +689,7 @@ func TestModuleToModelConfig(t *testing.T) {
689689
},
690690
},
691691
},
692-
want: parser.ModelConfig{
692+
want: &parser.ModelConfig{
693693
Language: "rust",
694694
SpecificationFormat: config.SpecProtobuf,
695695
SpecificationSource: "google/logging/type",
@@ -715,7 +715,7 @@ func TestModuleToModelConfig(t *testing.T) {
715715
},
716716
},
717717
},
718-
want: parser.ModelConfig{
718+
want: &parser.ModelConfig{
719719
Language: "rust",
720720
SpecificationFormat: config.SpecProtobuf,
721721
Source: map[string]string{
@@ -740,7 +740,7 @@ func TestModuleToModelConfig(t *testing.T) {
740740
},
741741
Roots: []string{"conformance"},
742742
},
743-
want: parser.ModelConfig{
743+
want: &parser.ModelConfig{
744744
Language: "rust",
745745
SpecificationFormat: config.SpecProtobuf,
746746
SpecificationSource: "conformance",

internal/sidekick/codec_sample/generate.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import (
2828
var templates embed.FS
2929

3030
// Generate generates code from the model.
31-
func Generate(ctx context.Context, model *api.API, outdir string, cfg parser.ModelConfig) error {
31+
func Generate(ctx context.Context, model *api.API, outdir string, cfg *parser.ModelConfig) error {
3232
// A template provide converts a template name into the contents.
3333
provider := func(name string) (string, error) {
3434
contents, err := templates.ReadFile(name)

internal/sidekick/codec_sample/generate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func TestFromProtobuf(t *testing.T) {
3535
}
3636
outDir := t.TempDir()
3737

38-
cfg := parser.ModelConfig{
38+
cfg := &parser.ModelConfig{
3939
SpecificationFormat: config.SpecProtobuf,
4040
ServiceConfig: "google/cloud/secretmanager/v1/secretmanager_v1.yaml",
4141
SpecificationSource: "google/cloud/secretmanager/v1",

internal/sidekick/dart/generate_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func TestFromProtobuf(t *testing.T) {
3737
requireProtoc(t)
3838
outDir := t.TempDir()
3939

40-
cfg := parser.ModelConfig{
40+
cfg := &parser.ModelConfig{
4141
SpecificationFormat: config.SpecProtobuf,
4242
ServiceConfig: "google/cloud/secretmanager/v1/secretmanager_v1.yaml",
4343
SpecificationSource: "google/cloud/secretmanager/v1",

internal/sidekick/parser/disco.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525

2626
// ParseDisco reads discovery docs specifications and converts them into
2727
// the `api.API` model.
28-
func ParseDisco(cfg ModelConfig) (*api.API, error) {
28+
func ParseDisco(cfg *ModelConfig) (*api.API, error) {
2929
source := cfg.SpecificationSource
3030
for _, opt := range config.SourceRoots(cfg.Source) {
3131
location, ok := cfg.Source[opt]

0 commit comments

Comments
 (0)