From 14a95b2c3120486e90cd8ce6f8a2c96dd8d462bb Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 19:55:34 -0400 Subject: [PATCH 1/8] chore: update snippets in library output --- internal/librariangen/module/module.go | 70 ++++++++++++++++---------- 1 file changed, 43 insertions(+), 27 deletions(-) diff --git a/internal/librariangen/module/module.go b/internal/librariangen/module/module.go index 4de19ba96611..7940fce7eb25 100644 --- a/internal/librariangen/module/module.go +++ b/internal/librariangen/module/module.go @@ -74,7 +74,8 @@ func UpdateSnippetsMetadata(lib *request.Library, sourceDir string, destDir stri version := lib.Version slog.Debug("librariangen: updating snippets metadata") - snpDir := filepath.Join("internal", "generated", "snippets", moduleName) + sharedSnpDir := filepath.Join("internal", "generated", "snippets", moduleName) + snippetDir := filepath.Join(moduleName, "examples") for _, api := range lib.APIs { apiConfig := moduleConfig.GetAPIConfig(api.Path) @@ -84,44 +85,59 @@ func UpdateSnippetsMetadata(lib *request.Library, sourceDir string, destDir stri } snippetFile := "snippet_metadata." + apiConfig.GetProtoPackage() + ".json" - path := filepath.Join(snpDir, clientDirName, snippetFile) - slog.Info("librariangen: updating snippet metadata file", "path", path) - read, err := os.ReadFile(filepath.Join(sourceDir, path)) + sharedPath := filepath.Join(sharedSnpDir, clientDirName, snippetFile) + snippetPath := filepath.Join(snippetDir, clientDirName, snippetFile) + srcToDest := make(map[string]string) + slog.Info("librariangen: updating snippet metadata file", "path", sharedPath) + read, err := os.ReadFile(filepath.Join(sourceDir, sharedPath)) if err != nil { // If the snippet metadata doesn't exist, that's probably because this API path // is proto-only (so the GAPIC generator hasn't run). Continue to the next API path. if errors.Is(err, os.ErrNotExist) { - slog.Info("librariangen: snippet metadata file not found; assuming proto-only package", "path", path) + slog.Info("librariangen: snippet metadata file not found; assuming proto-only package", "path", sharedPath) continue } return err + } else { + srcToDest[sharedPath] = string(read) } - - content := string(read) - var newContent string - var oldVersion string - - if strings.Contains(content, "$VERSION") { - newContent = strings.Replace(content, "$VERSION", version, 1) - oldVersion = "$VERSION" - } else if foundVersion := versionRegexp.FindString(content); foundVersion != "" { - newContent = strings.Replace(content, foundVersion, version, 1) - oldVersion = foundVersion + snippet, err := os.ReadFile(filepath.Join(sourceDir, snippetPath)) + if err != nil { + // If the snippet metadata doesn't exist, that's probably because this API path + // is proto-only (so the GAPIC generator hasn't run). Continue to the next API path. + if errors.Is(err, os.ErrNotExist) { + slog.Info("librariangen: snippet metadata file not found; assuming proto-only package", "path", snippetPath) + continue + } + return err + } else { + srcToDest[snippetPath] = string(snippet) } - if newContent == "" { - return fmt.Errorf("librariangen: no version number or placeholder found in '%s'", snippetFile) + for src, cont := range srcToDest { + var newContent string + var oldVersion string + if strings.Contains(cont, "$VERSION") { + newContent = strings.Replace(cont, "$VERSION", version, 1) + oldVersion = "$VERSION" + } else if foundVersion := versionRegexp.FindString(cont); foundVersion != "" { + newContent = strings.Replace(cont, foundVersion, version, 1) + oldVersion = foundVersion + } + if newContent == "" { + return fmt.Errorf("librariangen: no version number or placeholder found in '%s'", src) + } + destPath := filepath.Join(destDir, src) + slog.Info("librariangen: updating version in snippets metadata file", "destPath", destPath, "old", oldVersion, "new", version) + if err := os.MkdirAll(filepath.Dir(destPath), 0755); err != nil { + return fmt.Errorf("librariangen: creating directory for snippet file: %w", err) + } + err = os.WriteFile(destPath, []byte(newContent), 0644) + if err != nil { + return err + } } - destPath := filepath.Join(destDir, path) - slog.Info("librariangen: updating version in snippets metadata file", "destPath", path, "old", oldVersion, "new", version) - if err := os.MkdirAll(filepath.Dir(destPath), 0755); err != nil { - return fmt.Errorf("librariangen: creating directory for snippet file: %w", err) - } - err = os.WriteFile(destPath, []byte(newContent), 0644) - if err != nil { - return err - } } return nil } From 3d49afa303ff689dd383b1c7b4b440c3d11fccfe Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:06:33 -0400 Subject: [PATCH 2/8] do not continue --- internal/librariangen/module/module.go | 32 ++++++++------------------ 1 file changed, 10 insertions(+), 22 deletions(-) diff --git a/internal/librariangen/module/module.go b/internal/librariangen/module/module.go index 7940fce7eb25..e820293c1845 100644 --- a/internal/librariangen/module/module.go +++ b/internal/librariangen/module/module.go @@ -85,36 +85,24 @@ func UpdateSnippetsMetadata(lib *request.Library, sourceDir string, destDir stri } snippetFile := "snippet_metadata." + apiConfig.GetProtoPackage() + ".json" + srcToContent := make(map[string]string) sharedPath := filepath.Join(sharedSnpDir, clientDirName, snippetFile) - snippetPath := filepath.Join(snippetDir, clientDirName, snippetFile) - srcToDest := make(map[string]string) slog.Info("librariangen: updating snippet metadata file", "path", sharedPath) read, err := os.ReadFile(filepath.Join(sourceDir, sharedPath)) - if err != nil { - // If the snippet metadata doesn't exist, that's probably because this API path - // is proto-only (so the GAPIC generator hasn't run). Continue to the next API path. - if errors.Is(err, os.ErrNotExist) { - slog.Info("librariangen: snippet metadata file not found; assuming proto-only package", "path", sharedPath) - continue - } + if err == nil { + srcToContent[sharedPath] = string(read) + } else if !errors.Is(err, os.ErrNotExist) { return err - } else { - srcToDest[sharedPath] = string(read) } + snippetPath := filepath.Join(snippetDir, clientDirName, snippetFile) + slog.Info("librariangen: updating snippet metadata file", "path", snippetPath) snippet, err := os.ReadFile(filepath.Join(sourceDir, snippetPath)) - if err != nil { - // If the snippet metadata doesn't exist, that's probably because this API path - // is proto-only (so the GAPIC generator hasn't run). Continue to the next API path. - if errors.Is(err, os.ErrNotExist) { - slog.Info("librariangen: snippet metadata file not found; assuming proto-only package", "path", snippetPath) - continue - } + if err == nil { + srcToContent[snippetPath] = string(snippet) + } else if !errors.Is(err, os.ErrNotExist) { return err - } else { - srcToDest[snippetPath] = string(snippet) } - - for src, cont := range srcToDest { + for src, cont := range srcToContent { var newContent string var oldVersion string if strings.Contains(cont, "$VERSION") { From 6deaac879f884c2b9be95968b77e53c44f676ad4 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:07:55 -0400 Subject: [PATCH 3/8] add unit tests --- internal/librariangen/module/module_test.go | 29 +++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/internal/librariangen/module/module_test.go b/internal/librariangen/module/module_test.go index e4ad2933befa..5ba07ed5bb10 100644 --- a/internal/librariangen/module/module_test.go +++ b/internal/librariangen/module/module_test.go @@ -104,6 +104,35 @@ func TestUpdateSnippetsMetadata(t *testing.T) { "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, }, }, + { + name: "version placeholder in two directories", + lib: &request.Library{ + ID: "secretmanager", + Version: "2.3.4", + APIs: []request.API{ + { + Path: "google/cloud/secretmanager/v1", + }, + }, + }, + moduleConfig: &config.ModuleConfig{ + Name: "secretmanager", + APIs: []*config.APIConfig{ + { + Path: "google/cloud/secretmanager/v1", + ProtoPackage: "google.cloud.secretmanager.v1", + }, + }, + }, + files: map[string]string{ + "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + }, + want: map[string]string{ + "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, + }, + }, { name: "existing version", lib: &request.Library{ From d91b8796ef70e4604d44195ed308182c6a06fc3f Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:08:38 -0400 Subject: [PATCH 4/8] add unit tests --- internal/librariangen/module/module_test.go | 27 +++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/internal/librariangen/module/module_test.go b/internal/librariangen/module/module_test.go index 5ba07ed5bb10..ea66e5b95c6d 100644 --- a/internal/librariangen/module/module_test.go +++ b/internal/librariangen/module/module_test.go @@ -104,6 +104,33 @@ func TestUpdateSnippetsMetadata(t *testing.T) { "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, }, }, + { + name: "version placeholder in library output", + lib: &request.Library{ + ID: "secretmanager", + Version: "2.3.4", + APIs: []request.API{ + { + Path: "google/cloud/secretmanager/v1", + }, + }, + }, + moduleConfig: &config.ModuleConfig{ + Name: "secretmanager", + APIs: []*config.APIConfig{ + { + Path: "google/cloud/secretmanager/v1", + ProtoPackage: "google.cloud.secretmanager.v1", + }, + }, + }, + files: map[string]string{ + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + }, + want: map[string]string{ + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, + }, + }, { name: "version placeholder in two directories", lib: &request.Library{ From 38128473715e9bed7393c7350f46febf558ba059 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:09:34 -0400 Subject: [PATCH 5/8] add unit tests --- internal/librariangen/module/module_test.go | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/internal/librariangen/module/module_test.go b/internal/librariangen/module/module_test.go index ea66e5b95c6d..a1b486968e26 100644 --- a/internal/librariangen/module/module_test.go +++ b/internal/librariangen/module/module_test.go @@ -263,6 +263,32 @@ func TestUpdateSnippetsMetadata(t *testing.T) { want: map[string]string{}, wantErr: true, }, + { + name: "no version string in library output", + lib: &request.Library{ + ID: "secretmanager", + Version: "2.3.4", + APIs: []request.API{ + { + Path: "google/cloud/secretmanager/v1", + }, + }, + }, + moduleConfig: &config.ModuleConfig{ + Name: "secretmanager", + APIs: []*config.APIConfig{ + { + Path: "google/cloud/secretmanager/v1", + ProtoPackage: "google.cloud.secretmanager.v1", + }, + }, + }, + files: map[string]string{ + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{}}`, + }, + want: map[string]string{}, + wantErr: true, + }, { name: "multiple api versions and a sub-API", lib: &request.Library{ From 05493ae911a3fecfb01998fd46c9208f70d80d9d Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:11:04 -0400 Subject: [PATCH 6/8] add unit tests --- internal/librariangen/module/module_test.go | 51 +++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/internal/librariangen/module/module_test.go b/internal/librariangen/module/module_test.go index a1b486968e26..130b9e8c40cc 100644 --- a/internal/librariangen/module/module_test.go +++ b/internal/librariangen/module/module_test.go @@ -334,6 +334,57 @@ func TestUpdateSnippetsMetadata(t *testing.T) { "internal/generated/snippets/secretmanager/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, }, }, + { + name: "multiple api versions and a sub-API in two snippet directories", + lib: &request.Library{ + ID: "secretmanager", + Version: "1.0.0", + APIs: []request.API{ + { + Path: "google/cloud/secretmanager/v1", + }, + { + Path: "google/cloud/secretmanager/v2", + }, + { + Path: "google/cloud/secretmanager/subapi/v1", + }, + }, + }, + moduleConfig: &config.ModuleConfig{ + Name: "secretmanager", + APIs: []*config.APIConfig{ + { + Path: "google/cloud/secretmanager/v1", + ProtoPackage: "google.cloud.secretmanager.v1", + }, + { + Path: "google/cloud/secretmanager/v2", + ProtoPackage: "google.cloud.secretmanager.v2", + }, + { + Path: "google/cloud/secretmanager/subapi/v1", + ProtoPackage: "google.cloud.secretmanager.subapi.v1", + }, + }, + }, + files: map[string]string{ + "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + "internal/generated/snippets/secretmanager/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"0.1.0"}}`, + "internal/generated/snippets/secretmanager/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"0.1.0"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"0.1.0"}}`, + "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"0.1.0"}}`, + }, + want: map[string]string{ + "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "internal/generated/snippets/secretmanager/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "internal/generated/snippets/secretmanager/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + }, + }, } for _, tc := range testdata { From 05300bfec321e6810596d764ef7ba76920ffb019 Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:21:57 -0400 Subject: [PATCH 7/8] refactor --- internal/librariangen/module/module.go | 52 +++++++++++++------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/internal/librariangen/module/module.go b/internal/librariangen/module/module.go index e820293c1845..6e36dcb9ecfe 100644 --- a/internal/librariangen/module/module.go +++ b/internal/librariangen/module/module.go @@ -83,49 +83,47 @@ func UpdateSnippetsMetadata(lib *request.Library, sourceDir string, destDir stri if err != nil { return err } - snippetFile := "snippet_metadata." + apiConfig.GetProtoPackage() + ".json" - srcToContent := make(map[string]string) - sharedPath := filepath.Join(sharedSnpDir, clientDirName, snippetFile) - slog.Info("librariangen: updating snippet metadata file", "path", sharedPath) - read, err := os.ReadFile(filepath.Join(sourceDir, sharedPath)) - if err == nil { - srcToContent[sharedPath] = string(read) - } else if !errors.Is(err, os.ErrNotExist) { - return err + paths := []string{ + filepath.Join(sharedSnpDir, clientDirName, snippetFile), + filepath.Join(snippetDir, clientDirName, snippetFile), } - snippetPath := filepath.Join(snippetDir, clientDirName, snippetFile) - slog.Info("librariangen: updating snippet metadata file", "path", snippetPath) - snippet, err := os.ReadFile(filepath.Join(sourceDir, snippetPath)) - if err == nil { - srcToContent[snippetPath] = string(snippet) - } else if !errors.Is(err, os.ErrNotExist) { - return err - } - for src, cont := range srcToContent { + var found bool + for _, path := range paths { + slog.Info("librariangen: updating snippet metadata file", "path", path) + read, err := os.ReadFile(filepath.Join(sourceDir, path)) + if err != nil { + if errors.Is(err, os.ErrNotExist) { + continue + } + return err + } + found = true + content := string(read) var newContent string var oldVersion string - if strings.Contains(cont, "$VERSION") { - newContent = strings.Replace(cont, "$VERSION", version, 1) + if strings.Contains(content, "$VERSION") { + newContent = strings.Replace(content, "$VERSION", version, 1) oldVersion = "$VERSION" - } else if foundVersion := versionRegexp.FindString(cont); foundVersion != "" { - newContent = strings.Replace(cont, foundVersion, version, 1) + } else if foundVersion := versionRegexp.FindString(content); foundVersion != "" { + newContent = strings.Replace(content, foundVersion, version, 1) oldVersion = foundVersion } if newContent == "" { - return fmt.Errorf("librariangen: no version number or placeholder found in '%s'", src) + return fmt.Errorf("librariangen: no version number or placeholder found in '%s'", path) } - destPath := filepath.Join(destDir, src) + destPath := filepath.Join(destDir, path) slog.Info("librariangen: updating version in snippets metadata file", "destPath", destPath, "old", oldVersion, "new", version) if err := os.MkdirAll(filepath.Dir(destPath), 0755); err != nil { return fmt.Errorf("librariangen: creating directory for snippet file: %w", err) } - err = os.WriteFile(destPath, []byte(newContent), 0644) - if err != nil { + if err := os.WriteFile(destPath, []byte(newContent), 0644); err != nil { return err } } - + if !found { + slog.Info("librariangen: snippet metadata files not found; assuming proto-only package", "paths", paths) + } } return nil } From dbd988c69eebe283ff58323f46f785a7ec8167ec Mon Sep 17 00:00:00 2001 From: Joe Wang <106995533+JoeWang1127@users.noreply.github.com> Date: Mon, 1 Jun 2026 20:22:31 -0400 Subject: [PATCH 8/8] format --- internal/librariangen/module/module_test.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/internal/librariangen/module/module_test.go b/internal/librariangen/module/module_test.go index 130b9e8c40cc..0ee04115b265 100644 --- a/internal/librariangen/module/module_test.go +++ b/internal/librariangen/module/module_test.go @@ -153,11 +153,11 @@ func TestUpdateSnippetsMetadata(t *testing.T) { }, files: map[string]string{ "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, - "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, }, want: map[string]string{ "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, - "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"2.3.4"}}`, }, }, { @@ -372,17 +372,17 @@ func TestUpdateSnippetsMetadata(t *testing.T) { "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, "internal/generated/snippets/secretmanager/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"0.1.0"}}`, "internal/generated/snippets/secretmanager/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"0.1.0"}}`, - "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, - "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"0.1.0"}}`, - "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"0.1.0"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"$VERSION"}}`, + "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"0.1.0"}}`, + "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"0.1.0"}}`, }, want: map[string]string{ "internal/generated/snippets/secretmanager/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, "internal/generated/snippets/secretmanager/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"1.0.0"}}`, "internal/generated/snippets/secretmanager/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, - "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, - "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"1.0.0"}}`, - "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/apiv1/snippet_metadata.google.cloud.secretmanager.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/apiv2/snippet_metadata.google.cloud.secretmanager.v2.json": `{"clientLibrary":{"version":"1.0.0"}}`, + "secretmanager/examples/subapi/apiv1/snippet_metadata.google.cloud.secretmanager.subapi.v1.json": `{"clientLibrary":{"version":"1.0.0"}}`, }, }, }