Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(internal/gengapic): write snippet output to cloud.google.com/go #1313

Merged
merged 3 commits into from
Apr 21, 2023

Conversation

quartzmo
Copy link
Member

@quartzmo quartzmo commented Apr 20, 2023

  • Replaces most post-processor snippet handling in google-cloud-go by leveraging OwlBot, but without adding extra lines to the OwlBot configuration.
  • Write snippets at the top level of the google-cloud-go namespace.
  • With the following change to each entry in deep-copy-regex in .OwlBot.yaml, both client files and snippets are copied to the correct destinations in google-cloud-go. (deep-remove-regex will also need to be updated to remove deleted snippets.)
-  - source: /google/cloud/asset/v1/cloud.google.com/go/asset/apiv1
-    dest: /asset/apiv1
+  - source: /google/cloud/asset/v1/cloud.google.com/go/
+    dest: /
Results from `bazelisk build //google/cloud/asset/v1:gapi-cloud-asset-v1-go`
chrisdsmith@chrisdsmith:~/oss/googleapis$ tar -tzf bazel-bin/google/cloud/asset/v1/gapi-cloud-asset-v1-go.tar.gz
./cloud.google.com/
./cloud.google.com/go/
./cloud.google.com/go/asset/
./cloud.google.com/go/asset/apiv1/
./cloud.google.com/go/asset/apiv1/asset_client_example_test.go
./cloud.google.com/go/asset/apiv1/assetpb/
./cloud.google.com/go/asset/apiv1/assetpb/assets.pb.go
./cloud.google.com/go/asset/apiv1/assetpb/asset_service.pb.go
./cloud.google.com/go/asset/apiv1/doc.go
./cloud.google.com/go/asset/apiv1/asset_client.go
./cloud.google.com/go/internal/
./cloud.google.com/go/internal/generated/
./cloud.google.com/go/internal/generated/snippets/
./cloud.google.com/go/internal/generated/snippets/asset/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicyLongrunning/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicyLongrunning/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedContainers/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedContainers/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/SearchAllIamPolicies/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/SearchAllIamPolicies/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicy/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicy/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListAssets/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListAssets/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListSavedQueries/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListSavedQueries/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/CreateFeed/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/CreateFeed/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/DeleteSavedQuery/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/DeleteSavedQuery/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/BatchGetEffectiveIamPolicies/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/BatchGetEffectiveIamPolicies/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/QueryAssets/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/QueryAssets/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/DeleteFeed/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/DeleteFeed/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetSavedQuery/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetSavedQuery/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetFeed/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetFeed/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetOperation/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/GetOperation/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/UpdateSavedQuery/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/UpdateSavedQuery/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListFeeds/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ListFeeds/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedAssets/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedAssets/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/UpdateFeed/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/UpdateFeed/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/BatchGetAssetsHistory/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/BatchGetAssetsHistory/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicies/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicies/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ExportAssets/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/ExportAssets/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/CreateSavedQuery/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/CreateSavedQuery/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/SearchAllResources/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/SearchAllResources/main.go
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeMove/
./cloud.google.com/go/internal/generated/snippets/asset/apiv1/Client/AnalyzeMove/main.go
Results from `docker run --rm --user $(id -u):$(id -g) -v $GOOGLE_CLOUD_GO:/repo -v $GOOGLEAPIS/bazel-bin:/bazel-bin gcr.io/cloud-devrel-public-resources/owlbot-cli:latest copy-bazel-bin --config-file=.github/.OwlBot.yaml --source-dir /bazel-bin --dest /repo`
chrisdsmith@chrisdsmith:~/oss/google-cloud-go$ git status | grep asset/apiv1/
	modified:   asset/apiv1/asset_client.go
	modified:   asset/apiv1/assetpb/asset_service.pb.go
	modified:   asset/apiv1/assetpb/assets.pb.go
	modified:   asset/apiv1/doc.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicy/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeIamPolicyLongrunning/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeMove/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicies/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedAssets/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/AnalyzeOrgPolicyGovernedContainers/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/BatchGetAssetsHistory/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/BatchGetEffectiveIamPolicies/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/CreateFeed/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/CreateSavedQuery/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/DeleteFeed/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/DeleteSavedQuery/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/ExportAssets/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/GetFeed/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/GetOperation/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/GetSavedQuery/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/ListAssets/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/ListFeeds/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/ListSavedQueries/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/QueryAssets/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/SearchAllIamPolicies/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/SearchAllResources/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/UpdateFeed/main.go
	modified:   internal/generated/snippets/asset/apiv1/Client/UpdateSavedQuery/main.go
	modified:   internal/generated/snippets/asset/apiv1/snippet_metadata.google.cloud.asset.v1.json

* Write snippets at the top level of the google-cloud-go namespace.
@quartzmo
Copy link
Member Author

Draft, pending manual testing with OwlBot copy-bazel-bin.

Copy link
Collaborator

@noahdietz noahdietz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome change, love the helper method.

Comment on lines +141 to +149
func (g *generator) snippetsOutDir() string {
if strings.Contains(g.opts.pkgPath, "cloud.google.com/go/") {
// Write snippet metadata at the top level of the google-cloud-go namespace, not at the client package.
// This matches the destination directory structure in google-cloud-go.
pkg := strings.TrimPrefix(g.opts.pkgPath, "cloud.google.com/go/")
return filepath.Join("cloud.google.com/go", "internal", "generated", "snippets", filepath.FromSlash(pkg))
}
return filepath.Join(g.opts.outDir, "internal", "snippets")
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great idea, Chris.

@quartzmo quartzmo marked this pull request as ready for review April 21, 2023 17:02
@quartzmo quartzmo requested review from a team as code owners April 21, 2023 17:02
Copy link
Member

@codyoss codyoss left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like it!

@quartzmo quartzmo merged commit dfc5ce2 into googleapis:main Apr 21, 2023
@quartzmo quartzmo deleted the snippets-out-dir branch April 21, 2023 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants