Skip to content

Commit 1eaba8b

Browse files
authored
fix(internal): detect module for properly generating docs URLs (#4460)
Fixes: #4447
1 parent 4983913 commit 1eaba8b

File tree

3 files changed

+44
-21
lines changed

3 files changed

+44
-21
lines changed

internal/.repo-metadata-full.json

+18-18
Original file line numberDiff line numberDiff line change
@@ -148,7 +148,7 @@
148148
"description": "BigQuery Connection API",
149149
"language": "Go",
150150
"client_library_type": "generated",
151-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/connection/apiv1",
151+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/connection/apiv1",
152152
"release_level": "ga",
153153
"library_type": ""
154154
},
@@ -157,7 +157,7 @@
157157
"description": "BigQuery Connection API",
158158
"language": "Go",
159159
"client_library_type": "generated",
160-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/connection/apiv1beta1",
160+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/connection/apiv1beta1",
161161
"release_level": "beta",
162162
"library_type": ""
163163
},
@@ -166,7 +166,7 @@
166166
"description": "BigQuery Data Transfer API",
167167
"language": "Go",
168168
"client_library_type": "generated",
169-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/datatransfer/apiv1",
169+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/datatransfer/apiv1",
170170
"release_level": "ga",
171171
"library_type": ""
172172
},
@@ -175,7 +175,7 @@
175175
"description": "BigQuery Reservation API",
176176
"language": "Go",
177177
"client_library_type": "generated",
178-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/reservation/apiv1",
178+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/reservation/apiv1",
179179
"release_level": "ga",
180180
"library_type": ""
181181
},
@@ -184,7 +184,7 @@
184184
"description": "BigQuery Reservation API",
185185
"language": "Go",
186186
"client_library_type": "generated",
187-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/reservation/apiv1beta1",
187+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/reservation/apiv1beta1",
188188
"release_level": "beta",
189189
"library_type": ""
190190
},
@@ -193,7 +193,7 @@
193193
"description": "BigQuery Storage API",
194194
"language": "Go",
195195
"client_library_type": "generated",
196-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/storage/apiv1",
196+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/storage/apiv1",
197197
"release_level": "ga",
198198
"library_type": ""
199199
},
@@ -202,7 +202,7 @@
202202
"description": "BigQuery Storage API",
203203
"language": "Go",
204204
"client_library_type": "generated",
205-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/storage/apiv1beta1",
205+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/storage/apiv1beta1",
206206
"release_level": "beta",
207207
"library_type": ""
208208
},
@@ -211,7 +211,7 @@
211211
"description": "BigQuery Storage API",
212212
"language": "Go",
213213
"client_library_type": "generated",
214-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/bigquery/storage/apiv1beta2",
214+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/bigquery/latest/storage/apiv1beta2",
215215
"release_level": "beta",
216216
"library_type": ""
217217
},
@@ -427,7 +427,7 @@
427427
"description": "Cloud Datastore API",
428428
"language": "Go",
429429
"client_library_type": "generated",
430-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/datastore/admin/apiv1",
430+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/datastore/latest/admin/apiv1",
431431
"release_level": "alpha",
432432
"library_type": ""
433433
},
@@ -562,7 +562,7 @@
562562
"description": "Cloud Firestore API",
563563
"language": "Go",
564564
"client_library_type": "generated",
565-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/firestore/apiv1",
565+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/firestore/latest/apiv1",
566566
"release_level": "ga",
567567
"library_type": ""
568568
},
@@ -571,7 +571,7 @@
571571
"description": "Cloud Firestore API",
572572
"language": "Go",
573573
"client_library_type": "generated",
574-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/firestore/apiv1/admin",
574+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/firestore/latest/apiv1/admin",
575575
"release_level": "ga",
576576
"library_type": ""
577577
},
@@ -715,7 +715,7 @@
715715
"description": "Cloud Logging API",
716716
"language": "Go",
717717
"client_library_type": "generated",
718-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/logging/apiv2",
718+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/logging/latest/apiv2",
719719
"release_level": "ga",
720720
"library_type": ""
721721
},
@@ -958,7 +958,7 @@
958958
"description": "Cloud Pub/Sub API",
959959
"language": "Go",
960960
"client_library_type": "generated",
961-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/pubsub/apiv1",
961+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsub/latest/apiv1",
962962
"release_level": "ga",
963963
"library_type": ""
964964
},
@@ -976,7 +976,7 @@
976976
"description": "Pub/Sub Lite API",
977977
"language": "Go",
978978
"client_library_type": "generated",
979-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/pubsublite/apiv1",
979+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/pubsublite/latest/apiv1",
980980
"release_level": "ga",
981981
"library_type": ""
982982
},
@@ -1237,7 +1237,7 @@
12371237
"description": "Cloud Spanner Database Admin API",
12381238
"language": "Go",
12391239
"client_library_type": "generated",
1240-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/spanner/admin/database/apiv1",
1240+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/admin/database/apiv1",
12411241
"release_level": "ga",
12421242
"library_type": ""
12431243
},
@@ -1246,7 +1246,7 @@
12461246
"description": "Cloud Spanner Instance Admin API",
12471247
"language": "Go",
12481248
"client_library_type": "generated",
1249-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/spanner/admin/instance/apiv1",
1249+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/admin/instance/apiv1",
12501250
"release_level": "ga",
12511251
"library_type": ""
12521252
},
@@ -1255,7 +1255,7 @@
12551255
"description": "Cloud Spanner API",
12561256
"language": "Go",
12571257
"client_library_type": "generated",
1258-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/spanner/apiv1",
1258+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/spanner/latest/apiv1",
12591259
"release_level": "ga",
12601260
"library_type": ""
12611261
},
@@ -1291,7 +1291,7 @@
12911291
"description": "Cloud Storage API",
12921292
"language": "Go",
12931293
"client_library_type": "generated",
1294-
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/latest/storage/internal/apiv2",
1294+
"docs_url": "https://cloud.google.com/go/docs/reference/cloud.google.com/go/storage/latest/internal/apiv2",
12951295
"release_level": "alpha",
12961296
"library_type": ""
12971297
},

internal/gapicgen/execv/gocmd/gocmd.go

+13
Original file line numberDiff line numberDiff line change
@@ -90,3 +90,16 @@ func Vet(dir string) error {
9090
c.Dir = dir
9191
return c.Run()
9292
}
93+
94+
// CurrentMod returns the module name of the provided directory.
95+
func CurrentMod(dir string) (string, error) {
96+
log.Println("detecting current module")
97+
c := execv.Command("go", "list", "-m")
98+
c.Dir = dir
99+
var out []byte
100+
var err error
101+
if out, err = c.Output(); err != nil {
102+
return "", err
103+
}
104+
return strings.TrimSpace(string(out)), nil
105+
}

internal/gapicgen/generator/gapics.go

+13-3
Original file line numberDiff line numberDiff line change
@@ -506,12 +506,16 @@ func (g *GapicGenerator) manifest(confs []*microgenConfig) error {
506506
if err := yaml.NewDecoder(yamlFile).Decode(&yamlConfig); err != nil {
507507
return fmt.Errorf("decode: %v", err)
508508
}
509+
docURL, err := docURL(g.googleCloudDir, conf.importPath)
510+
if err != nil {
511+
return fmt.Errorf("unable to build docs URL: %v", err)
512+
}
509513
entry := manifestEntry{
510514
DistributionName: conf.importPath,
511515
Description: yamlConfig.Title,
512516
Language: "Go",
513517
ClientLibraryType: "generated",
514-
DocsURL: docURL(conf.importPath),
518+
DocsURL: docURL,
515519
ReleaseLevel: conf.releaseLevel,
516520
}
517521
entries[conf.importPath] = entry
@@ -596,6 +600,12 @@ func (g *GapicGenerator) findModifiedDirs() ([]string, error) {
596600
return dirList, nil
597601
}
598602

599-
func docURL(importPath string) string {
600-
return "https://cloud.google.com/go/docs/reference/" + importPath[:20] + "latest/" + importPath[20:]
603+
func docURL(cloudDir, importPath string) (string, error) {
604+
suffix := strings.TrimPrefix(importPath, "cloud.google.com/go/")
605+
mod, err := gocmd.CurrentMod(filepath.Join(cloudDir, suffix))
606+
if err != nil {
607+
return "", err
608+
}
609+
pkgPath := strings.TrimPrefix(strings.TrimPrefix(importPath, mod), "/")
610+
return "https://cloud.google.com/go/docs/reference/" + mod + "/latest/" + pkgPath, nil
601611
}

0 commit comments

Comments
 (0)