Skip to content

Commit 2bfdc95

Browse files
authored
chore(ci): switch genproto to gen list (#8420)
1 parent e36ec17 commit 2bfdc95

2 files changed

Lines changed: 108 additions & 86 deletions

File tree

internal/gapicgen/generator/genproto.go

Lines changed: 84 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -52,42 +52,87 @@ func NewGenprotoGenerator(c *Config) *GenprotoGenerator {
5252
}
5353
}
5454

55-
// TODO: consider flipping this to an allowlist
56-
var skipPrefixes = []string{
57-
"google.golang.org/genproto/googleapis/ads/",
58-
"google.golang.org/genproto/googleapis/ai/",
59-
"google.golang.org/genproto/googleapis/analytics/",
60-
"google.golang.org/genproto/googleapis/api/servicecontrol/",
61-
"google.golang.org/genproto/googleapis/api/servicemanagement/",
62-
"google.golang.org/genproto/googleapis/api/serviceusage/",
63-
"google.golang.org/genproto/googleapis/appengine/",
64-
"google.golang.org/genproto/googleapis/area120/",
65-
"google.golang.org/genproto/googleapis/cloud/",
66-
"google.golang.org/genproto/googleapis/compute/",
67-
"google.golang.org/genproto/googleapis/dataflow/",
68-
"google.golang.org/genproto/googleapis/datastore/",
69-
"google.golang.org/genproto/googleapis/devtools/",
70-
"google.golang.org/genproto/googleapis/firestore/",
71-
"google.golang.org/genproto/googleapis/iam/",
72-
"google.golang.org/genproto/googleapis/identity/",
73-
"google.golang.org/genproto/googleapis/logging/",
74-
"google.golang.org/genproto/googleapis/longrunning/",
75-
"google.golang.org/genproto/googleapis/maps/",
76-
"google.golang.org/genproto/googleapis/monitoring/",
77-
"google.golang.org/genproto/googleapis/privacy/",
78-
"google.golang.org/genproto/googleapis/pubsub/",
79-
"google.golang.org/genproto/googleapis/spanner/",
80-
"google.golang.org/genproto/googleapis/storage/",
81-
"google.golang.org/genproto/googleapis/storagetransfer/",
82-
}
83-
84-
func hasPrefix(s string, prefixes []string) bool {
85-
for _, prefix := range prefixes {
86-
if strings.HasPrefix(s, prefix) {
87-
return true
88-
}
89-
}
90-
return false
55+
// Only the packages listed here are generated into go-genproto.
56+
var generateList = []string{
57+
"google.golang.org/genproto/googleapis/type/expr",
58+
"google.golang.org/genproto/googleapis/rpc/http",
59+
"google.golang.org/genproto/googleapis/type/latlng",
60+
"google.golang.org/genproto/googleapis/genomics/v1alpha2",
61+
"google.golang.org/genproto/googleapis/type/date",
62+
"google.golang.org/genproto/googleapis/type/date_time_range",
63+
"google.golang.org/genproto/googleapis/api/metric",
64+
"google.golang.org/genproto/googleapis/api/distribution",
65+
"google.golang.org/genproto/googleapis/chromeos/moblab/v1beta1",
66+
"google.golang.org/genproto/googleapis/apps/script/type/slides",
67+
"google.golang.org/genproto/googleapis/api/expr/v1beta1",
68+
"google.golang.org/genproto/googleapis/apps/script/type/gmail",
69+
"google.golang.org/genproto/googleapis/type/month",
70+
"google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/type",
71+
"google.golang.org/genproto/googleapis/apps/alertcenter/v1beta1",
72+
"google.golang.org/genproto/googleapis/api/error_reason",
73+
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1",
74+
"google.golang.org/genproto/googleapis/type/localized_text",
75+
"google.golang.org/genproto/googleapis/type/interval",
76+
"google.golang.org/genproto/googleapis/watcher/v1",
77+
"google.golang.org/genproto/googleapis/apps/script/type/docs",
78+
"google.golang.org/genproto/googleapis/api/monitoredres",
79+
"google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel",
80+
"google.golang.org/genproto/googleapis/type/dayofweek",
81+
"google.golang.org/genproto/googleapis/gapic/metadata",
82+
"google.golang.org/genproto/googleapis/chat/logging/v1",
83+
"google.golang.org/genproto/googleapis/api/expr/v1alpha1",
84+
"google.golang.org/genproto/googleapis/grafeas/v1",
85+
"google.golang.org/genproto/googleapis/type/quaternion",
86+
"google.golang.org/genproto/googleapis/type/calendarperiod",
87+
"google.golang.org/genproto/googleapis/type/date_range",
88+
"google.golang.org/genproto/googleapis/rpc/status",
89+
"google.golang.org/genproto/googleapis/rpc/context",
90+
"google.golang.org/genproto/googleapis/rpc/code",
91+
"google.golang.org/genproto/googleapis/api/visibility",
92+
"google.golang.org/genproto/googleapis/streetview/publish/v1",
93+
"google.golang.org/genproto/googleapis/type/money",
94+
"google.golang.org/genproto/googleapis/type/decimal",
95+
"google.golang.org/genproto/googleapis/type/color",
96+
"google.golang.org/genproto/googleapis/apps/drive/activity/v2",
97+
"google.golang.org/genproto/googleapis/apps/script/type/sheets",
98+
"google.golang.org/genproto/googleapis/type/timeofday",
99+
"google.golang.org/genproto/googleapis/home/graph/v1",
100+
"google.golang.org/genproto/googleapis/container/v1alpha1",
101+
"google.golang.org/genproto/googleapis/rpc/errdetails",
102+
"google.golang.org/genproto/googleapis/actions/sdk/v2",
103+
"google.golang.org/genproto/googleapis/networking/trafficdirector/type",
104+
"google.golang.org/genproto/googleapis/actions/sdk/v2/conversation",
105+
"google.golang.org/genproto/googleapis/home/enterprise/sdm/v1",
106+
"google.golang.org/genproto/googleapis/bytestream",
107+
"google.golang.org/genproto/googleapis/api",
108+
"google.golang.org/genproto/googleapis/apps/script/type",
109+
"google.golang.org/genproto/googleapis/api/configchange",
110+
"google.golang.org/genproto/googleapis/ccc/hosted/marketplace/v2",
111+
"google.golang.org/genproto/googleapis/chromeos/uidetection/v1",
112+
"google.golang.org/genproto/googleapis/type/datetime",
113+
"google.golang.org/genproto/googleapis/geo/type/viewport",
114+
"google.golang.org/genproto/googleapis/type/phone_number",
115+
"google.golang.org/genproto/googleapis/type/fraction",
116+
"google.golang.org/genproto/googleapis/apps/drive/labels/v2",
117+
"google.golang.org/genproto/googleapis/example/library/v1",
118+
"google.golang.org/genproto/googleapis/api/label",
119+
"google.golang.org/genproto/googleapis/bigtable/admin/v2",
120+
"google.golang.org/genproto/googleapis/api/httpbody",
121+
"google.golang.org/genproto/googleapis/partner/aistreams/v1alpha1",
122+
"google.golang.org/genproto/googleapis/apps/script/type/drive",
123+
"google.golang.org/genproto/googleapis/bigtable/v2",
124+
"google.golang.org/genproto/googleapis/search/partnerdataingestion/logging/v1",
125+
"google.golang.org/genproto/googleapis/apps/script/type/calendar",
126+
"google.golang.org/genproto/googleapis/rpc/context/attribute_context",
127+
"google.golang.org/genproto/googleapis/api/expr/conformance/v1alpha1",
128+
"google.golang.org/genproto/googleapis/actions/sdk/v2/interactionmodel/prompt",
129+
"google.golang.org/genproto/googleapis/api/serviceconfig",
130+
"google.golang.org/genproto/googleapis/apps/drive/labels/v2beta",
131+
"google.golang.org/genproto/googleapis/genomics/v1",
132+
"google.golang.org/genproto/googleapis/api/annotations",
133+
"google.golang.org/genproto/googleapis/type/postaladdress",
134+
"google.golang.org/genproto/googleapis/firebase/fcm/connection/v1alpha1",
135+
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2",
91136
}
92137

93138
// Regen regenerates the genproto repository.
@@ -135,9 +180,6 @@ func (g *GenprotoGenerator) Regen(ctx context.Context) error {
135180
log.Println("generating from protos")
136181
grp, _ := errgroup.WithContext(ctx)
137182
for pkg, fileNames := range pkgFiles {
138-
if !strings.HasPrefix(pkg, "google.golang.org/genproto") || hasPrefix(pkg, skipPrefixes) {
139-
continue
140-
}
141183
pk := pkg
142184
fn := fileNames
143185

@@ -167,11 +209,10 @@ func (g *GenprotoGenerator) Regen(ctx context.Context) error {
167209

168210
func filterPackages(in map[string][]string) (map[string][]string, error) {
169211
out := map[string][]string{}
170-
for pkg, fileNames := range in {
171-
if !strings.HasPrefix(pkg, "google.golang.org/genproto") || hasPrefix(pkg, skipPrefixes) {
172-
continue
212+
for _, allowed := range generateList {
213+
if files, present := in[allowed]; present {
214+
out[allowed] = files
173215
}
174-
out[pkg] = fileNames
175216
}
176217
if len(out) == 0 {
177218
return nil, ErrNoProcessing

internal/gapicgen/generator/genproto_test.go

Lines changed: 24 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -16,50 +16,31 @@ package generator
1616

1717
import "testing"
1818

19-
func TestHasPrefix(t *testing.T) {
20-
tests := []struct {
21-
s string
22-
prefixes []string
23-
want bool
24-
}{
25-
{
26-
s: "abc",
27-
prefixes: []string{"a"},
28-
want: true,
29-
},
30-
{
31-
s: "abc",
32-
prefixes: []string{"ab"},
33-
want: true,
34-
},
35-
{
36-
s: "abc",
37-
prefixes: []string{"abc"},
38-
want: true,
39-
},
40-
{
41-
s: "google.golang.org/genproto/googleapis/ads/googleads/v1/common",
42-
prefixes: []string{"google.golang.org/genproto/googleapis/ads"},
43-
want: true,
44-
},
45-
{
46-
s: "abc",
47-
prefixes: []string{"zzz"},
48-
want: false,
49-
},
50-
{
51-
s: "",
52-
prefixes: []string{"zzz"},
53-
want: false,
54-
},
55-
{
56-
s: "abc",
57-
want: false,
58-
},
19+
func TestFilterPackages(t *testing.T) {
20+
in := map[string][]string{
21+
"google.golang.org/genproto/googleapis/api/distribution": {"foo.proto"},
22+
"google.golang.org/genproto/googleapis/type/date_range": {"foo.proto"},
23+
"google.golang.org/genproto/googleapis/bigtable/admin/v2": {"foo.proto"},
24+
// Should be excluded.
25+
"google.golang.org/genproto/do/not/generate/me": {"foo.proto"},
5926
}
60-
for _, test := range tests {
61-
if got := hasPrefix(test.s, test.prefixes); got != test.want {
62-
t.Errorf("hasPrefix(%q, %q) got %v, want %v", test.s, test.prefixes, got, test.want)
27+
want := map[string][]string{
28+
"google.golang.org/genproto/googleapis/api/distribution": {"foo.proto"},
29+
"google.golang.org/genproto/googleapis/type/date_range": {"foo.proto"},
30+
"google.golang.org/genproto/googleapis/bigtable/admin/v2": {"foo.proto"},
31+
}
32+
out, err := filterPackages(in)
33+
if err != nil {
34+
t.Fatal(err)
35+
}
36+
37+
if len(out) != len(want) {
38+
t.Fatalf("expected %d packages got %d packages", len(want), len(out))
39+
}
40+
for p := range out {
41+
if _, ok := want[p]; !ok {
42+
t.Errorf("retained package that should have been removed: %q", p)
6343
}
6444
}
45+
6546
}

0 commit comments

Comments
 (0)