Skip to content

Commit 95d3aff

Browse files
feat(dart): Allow library name overrides (#3335)
Signed-off-by: Brian Quinlan <[email protected]> Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
1 parent e45f132 commit 95d3aff

File tree

4 files changed

+34
-18
lines changed

4 files changed

+34
-18
lines changed

internal/sidekick/dart/annotate.go

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,12 @@ type modelAnnotations struct {
6262
// The version of the generated package.
6363
PackageVersion string
6464
// Name of the API in snake_format (e.g. secretmanager).
65-
MainFileName string
66-
SourcePackageName string
67-
CopyrightYear string
68-
BoilerPlate []string
69-
DefaultHost string
70-
DocLines []string
65+
MainFileNameWithExtension string
66+
SourcePackageName string
67+
CopyrightYear string
68+
BoilerPlate []string
69+
DefaultHost string
70+
DocLines []string
7171
// A reference to an optional hand-written part file.
7272
PartFileReference string
7373
PackageDependencies []packageDependency
@@ -251,6 +251,7 @@ func (annotate *annotateModel) annotateModel(options map[string]string) error {
251251
var (
252252
packageNameOverride string
253253
generationYear string
254+
libraryPathOverride string
254255
packageVersion string
255256
partFileReference string
256257
doNotPublish bool
@@ -276,6 +277,10 @@ func (annotate *annotateModel) annotateModel(options map[string]string) error {
276277
for i := range apiKeyEnvironmentVariables {
277278
apiKeyEnvironmentVariables[i] = strings.TrimSpace(apiKeyEnvironmentVariables[i])
278279
}
280+
case key == "library-path-override":
281+
// library-path-override = "src/buffers.dart"
282+
// The path to use for the generated file, relative to the package's "lib/" directory.
283+
libraryPathOverride = definition
279284
case key == "package-name-override":
280285
packageNameOverride = definition
281286
case key == "copyright-year":
@@ -403,17 +408,19 @@ func (annotate *annotateModel) annotateModel(options map[string]string) error {
403408
return err
404409
}
405410

406-
mainFileName := strcase.ToSnake(model.Name)
407-
mainFileNameWithExtension := mainFileName + ".dart"
411+
mainFileNameWithExtension := strcase.ToSnake(model.Name) + ".dart"
412+
if libraryPathOverride != "" {
413+
mainFileNameWithExtension = libraryPathOverride
414+
}
408415

409416
slices.Sort(devDependencies)
410417

411418
ann := &modelAnnotations{
412-
Parent: model,
413-
PackageName: pkgName,
414-
PackageVersion: packageVersion,
415-
MainFileName: mainFileName,
416-
CopyrightYear: generationYear,
419+
Parent: model,
420+
PackageName: pkgName,
421+
PackageVersion: packageVersion,
422+
MainFileNameWithExtension: mainFileNameWithExtension,
423+
CopyrightYear: generationYear,
417424
BoilerPlate: append(license.LicenseHeaderBulk(),
418425
"",
419426
" Code generated by sidekick. DO NOT EDIT."),

internal/sidekick/dart/annotate_test.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ func TestAnnotateModel(t *testing.T) {
5252
if diff := cmp.Diff("google_cloud_test", codec.PackageName); diff != "" {
5353
t.Errorf("mismatch in Codec.PackageName (-want, +got)\n:%s", diff)
5454
}
55-
if diff := cmp.Diff("test", codec.MainFileName); diff != "" {
56-
t.Errorf("mismatch in Codec.MainFileName (-want, +got)\n:%s", diff)
55+
if diff := cmp.Diff("test.dart", codec.MainFileNameWithExtension); diff != "" {
56+
t.Errorf("mismatch in Codec.MainFileNameWithExtension (-want, +got)\n:%s", diff)
5757
}
5858
}
5959

@@ -64,6 +64,15 @@ func TestAnnotateModel_Options(t *testing.T) {
6464
options map[string]string
6565
verify func(*testing.T, *annotateModel)
6666
}{
67+
{
68+
map[string]string{"library-path-override": "src/buffers.dart"},
69+
func(t *testing.T, am *annotateModel) {
70+
codec := model.Codec.(*modelAnnotations)
71+
if diff := cmp.Diff("src/buffers.dart", codec.MainFileNameWithExtension); diff != "" {
72+
t.Errorf("mismatch in Codec.MainFileNameWithExtension (-want, +got)\n:%s", diff)
73+
}
74+
},
75+
},
6776
{
6877
map[string]string{"package-name-override": "google-cloud-type"},
6978
func(t *testing.T, am *annotateModel) {

internal/sidekick/dart/generate.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,15 +59,15 @@ func templatesProvider() language.TemplateProvider {
5959

6060
func generatedFiles(model *api.API) []language.GeneratedFile {
6161
codec := model.Codec.(*modelAnnotations)
62-
mainFileName := codec.MainFileName
62+
mainFileNameWithExtension := codec.MainFileNameWithExtension
6363

6464
files := language.WalkTemplatesDir(dartTemplates, "templates")
6565

6666
for index, fileInfo := range files {
6767
// Replace 'main.dart' with '{servicename}.dart'
6868
if filepath.Base(fileInfo.TemplatePath) == "main.dart.mustache" {
6969
outDir := filepath.Dir(fileInfo.OutputPath)
70-
fileInfo.OutputPath = filepath.Join(outDir, mainFileName+".dart")
70+
fileInfo.OutputPath = filepath.Join(outDir, mainFileNameWithExtension)
7171

7272
files[index] = fileInfo
7373
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
lib/{{Codec.MainFileName}}.dart linguist-generated=true
1+
lib/{{Codec.MainFileNameWithExtension}} linguist-generated=true

0 commit comments

Comments
 (0)