Full Code of bufbuild/buf for AI

main 185bc027f9e5 cached
2916 files
11.6 MB
3.2M tokens
17521 symbols
1 requests
Copy disabled (too large) Download .txt
Showing preview only (12,858K chars total). Download the full file to get everything.
Repository: bufbuild/buf
Branch: main
Commit: 185bc027f9e5
Files: 2916
Total size: 11.6 MB

Directory structure:
gitextract_uewxy4kd/

├── .bufstyle.yaml
├── .dockerignore
├── .envrc
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug-report.yml
│   │   ├── 2-feature-request.yml
│   │   └── 3-other.yml
│   ├── dependabot.yml
│   └── workflows/
│       ├── add-to-project.yaml
│       ├── back-to-development.yaml
│       ├── buf-binary-size.yaml
│       ├── buf-ci.yaml
│       ├── build-and-draft-release.yaml
│       ├── ci.yaml
│       ├── codeql.yaml
│       ├── create-release-pr.yaml
│       ├── docker-publish.yaml
│       ├── emergency-review-bypass.yaml
│       ├── make-upgrade.yaml
│       ├── notify-approval-bypass.yaml
│       ├── pr-title.yaml
│       ├── previous.yaml
│       ├── verify-changelog.yaml
│       └── windows.yaml
├── .gitignore
├── .godoclint.yaml
├── .golangci.yml
├── .pre-commit-hooks.yaml
├── CHANGELOG.md
├── Dockerfile.buf
├── LICENSE
├── Makefile
├── README.md
├── buf.yaml
├── cmd/
│   ├── buf/
│   │   ├── buf.go
│   │   ├── buf_test.go
│   │   ├── buf_unix_test.go
│   │   ├── imports_test.go
│   │   ├── internal/
│   │   │   ├── command/
│   │   │   │   ├── alpha/
│   │   │   │   │   ├── protoc/
│   │   │   │   │   │   ├── const_unix.go
│   │   │   │   │   │   ├── const_windows.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── flags.go
│   │   │   │   │   │   ├── flags_test.go
│   │   │   │   │   │   ├── flags_unix.go
│   │   │   │   │   │   ├── flags_windows.go
│   │   │   │   │   │   ├── internal/
│   │   │   │   │   │   │   ├── protoc-gen-insertion-point-receiver/
│   │   │   │   │   │   │   │   └── main.go
│   │   │   │   │   │   │   └── protoc-gen-insertion-point-writer/
│   │   │   │   │   │   │       └── main.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   ├── protoc.go
│   │   │   │   │   │   ├── protoc_test.go
│   │   │   │   │   │   └── testdata/
│   │   │   │   │   │       ├── 1/
│   │   │   │   │   │       │   └── flags.txt
│   │   │   │   │   │       ├── 2/
│   │   │   │   │   │       │   ├── flags1.txt
│   │   │   │   │   │       │   └── flags2.txt
│   │   │   │   │   │       ├── 3/
│   │   │   │   │   │       │   ├── flags1.txt
│   │   │   │   │   │       │   └── flags2.txt
│   │   │   │   │   │       ├── insertion/
│   │   │   │   │   │       │   └── test.proto
│   │   │   │   │   │       └── overlap/
│   │   │   │   │   │           ├── a/
│   │   │   │   │   │           │   ├── 1.proto
│   │   │   │   │   │           │   └── 1.txt
│   │   │   │   │   │           └── b/
│   │   │   │   │   │               ├── 1.txt
│   │   │   │   │   │               └── 2.proto
│   │   │   │   │   └── registry/
│   │   │   │   │       └── token/
│   │   │   │   │           ├── tokendelete/
│   │   │   │   │           │   └── tokendelete.go
│   │   │   │   │           ├── tokenget/
│   │   │   │   │           │   └── tokenget.go
│   │   │   │   │           └── tokenlist/
│   │   │   │   │               └── tokenlist.go
│   │   │   │   ├── beta/
│   │   │   │   │   ├── bufpluginv1/
│   │   │   │   │   │   └── bufpluginv1.go
│   │   │   │   │   ├── bufpluginv1beta1/
│   │   │   │   │   │   └── bufpluginv1beta1.go
│   │   │   │   │   ├── bufpluginv2/
│   │   │   │   │   │   └── bufpluginv2.go
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── internal.go
│   │   │   │   │   ├── price/
│   │   │   │   │   │   └── price.go
│   │   │   │   │   ├── registry/
│   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   ├── plugindelete/
│   │   │   │   │   │   │   │   └── plugindelete.go
│   │   │   │   │   │   │   └── pluginpush/
│   │   │   │   │   │   │       └── pluginpush.go
│   │   │   │   │   │   └── webhook/
│   │   │   │   │   │       ├── webhookcreate/
│   │   │   │   │   │       │   └── webhookcreate.go
│   │   │   │   │   │       ├── webhookdelete/
│   │   │   │   │   │       │   └── webhookdelete.go
│   │   │   │   │   │       └── webhooklist/
│   │   │   │   │   │           └── webhooklist.go
│   │   │   │   │   └── studioagent/
│   │   │   │   │       └── studioagent.go
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── breaking.go
│   │   │   │   │   ├── breaking_test.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       └── workspace_new_module/
│   │   │   │   │           ├── against/
│   │   │   │   │           │   ├── b/
│   │   │   │   │           │   │   └── b.proto
│   │   │   │   │           │   ├── buf.yaml
│   │   │   │   │           │   └── c/
│   │   │   │   │           │       └── c.proto
│   │   │   │   │           └── head/
│   │   │   │   │               ├── a/
│   │   │   │   │               │   └── a.proto
│   │   │   │   │               ├── b/
│   │   │   │   │               │   └── b.proto
│   │   │   │   │               ├── buf.yaml
│   │   │   │   │               └── c/
│   │   │   │   │                   └── c.proto
│   │   │   │   ├── build/
│   │   │   │   │   └── build.go
│   │   │   │   ├── config/
│   │   │   │   │   ├── configinit/
│   │   │   │   │   │   └── configinit.go
│   │   │   │   │   ├── configlsbreakingrules/
│   │   │   │   │   │   └── configlsbreakingrules.go
│   │   │   │   │   ├── configlslintrules/
│   │   │   │   │   │   └── configlslintrules.go
│   │   │   │   │   ├── configlsmodules/
│   │   │   │   │   │   └── configlsmodules.go
│   │   │   │   │   ├── configmigrate/
│   │   │   │   │   │   ├── configmigrate.go
│   │   │   │   │   │   ├── configmigrate_test.go
│   │   │   │   │   │   └── testdata/
│   │   │   │   │   │       ├── defaultv1/
│   │   │   │   │   │       │   ├── input/
│   │   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │   │       │   └── output/
│   │   │   │   │   │       │       └── buf.yaml
│   │   │   │   │   │       ├── defaultv1beta1/
│   │   │   │   │   │       │   ├── input/
│   │   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │   │       │   └── output/
│   │   │   │   │   │       │       └── buf.yaml
│   │   │   │   │   │       └── unknown/
│   │   │   │   │   │           └── input/
│   │   │   │   │   │               └── buf.yaml
│   │   │   │   │   └── internal/
│   │   │   │   │       └── internal.go
│   │   │   │   ├── convert/
│   │   │   │   │   ├── convert.go
│   │   │   │   │   ├── convert_test.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       └── convert/
│   │   │   │   │           ├── README.md
│   │   │   │   │           ├── bin_json/
│   │   │   │   │           │   ├── api.proto
│   │   │   │   │           │   ├── buf.proto
│   │   │   │   │           │   ├── buf.yaml
│   │   │   │   │           │   ├── duration.binpb
│   │   │   │   │           │   ├── duration.json
│   │   │   │   │           │   ├── duration.txtpb
│   │   │   │   │           │   ├── duration.yaml
│   │   │   │   │           │   ├── image.binpb
│   │   │   │   │           │   ├── image.json
│   │   │   │   │           │   ├── image.txtpb
│   │   │   │   │           │   ├── image.yaml
│   │   │   │   │           │   ├── payload.binpb
│   │   │   │   │           │   ├── payload.json
│   │   │   │   │           │   ├── payload.txtpb
│   │   │   │   │           │   └── payload.yaml
│   │   │   │   │           └── descriptor.plain.binpb
│   │   │   │   ├── curl/
│   │   │   │   │   └── curl.go
│   │   │   │   ├── dep/
│   │   │   │   │   ├── depgraph/
│   │   │   │   │   │   └── depgraph.go
│   │   │   │   │   ├── depprune/
│   │   │   │   │   │   └── depprune.go
│   │   │   │   │   ├── depupdate/
│   │   │   │   │   │   └── depupdate.go
│   │   │   │   │   └── internal/
│   │   │   │   │       └── internal.go
│   │   │   │   ├── export/
│   │   │   │   │   └── export.go
│   │   │   │   ├── format/
│   │   │   │   │   └── format.go
│   │   │   │   ├── generate/
│   │   │   │   │   ├── generate.go
│   │   │   │   │   ├── generate_test.go
│   │   │   │   │   ├── generate_unix_test.go
│   │   │   │   │   ├── generate_windows_test.go
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── protoc-gen-top-level-type-names-yaml/
│   │   │   │   │   │       └── main.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       ├── duplicate_plugins/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   └── buf.gen.yaml
│   │   │   │   │       ├── insertion/
│   │   │   │   │       │   └── test.proto
│   │   │   │   │       ├── insertion_point/
│   │   │   │   │       │   └── test.txt
│   │   │   │   │       ├── nested_insertion_point/
│   │   │   │   │       │   └── gen/
│   │   │   │   │       │       └── proto/
│   │   │   │   │       │           └── insertion/
│   │   │   │   │       │               └── test.txt
│   │   │   │   │       ├── paths/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   └── a.proto
│   │   │   │   │       │   │   ├── v2/
│   │   │   │   │       │   │   │   └── a.proto
│   │   │   │   │       │   │   └── v3/
│   │   │   │   │       │   │       ├── a.proto
│   │   │   │   │       │   │       └── foo/
│   │   │   │   │       │   │           ├── bar.proto
│   │   │   │   │       │   │           └── foo.proto
│   │   │   │   │       │   ├── b/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── b.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── protofileref/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       ├── a.proto
│   │   │   │   │       │   │       └── b.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── simple/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── a.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── types/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── a.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── v2/
│   │   │   │   │       │   ├── duplicate_plugins/
│   │   │   │   │       │   │   ├── a.proto
│   │   │   │   │       │   │   └── buf.gen.yaml
│   │   │   │   │       │   ├── local_plugin/
│   │   │   │   │       │   │   ├── a/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── a.proto
│   │   │   │   │       │   │   ├── b/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── b.proto
│   │   │   │   │       │   │   ├── buf.basic.gen.yaml
│   │   │   │   │       │   │   ├── buf.exclude.paths.gen.yaml
│   │   │   │   │       │   │   ├── buf.paths.gen.yaml
│   │   │   │   │       │   │   ├── buf.types.gen.yaml
│   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │       │   ├── simple/
│   │   │   │   │       │   │   ├── a/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── a.proto
│   │   │   │   │       │   │   ├── buf.gen.yaml
│   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │       │   └── types/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   └── v1/
│   │   │   │   │       │       │       └── a.proto
│   │   │   │   │       │       ├── b/
│   │   │   │   │       │       │   └── v1/
│   │   │   │   │       │       │       └── b.proto
│   │   │   │   │       │       ├── buf.gen.invalid.yaml
│   │   │   │   │       │       ├── buf.gen.yaml
│   │   │   │   │       │       ├── buf.yaml
│   │   │   │   │       │       └── pkg/
│   │   │   │   │       │           └── v1/
│   │   │   │   │       │               └── options.proto
│   │   │   │   │       └── workspace/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   ├── v1/
│   │   │   │   │           │   │   └── a.proto
│   │   │   │   │           │   ├── v2/
│   │   │   │   │           │   │   └── a.proto
│   │   │   │   │           │   └── v3/
│   │   │   │   │           │       ├── a.proto
│   │   │   │   │           │       └── foo/
│   │   │   │   │           │           ├── bar.proto
│   │   │   │   │           │           └── foo.proto
│   │   │   │   │           ├── b/
│   │   │   │   │           │   └── v1/
│   │   │   │   │           │       ├── b.proto
│   │   │   │   │           │       └── foo.proto
│   │   │   │   │           ├── buf.gen.yaml
│   │   │   │   │           └── buf.work.yaml
│   │   │   │   ├── lint/
│   │   │   │   │   └── lint.go
│   │   │   │   ├── lsfiles/
│   │   │   │   │   └── lsfiles.go
│   │   │   │   ├── lsp/
│   │   │   │   │   └── lspserve/
│   │   │   │   │       └── lspserve.go
│   │   │   │   ├── mod/
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── internal.go
│   │   │   │   │   ├── modlsbreakingrules/
│   │   │   │   │   │   └── modlsbreakingrules.go
│   │   │   │   │   ├── modlslintrules/
│   │   │   │   │   │   └── modlslintrules.go
│   │   │   │   │   └── modopen/
│   │   │   │   │       └── modopen.go
│   │   │   │   ├── plugin/
│   │   │   │   │   ├── pluginprune/
│   │   │   │   │   │   └── pluginprune.go
│   │   │   │   │   ├── pluginpush/
│   │   │   │   │   │   └── pluginpush.go
│   │   │   │   │   └── pluginupdate/
│   │   │   │   │       └── pluginupdate.go
│   │   │   │   ├── policy/
│   │   │   │   │   ├── policyprune/
│   │   │   │   │   │   └── policyprune.go
│   │   │   │   │   ├── policypush/
│   │   │   │   │   │   └── policypush.go
│   │   │   │   │   └── policyupdate/
│   │   │   │   │       └── policyupdate.go
│   │   │   │   ├── push/
│   │   │   │   │   └── push.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── module/
│   │   │   │   │   │   ├── modulecommit/
│   │   │   │   │   │   │   ├── modulecommitaddlabel/
│   │   │   │   │   │   │   │   └── modulecommitaddlabel.go
│   │   │   │   │   │   │   ├── modulecommitinfo/
│   │   │   │   │   │   │   │   └── modulecommitinfo.go
│   │   │   │   │   │   │   ├── modulecommitlist/
│   │   │   │   │   │   │   │   └── modulecommitlist.go
│   │   │   │   │   │   │   └── modulecommitresolve/
│   │   │   │   │   │   │       └── modulecommitresolve.go
│   │   │   │   │   │   ├── modulecreate/
│   │   │   │   │   │   │   └── modulecreate.go
│   │   │   │   │   │   ├── moduledelete/
│   │   │   │   │   │   │   └── moduledelete.go
│   │   │   │   │   │   ├── moduledeprecate/
│   │   │   │   │   │   │   └── moduledeprecate.go
│   │   │   │   │   │   ├── moduleinfo/
│   │   │   │   │   │   │   └── moduleinfo.go
│   │   │   │   │   │   ├── modulelabel/
│   │   │   │   │   │   │   ├── modulelabelarchive/
│   │   │   │   │   │   │   │   └── modulelabelarchive.go
│   │   │   │   │   │   │   ├── modulelabelinfo/
│   │   │   │   │   │   │   │   └── modulelabelinfo.go
│   │   │   │   │   │   │   ├── modulelabellist/
│   │   │   │   │   │   │   │   └── modulelabellist.go
│   │   │   │   │   │   │   └── modulelabelunarchive/
│   │   │   │   │   │   │       └── modulelabelunarchive.go
│   │   │   │   │   │   ├── modulesettings/
│   │   │   │   │   │   │   └── modulesettingsupdate/
│   │   │   │   │   │   │       └── modulesettingsupdate.go
│   │   │   │   │   │   └── moduleundeprecate/
│   │   │   │   │   │       └── moduleundeprecate.go
│   │   │   │   │   ├── organization/
│   │   │   │   │   │   ├── organizationcreate/
│   │   │   │   │   │   │   └── organizationcreate.go
│   │   │   │   │   │   ├── organizationdelete/
│   │   │   │   │   │   │   └── organizationdelete.go
│   │   │   │   │   │   ├── organizationinfo/
│   │   │   │   │   │   │   └── organizationinfo.go
│   │   │   │   │   │   └── organizationupdate/
│   │   │   │   │   │       └── organizationupdate.go
│   │   │   │   │   ├── plugin/
│   │   │   │   │   │   ├── plugincommit/
│   │   │   │   │   │   │   ├── plugincommitaddlabel/
│   │   │   │   │   │   │   │   └── plugincommitaddlabel.go
│   │   │   │   │   │   │   ├── plugincommitinfo/
│   │   │   │   │   │   │   │   └── plugincommitinfo.go
│   │   │   │   │   │   │   ├── plugincommitlist/
│   │   │   │   │   │   │   │   └── plugincommitlist.go
│   │   │   │   │   │   │   └── plugincommitresolve/
│   │   │   │   │   │   │       └── plugincommitresolve.go
│   │   │   │   │   │   ├── plugincreate/
│   │   │   │   │   │   │   └── plugincreate.go
│   │   │   │   │   │   ├── plugindelete/
│   │   │   │   │   │   │   └── plugindelete.go
│   │   │   │   │   │   ├── plugininfo/
│   │   │   │   │   │   │   └── plugininfo.go
│   │   │   │   │   │   ├── pluginlabel/
│   │   │   │   │   │   │   ├── pluginlabelarchive/
│   │   │   │   │   │   │   │   └── pluginlabelarchive.go
│   │   │   │   │   │   │   ├── pluginlabelinfo/
│   │   │   │   │   │   │   │   └── pluginlabelinfo.go
│   │   │   │   │   │   │   ├── pluginlabellist/
│   │   │   │   │   │   │   │   └── pluginlabellist.go
│   │   │   │   │   │   │   └── pluginlabelunarchive/
│   │   │   │   │   │   │       └── pluginlabelunarchive.go
│   │   │   │   │   │   └── pluginsettings/
│   │   │   │   │   │       └── pluginsettingsupdate/
│   │   │   │   │   │           └── pluginsettingsupdate.go
│   │   │   │   │   ├── policy/
│   │   │   │   │   │   ├── policycommit/
│   │   │   │   │   │   │   ├── policycommitaddlabel/
│   │   │   │   │   │   │   │   └── policycommitaddlabel.go
│   │   │   │   │   │   │   ├── policycommitinfo/
│   │   │   │   │   │   │   │   └── policycommitinfo.go
│   │   │   │   │   │   │   ├── policycommitlist/
│   │   │   │   │   │   │   │   └── policycommitlist.go
│   │   │   │   │   │   │   └── policycommitresolve/
│   │   │   │   │   │   │       └── policycommitresolve.go
│   │   │   │   │   │   ├── policycreate/
│   │   │   │   │   │   │   └── policycreate.go
│   │   │   │   │   │   ├── policydelete/
│   │   │   │   │   │   │   └── policydelete.go
│   │   │   │   │   │   ├── policyinfo/
│   │   │   │   │   │   │   └── policyinfo.go
│   │   │   │   │   │   ├── policylabel/
│   │   │   │   │   │   │   ├── policylabelarchive/
│   │   │   │   │   │   │   │   └── policylabelarchive.go
│   │   │   │   │   │   │   ├── policylabelinfo/
│   │   │   │   │   │   │   │   └── policylabelinfo.go
│   │   │   │   │   │   │   ├── policylabellist/
│   │   │   │   │   │   │   │   └── policylabellist.go
│   │   │   │   │   │   │   └── policylabelunarchive/
│   │   │   │   │   │   │       └── policylabelunarchive.go
│   │   │   │   │   │   └── policysettings/
│   │   │   │   │   │       └── policysettingsupdate/
│   │   │   │   │   │           └── policysettingsupdate.go
│   │   │   │   │   ├── registrycc/
│   │   │   │   │   │   └── registrycc.go
│   │   │   │   │   ├── registrylogin/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── client_darwin.go
│   │   │   │   │   │   └── registrylogin.go
│   │   │   │   │   ├── registrylogout/
│   │   │   │   │   │   └── registrylogout.go
│   │   │   │   │   ├── sdk/
│   │   │   │   │   │   ├── sdkinfo/
│   │   │   │   │   │   │   └── sdkinfo.go
│   │   │   │   │   │   └── version/
│   │   │   │   │   │       └── version.go
│   │   │   │   │   └── whoami/
│   │   │   │   │       └── whoami.go
│   │   │   │   ├── source/
│   │   │   │   │   └── sourceedit/
│   │   │   │   │       └── sourceeditdeprecate/
│   │   │   │   │           └── sourceeditdeprecate.go
│   │   │   │   └── stats/
│   │   │   │       └── stats.go
│   │   │   └── internaltesting/
│   │   │       └── internaltesting.go
│   │   ├── testdata/
│   │   │   ├── check_plugins/
│   │   │   │   ├── current/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── proto/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   └── v1/
│   │   │   │   │   │   │       └── service.proto
│   │   │   │   │   │   └── common/
│   │   │   │   │   │       ├── v1/
│   │   │   │   │   │       │   ├── breaking.proto
│   │   │   │   │   │       │   └── common.proto
│   │   │   │   │   │       └── v1alpha1/
│   │   │   │   │   │           ├── breaking.proto
│   │   │   │   │   │           └── messages.proto
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── protovalidate/
│   │   │   │   │           └── buf/
│   │   │   │   │               └── validate/
│   │   │   │   │                   └── validate.proto
│   │   │   │   └── previous/
│   │   │   │       ├── buf.yaml
│   │   │   │       ├── proto/
│   │   │   │       │   ├── api/
│   │   │   │       │   │   └── v1/
│   │   │   │       │   │       └── service.proto
│   │   │   │       │   └── common/
│   │   │   │       │       ├── v1/
│   │   │   │       │       │   ├── breaking.proto
│   │   │   │       │       │   └── common.proto
│   │   │   │       │       └── v1alpha1/
│   │   │   │       │           ├── breaking.proto
│   │   │   │       │           └── messages.proto
│   │   │   │       └── vendor/
│   │   │   │           └── protovalidate/
│   │   │   │               └── buf/
│   │   │   │                   └── validate/
│   │   │   │                       └── validate.proto
│   │   │   ├── customoptions1/
│   │   │   │   └── a.proto
│   │   │   ├── export/
│   │   │   │   ├── another/
│   │   │   │   │   └── proto/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── another.proto
│   │   │   │   │       └── buf.yaml
│   │   │   │   ├── buf.work.yaml
│   │   │   │   ├── other/
│   │   │   │   │   └── proto/
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── buf.yaml
│   │   │   │   │       ├── request.proto
│   │   │   │   │       └── unimported.proto
│   │   │   │   └── proto/
│   │   │   │       ├── LICENSE
│   │   │   │       ├── README.md
│   │   │   │       ├── buf.yaml
│   │   │   │       └── rpc.proto
│   │   │   ├── fail/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── fail2/
│   │   │   │   ├── buf/
│   │   │   │   │   ├── buf.proto
│   │   │   │   │   ├── buf2.proto
│   │   │   │   │   └── buf3.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── fail_buf_mod/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.mod
│   │   │   ├── failarchive/
│   │   │   │   └── fail/
│   │   │   │       ├── buf/
│   │   │   │       │   └── buf.proto
│   │   │   │       └── buf.yaml
│   │   │   ├── format/
│   │   │   │   ├── complex/
│   │   │   │   │   └── complex.proto
│   │   │   │   ├── diff/
│   │   │   │   │   └── diff.proto
│   │   │   │   ├── invalid/
│   │   │   │   │   └── invalid.proto
│   │   │   │   └── simple/
│   │   │   │       └── simple.proto
│   │   │   ├── imports/
│   │   │   │   ├── cache/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       ├── people/
│   │   │   │   │                       │   └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── people/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── people1.proto
│   │   │   │   │                       │       │           └── people2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       ├── school/
│   │   │   │   │                       │   └── f4329b95720e46da93b5b4011a42ae7b/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── school/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── school1.proto
│   │   │   │   │                       │       │           └── school2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       └── students/
│   │   │   │   │                           └── 6c776ed5bee54462b06d31fb7f7c16b8/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── students/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           └── students.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── corrupted_cache_dep/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       ├── people/
│   │   │   │   │                       │   └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── people/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── people1.proto
│   │   │   │   │                       │       │           └── people2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       └── students/
│   │   │   │   │                           └── 6c776ed5bee54462b06d31fb7f7c16b8/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── students/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           └── students.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── corrupted_cache_file/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       └── people/
│   │   │   │   │                           └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── people/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           ├── people1.proto
│   │   │   │   │                               │           └── people2.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── failure/
│   │   │   │   │   ├── people/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── people/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           └── people1.proto
│   │   │   │   │   ├── school/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── school/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           ├── school1.proto
│   │   │   │   │   │           └── school2.proto
│   │   │   │   │   ├── students/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── students/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           └── students.proto
│   │   │   │   │   └── workspace/
│   │   │   │   │       └── transitive_imports/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   ├── a.proto
│   │   │   │   │           │   └── buf.yaml
│   │   │   │   │           ├── b/
│   │   │   │   │           │   ├── b.proto
│   │   │   │   │           │   └── buf.yaml
│   │   │   │   │           ├── buf.work.yaml
│   │   │   │   │           └── c/
│   │   │   │   │               ├── buf.yaml
│   │   │   │   │               └── c.proto
│   │   │   │   └── success/
│   │   │   │       ├── people/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── people/
│   │   │   │       │       └── v1/
│   │   │   │       │           ├── people1.proto
│   │   │   │       │           └── people2.proto
│   │   │   │       ├── school/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── school/
│   │   │   │       │       └── v1/
│   │   │   │       │           ├── school1.proto
│   │   │   │       │           └── school2.proto
│   │   │   │       ├── students/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── students/
│   │   │   │       │       └── v1/
│   │   │   │       │           └── students.proto
│   │   │   │       ├── wkt/
│   │   │   │       │   └── a.proto
│   │   │   │       └── workspace/
│   │   │   │           ├── unnamed_local_only_modules/
│   │   │   │           │   ├── a/
│   │   │   │           │   │   └── a.proto
│   │   │   │           │   ├── b/
│   │   │   │           │   │   └── b.proto
│   │   │   │           │   ├── buf.work.yaml
│   │   │   │           │   └── c/
│   │   │   │           │       └── c.proto
│   │   │   │           └── valid_explicit_deps/
│   │   │   │               ├── buf.work.yaml
│   │   │   │               ├── mod-a/
│   │   │   │               │   ├── a/
│   │   │   │               │   │   └── v1/
│   │   │   │               │   │       └── a.proto
│   │   │   │               │   └── buf.yaml
│   │   │   │               └── mod-b/
│   │   │   │                   ├── b/
│   │   │   │                   │   └── v1/
│   │   │   │                   │       └── b.proto
│   │   │   │                   └── buf.yaml
│   │   │   ├── lint_ignore_disabled/
│   │   │   │   ├── buf.yaml
│   │   │   │   ├── proto/
│   │   │   │   │   └── a.proto
│   │   │   │   └── vendor/
│   │   │   │       └── b.proto
│   │   │   ├── lsmodules/
│   │   │   │   ├── extraconfigv1/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── a.proto
│   │   │   │   ├── extraconfigv2/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── a.proto
│   │   │   │   ├── workspaceinvalid/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── buf.yaml
│   │   │   │   ├── workspacev1/
│   │   │   │   │   ├── a_v1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── b_no_name_v1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── c_v1beta1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── f_no_name_v1beta1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   └── not_pointed_by_workspace/
│   │   │   │   │       └── buf.yaml
│   │   │   │   └── workspacev2/
│   │   │   │       └── buf.yaml
│   │   │   ├── paths/
│   │   │   │   ├── a/
│   │   │   │   │   ├── v1/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── v2/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   └── v3/
│   │   │   │   │       ├── a.proto
│   │   │   │   │       └── foo/
│   │   │   │   │           ├── bar.proto
│   │   │   │   │           └── foo.proto
│   │   │   │   ├── b/
│   │   │   │   │   └── v1/
│   │   │   │   │       └── b.proto
│   │   │   │   ├── buf.gen.yaml
│   │   │   │   └── buf.yaml
│   │   │   ├── policy_list_rules/
│   │   │   │   ├── buf.yaml
│   │   │   │   ├── expected_ls_lint_rules_configured_only.txt
│   │   │   │   └── policy.yaml
│   │   │   ├── protofileref/
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── a/
│   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── foo.proto
│   │   │   │   │   └── b/
│   │   │   │   │       ├── bar.proto
│   │   │   │   │       ├── buf.yaml
│   │   │   │   │       └── foo.proto
│   │   │   │   ├── noworkspaceormodule/
│   │   │   │   │   ├── fail/
│   │   │   │   │   │   └── import.proto
│   │   │   │   │   └── success/
│   │   │   │   │       └── simple.proto
│   │   │   │   └── success/
│   │   │   │       ├── buf.proto
│   │   │   │       ├── buf.yaml
│   │   │   │       └── other.proto
│   │   │   ├── small_list_rules/
│   │   │   │   └── buf.yaml
│   │   │   ├── small_list_rules_yml/
│   │   │   │   └── config.yml
│   │   │   ├── success/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── successnobufyaml/
│   │   │   │   └── buf/
│   │   │   │       └── buf.proto
│   │   │   ├── symlinks/
│   │   │   │   └── a.proto
│   │   │   ├── workspace/
│   │   │   │   ├── fail/
│   │   │   │   │   ├── absolute/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       └── buf.work.yaml
│   │   │   │   │   ├── breaking/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── other/
│   │   │   │   │   │       └── proto/
│   │   │   │   │   │           ├── buf.yaml
│   │   │   │   │   │           └── request.proto
│   │   │   │   │   ├── diroverlap/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── duplicate/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── other/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       └── foo.proto
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       └── foo.proto
│   │   │   │   │   ├── invalidversion/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── jumpcontext/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── modulebreakingconfig/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       ├── a/
│   │   │   │   │   │   │       │   └── v1/
│   │   │   │   │   │   │       │       └── a.proto
│   │   │   │   │   │   │       └── buf.yaml
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── other/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       ├── buf.yaml
│   │   │   │   │   │   │       └── request.proto
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       ├── buf.yaml
│   │   │   │   │   │       └── rpc.proto
│   │   │   │   │   ├── nodirectories/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── notexist/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── noversion/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── overlap/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       └── buf/
│   │   │   │   │   │           └── buf.proto
│   │   │   │   │   ├── symlink/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── a.proto
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   └── v2/
│   │   │   │   │       ├── absolute/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── windows/
│   │   │   │   │       │       └── buf.yaml
│   │   │   │   │       ├── duplicate/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   ├── other/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── v1/
│   │   │   │   │       │   │           ├── foo.proto
│   │   │   │   │       │   │           └── inner/
│   │   │   │   │       │   │               └── bar.proto
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── v1/
│   │   │   │   │       │           ├── foo.proto
│   │   │   │   │       │           └── inner/
│   │   │   │   │       │               └── bar.proto
│   │   │   │   │       ├── jumpcontext/
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── modulebreakingconfig/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── a/
│   │   │   │   │       │   │           └── v1/
│   │   │   │   │       │   │               └── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   ├── other/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── request.proto
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── rpc.proto
│   │   │   │   │       ├── notexist/
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── overlap/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── buf/
│   │   │   │   │       │           └── buf.proto
│   │   │   │   │       └── symlink/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   └── a.proto
│   │   │   │   │           └── buf.yaml
│   │   │   │   └── success/
│   │   │   │       ├── breaking/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── detached/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── diamond/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── private/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── b.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── a.proto
│   │   │   │       │       └── buf.yaml
│   │   │   │       ├── dir/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── dir_buf_work/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── duplicate_dir_path/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   ├── proto/
│   │   │   │       │   │   ├── shared/
│   │   │   │       │   │   │   └── prefix/
│   │   │   │       │   │   │       ├── bar/
│   │   │   │       │   │   │       │   └── v1/
│   │   │   │       │   │   │       │       └── bar.proto
│   │   │   │       │   │   │       └── foo/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── foo.proto
│   │   │   │       │   │   └── shared1/
│   │   │   │       │   │       └── prefix/
│   │   │   │       │   │           ├── x/
│   │   │   │       │   │           │   └── x.proto
│   │   │   │       │   │           └── y/
│   │   │   │       │   │               └── y.proto
│   │   │   │       │   └── separate/
│   │   │   │       │       └── v1/
│   │   │   │       │           └── separate.proto
│   │   │   │       ├── duplicate_dir_path_overlapping_include/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       └── foo/
│   │   │   │       │           ├── bar/
│   │   │   │       │           │   ├── baz/
│   │   │   │       │           │   │   ├── v1/
│   │   │   │       │           │   │   │   └── baz.proto
│   │   │   │       │           │   │   └── v2/
│   │   │   │       │           │   │       └── baz.proto
│   │   │   │       │           │   ├── v1/
│   │   │   │       │           │   │   └── bar.proto
│   │   │   │       │           │   └── v2/
│   │   │   │       │           │       └── bar.proto
│   │   │   │       │           ├── v1/
│   │   │   │       │           │   └── foo.proto
│   │   │   │       │           └── v2/
│   │   │   │       │               └── foo.proto
│   │   │   │       ├── lock/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   ├── a.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   ├── b/
│   │   │   │       │   │   ├── b.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   └── buf.work.yaml
│   │   │   │       ├── nested/
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.work.yaml
│   │   │   │       │       ├── external/
│   │   │   │       │       │   ├── buf.yaml
│   │   │   │       │       │   └── external.proto
│   │   │   │       │       └── internal/
│   │   │   │       │           ├── buf.yaml
│   │   │   │       │           └── internal.proto
│   │   │   │       ├── noconfig/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── overlapping_dir_path/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── bar/
│   │   │   │       │       │   ├── bar.proto
│   │   │   │       │       │   └── internal/
│   │   │   │       │       │       └── bar_internal.proto
│   │   │   │       │       └── foo/
│   │   │   │       │           ├── foo.proto
│   │   │   │       │           └── internal/
│   │   │   │       │               └── foo_internal.proto
│   │   │   │       ├── protofileref/
│   │   │   │       │   ├── another/
│   │   │   │       │   │   ├── bar/
│   │   │   │       │   │   │   └── bar.proto
│   │   │   │       │   │   └── foo/
│   │   │   │       │   │       └── foo.proto
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       └── baz.proto
│   │   │   │       ├── roots/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── module1/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── a.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   └── module2/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       ├── other.buf.yaml
│   │   │   │       │       ├── root1/
│   │   │   │       │       │   └── b/
│   │   │   │       │       │       └── b.proto
│   │   │   │       │       ├── root2/
│   │   │   │       │       │   └── c/
│   │   │   │       │       │       └── c.proto
│   │   │   │       │       └── root3/
│   │   │   │       │           └── d/
│   │   │   │       │               └── d.proto
│   │   │   │       ├── shared_parent_dir/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   ├── parent/
│   │   │   │       │   │   ├── foo/
│   │   │   │       │   │   │   └── foo.proto
│   │   │   │       │   │   └── nextlayer/
│   │   │   │       │   │       ├── bar/
│   │   │   │       │   │       │   └── bar.proto
│   │   │   │       │   │       └── baz/
│   │   │   │       │   │           └── baz.proto
│   │   │   │       │   └── standalone/
│   │   │   │       │       ├── imported.proto
│   │   │   │       │       └── standalone.proto
│   │   │   │       ├── symlink/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── a.proto
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   └── c/
│   │   │   │       │       └── c.proto
│   │   │   │       ├── transitive/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── private/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── b.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── a.proto
│   │   │   │       │       └── buf.yaml
│   │   │   │       ├── v2/
│   │   │   │       │   ├── breaking/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── a/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── detached/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── diamond/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── c.proto
│   │   │   │       │   │   ├── private/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── b.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── dir/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── a/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── export/
│   │   │   │       │   │   ├── another/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       └── another.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       ├── LICENSE
│   │   │   │       │   │   │       ├── request.proto
│   │   │   │       │   │   │       └── unimported.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── LICENSE
│   │   │   │       │   │       ├── README.md
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── nested/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       ├── external/
│   │   │   │       │   │       │   └── external.proto
│   │   │   │       │   │       └── internal/
│   │   │   │       │   │           └── internal.proto
│   │   │   │       │   ├── symlink/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   └── c/
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── transitive/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── c.proto
│   │   │   │       │   │   ├── private/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── b.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── a.proto
│   │   │   │       │   └── wkt/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       ├── other/
│   │   │   │       │       │   └── proto/
│   │   │   │       │       │       └── c/
│   │   │   │       │       │           └── c.proto
│   │   │   │       │       └── proto/
│   │   │   │       │           ├── a/
│   │   │   │       │           │   └── a.proto
│   │   │   │       │           └── b/
│   │   │   │       │               └── b.proto
│   │   │   │       └── wkt/
│   │   │   │           ├── buf.work.yaml
│   │   │   │           ├── other/
│   │   │   │           │   └── proto/
│   │   │   │           │       └── c/
│   │   │   │           │           └── c.proto
│   │   │   │           └── proto/
│   │   │   │               ├── a/
│   │   │   │               │   └── a.proto
│   │   │   │               └── b/
│   │   │   │                   └── b.proto
│   │   │   └── workspace_subdir/
│   │   │       ├── buf.work.yaml
│   │   │       └── other/
│   │   │           └── proto/
│   │   │               ├── one/
│   │   │               │   ├── a.proto
│   │   │               │   └── b.proto
│   │   │               └── two/
│   │   │                   └── c.proto
│   │   ├── workspace_subdir_test.go
│   │   ├── workspace_test.go
│   │   ├── workspace_unix_test.go
│   │   └── workspace_windows_test.go
│   ├── protoc-gen-buf-breaking/
│   │   └── breaking.go
│   └── protoc-gen-buf-lint/
│       ├── lint.go
│       ├── lint_test.go
│       └── testdata/
│           ├── fail/
│           │   ├── buf/
│           │   │   ├── buf.proto
│           │   │   └── buf_two.proto
│           │   ├── something.yaml
│           │   └── v2.yaml
│           └── unused-imports/
│               └── buf/
│                   └── v1/
│                       ├── a.proto
│                       ├── b.proto
│                       ├── c.proto
│                       ├── d.proto
│                       ├── e.proto
│                       ├── enum_option.proto
│                       ├── enumvalue_option.proto
│                       ├── extrange_option.proto
│                       ├── f.proto
│                       ├── field_option.proto
│                       ├── file_option.proto
│                       ├── g.proto
│                       ├── method_option.proto
│                       ├── msg_option.proto
│                       ├── oneof_option.proto
│                       └── service_option.proto
├── etc/
│   ├── bandeps/
│   │   └── bandeps.yaml
│   ├── template/
│   │   ├── buf.go-client.gen.yaml
│   │   └── buf.go.gen.yaml
│   └── windows/
│       └── test.bash
├── go.mod
├── go.sum
├── make/
│   ├── buf/
│   │   ├── all.mk
│   │   ├── docker/
│   │   │   └── Dockerfile.release
│   │   └── scripts/
│   │       ├── binarysize.bash
│   │       ├── brew.sh
│   │       ├── checkandupdateprecommithooks.bash
│   │       ├── createreleasepr.bash
│   │       ├── draftrelease.bash
│   │       ├── gobacktodevelopment.bash
│   │       ├── newtodos.bash
│   │       ├── release.bash
│   │       └── verifychangelog.bash
│   └── go/
│       ├── base.mk
│       ├── bootstrap.mk
│       ├── buf.mk
│       ├── dep_bandeps.mk
│       ├── dep_buf.mk
│       ├── dep_bufprivateusage.mk
│       ├── dep_bufstyle.mk
│       ├── dep_git_ls_files_unstaged.mk
│       ├── dep_godoclint.mk
│       ├── dep_golangci_lint.mk
│       ├── dep_govulncheck.mk
│       ├── dep_jq.mk
│       ├── dep_license_header.mk
│       ├── dep_minisign.mk
│       ├── dep_protoc.mk
│       ├── dep_protoc_gen_connect_go.mk
│       ├── dep_protoc_gen_go.mk
│       ├── dep_yq.mk
│       ├── docker.mk
│       ├── go.mk
│       ├── license_header.mk
│       └── scripts/
│           ├── checkcmdpackage.bash
│           ├── checknodiffgenerated.bash
│           ├── checknolintlint.bash
│           ├── githubactionmakeupgrade.bash
│           └── pushall.bash
├── private/
│   ├── README.md
│   ├── buf/
│   │   ├── bufapp/
│   │   │   ├── bufapp.go
│   │   │   ├── bufapp_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufcli/
│   │   │   ├── buf_work_yaml_file.go
│   │   │   ├── buf_yaml_file.go
│   │   │   ├── bufcli.go
│   │   │   ├── cache.go
│   │   │   ├── config_ignore_yaml.go
│   │   │   ├── connectclient_config.go
│   │   │   ├── controller.go
│   │   │   ├── env.go
│   │   │   ├── errors.go
│   │   │   ├── flag_args_test.go
│   │   │   ├── flags_args.go
│   │   │   ├── graph_provider.go
│   │   │   ├── module_key_provider.go
│   │   │   ├── module_owner.go
│   │   │   ├── plugin_key_provider.go
│   │   │   ├── policy_key_provider.go
│   │   │   ├── prompt.go
│   │   │   ├── protoc_plugin.go
│   │   │   ├── rules.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufconvert/
│   │   │   ├── bufconvert.go
│   │   │   ├── bufconvert_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufctl/
│   │   │   ├── bufctl.go
│   │   │   ├── controller.go
│   │   │   ├── image_with_config.go
│   │   │   ├── option.go
│   │   │   └── usage.gen.go
│   │   ├── bufcurl/
│   │   │   ├── bufcurl.go
│   │   │   ├── headers.go
│   │   │   ├── invoker.go
│   │   │   ├── invoker_test.go
│   │   │   ├── io.go
│   │   │   ├── reflection_resolver.go
│   │   │   ├── resolver.go
│   │   │   ├── testdata/
│   │   │   │   ├── test.proto
│   │   │   │   └── testdata.txt
│   │   │   ├── tls.go
│   │   │   ├── usage.gen.go
│   │   │   └── verbose_transport.go
│   │   ├── buffetch/
│   │   │   ├── buffetch.go
│   │   │   ├── buffetch_test.go
│   │   │   ├── dir_ref.go
│   │   │   ├── format.go
│   │   │   ├── internal/
│   │   │   │   ├── archive_ref.go
│   │   │   │   ├── dir_ref.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── git_ref.go
│   │   │   │   ├── internal.go
│   │   │   │   ├── module_ref.go
│   │   │   │   ├── proto_file_ref.go
│   │   │   │   ├── proto_file_writer.go
│   │   │   │   ├── read_bucket_closer.go
│   │   │   │   ├── read_write_bucket.go
│   │   │   │   ├── reader.go
│   │   │   │   ├── reader_test.go
│   │   │   │   ├── ref_parser.go
│   │   │   │   ├── ref_parser_test.go
│   │   │   │   ├── single_ref.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── bufyaml/
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── two/
│   │   │   │   │   │           └── three/
│   │   │   │   │   │               ├── buf.work.yaml
│   │   │   │   │   │               └── four/
│   │   │   │   │   │                   └── five/
│   │   │   │   │   │                       ├── buf.yaml
│   │   │   │   │   │                       └── proto/
│   │   │   │   │   │                           └── foo.proto
│   │   │   │   │   ├── direndsinproto.proto/
│   │   │   │   │   │   └── empty
│   │   │   │   │   └── nobufyaml/
│   │   │   │   │       └── one/
│   │   │   │   │           └── two/
│   │   │   │   │               └── three/
│   │   │   │   │                   ├── buf.work.yaml
│   │   │   │   │                   └── four/
│   │   │   │   │                       └── five/
│   │   │   │   │                           └── proto/
│   │   │   │   │                               └── foo.proto
│   │   │   │   ├── usage.gen.go
│   │   │   │   ├── util.go
│   │   │   │   └── writer.go
│   │   │   ├── message_ref.go
│   │   │   ├── module_ref.go
│   │   │   ├── proto_file_ref.go
│   │   │   ├── proto_file_writer.go
│   │   │   ├── reader.go
│   │   │   ├── ref_parser.go
│   │   │   ├── ref_parser_test.go
│   │   │   ├── ref_parser_unix_test.go
│   │   │   ├── source_ref.go
│   │   │   ├── usage.gen.go
│   │   │   └── writer.go
│   │   ├── bufformat/
│   │   │   ├── bufformat.go
│   │   │   ├── deprecate.go
│   │   │   ├── deprecate_test.go
│   │   │   ├── formatter.go
│   │   │   ├── formatter_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── customoptions/
│   │   │   │   │   ├── options.golden
│   │   │   │   │   └── options.proto
│   │   │   │   ├── deprecate/
│   │   │   │   │   ├── already_deprecated.golden
│   │   │   │   │   ├── already_deprecated.proto
│   │   │   │   │   ├── enum_value_deprecation.golden
│   │   │   │   │   ├── enum_value_deprecation.proto
│   │   │   │   │   ├── field_deprecation.golden
│   │   │   │   │   ├── field_deprecation.proto
│   │   │   │   │   ├── nested_types.golden
│   │   │   │   │   └── nested_types.proto
│   │   │   │   ├── editions/
│   │   │   │   │   ├── 2023/
│   │   │   │   │   │   ├── editions.golden
│   │   │   │   │   │   └── editions.proto
│   │   │   │   │   └── 2024/
│   │   │   │   │       └── editions.proto
│   │   │   │   ├── header/
│   │   │   │   │   ├── nopackage.golden
│   │   │   │   │   ├── nopackage.proto
│   │   │   │   │   ├── nosyntax.golden
│   │   │   │   │   └── nosyntax.proto
│   │   │   │   ├── proto2/
│   │   │   │   │   ├── enum/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       ├── empty.proto
│   │   │   │   │   │       ├── enum.golden
│   │   │   │   │   │       ├── enum.proto
│   │   │   │   │   │       ├── enum_trailing_comment.golden
│   │   │   │   │   │       ├── enum_trailing_comment.proto
│   │   │   │   │   │       ├── enum_trailing_newline.golden
│   │   │   │   │   │       ├── enum_trailing_newline.proto
│   │   │   │   │   │       ├── enum_value_trailing_comment.golden
│   │   │   │   │   │       └── enum_value_trailing_comment.proto
│   │   │   │   │   ├── extend/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       └── empty.proto
│   │   │   │   │   ├── field/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       └── option.proto
│   │   │   │   │   ├── group/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       └── empty.proto
│   │   │   │   │   ├── header/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── import.golden
│   │   │   │   │   │       ├── import.proto
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       ├── option.proto
│   │   │   │   │   │       ├── package.golden
│   │   │   │   │   │       └── package.proto
│   │   │   │   │   ├── license/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── enum.golden
│   │   │   │   │   │       ├── enum.proto
│   │   │   │   │   │       ├── message.golden
│   │   │   │   │   │       └── message.proto
│   │   │   │   │   ├── message/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       ├── empty.proto
│   │   │   │   │   │       ├── message.golden
│   │   │   │   │   │       ├── message.proto
│   │   │   │   │   │       ├── message_extensions.golden
│   │   │   │   │   │       ├── message_extensions.proto
│   │   │   │   │   │       ├── message_group.golden
│   │   │   │   │   │       ├── message_group.proto
│   │   │   │   │   │       ├── message_import.golden
│   │   │   │   │   │       ├── message_import.proto
│   │   │   │   │   │       ├── message_options.golden
│   │   │   │   │   │       ├── message_options.proto
│   │   │   │   │   │       ├── multiple_nested.golden
│   │   │   │   │   │       ├── multiple_nested.proto
│   │   │   │   │   │       ├── nested.golden
│   │   │   │   │   │       ├── nested.proto
│   │   │   │   │   │       ├── sparse.golden
│   │   │   │   │   │       └── sparse.proto
│   │   │   │   │   ├── option/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       ├── option.proto
│   │   │   │   │   │       ├── option_array.golden
│   │   │   │   │   │       ├── option_array.proto
│   │   │   │   │   │       ├── option_complex_array_literal.golden
│   │   │   │   │   │       ├── option_complex_array_literal.proto
│   │   │   │   │   │       ├── option_compound_name.golden
│   │   │   │   │   │       ├── option_compound_name.proto
│   │   │   │   │   │       ├── option_message_field.golden
│   │   │   │   │   │       ├── option_message_field.proto
│   │   │   │   │   │       ├── option_name.golden
│   │   │   │   │   │       ├── option_name.proto
│   │   │   │   │   │       ├── single_compact_option.golden
│   │   │   │   │   │       └── single_compact_option.proto
│   │   │   │   │   ├── quotes/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── quotes.golden
│   │   │   │   │   │       └── quotes.proto
│   │   │   │   │   └── utf8/
│   │   │   │   │       └── v1/
│   │   │   │   │           ├── utf8.golden
│   │   │   │   │           └── utf8.proto
│   │   │   │   └── proto3/
│   │   │   │       ├── all/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── all.golden
│   │   │   │       │       └── all.proto
│   │   │   │       ├── block/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── block.golden
│   │   │   │       │       └── block.proto
│   │   │   │       ├── file/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── empty.golden
│   │   │   │       │       ├── empty.proto
│   │   │   │       │       ├── eof.golden
│   │   │   │       │       ├── eof.proto
│   │   │   │       │       ├── option.golden
│   │   │   │       │       └── option.proto
│   │   │   │       ├── header/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── header-block.golden
│   │   │   │       │       ├── header-block.proto
│   │   │   │       │       ├── header.golden
│   │   │   │       │       ├── header.proto
│   │   │   │       │       ├── unused_import.golden
│   │   │   │       │       └── unused_import.proto
│   │   │   │       ├── literal/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── compound_string.golden
│   │   │   │       │       ├── compound_string.proto
│   │   │   │       │       ├── literal.golden
│   │   │   │       │       ├── literal.proto
│   │   │   │       │       ├── literal_comments.golden
│   │   │   │       │       ├── literal_comments.proto
│   │   │   │       │       ├── special_literal.golden
│   │   │   │       │       └── special_literal.proto
│   │   │   │       ├── oneof/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── multiple.golden
│   │   │   │       │       ├── multiple.proto
│   │   │   │       │       ├── simple.golden
│   │   │   │       │       └── simple.proto
│   │   │   │       ├── range/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── range.golden
│   │   │   │       │       └── range.proto
│   │   │   │       └── service/
│   │   │   │           └── v1/
│   │   │   │               ├── empty.golden
│   │   │   │               ├── empty.proto
│   │   │   │               ├── empty_rpc.golden
│   │   │   │               ├── empty_rpc.proto
│   │   │   │               ├── service.golden
│   │   │   │               ├── service.proto
│   │   │   │               ├── service_options.golden
│   │   │   │               ├── service_options.proto
│   │   │   │               ├── simple.golden
│   │   │   │               └── simple.proto
│   │   │   └── usage.gen.go
│   │   ├── bufgen/
│   │   │   ├── bufgen.go
│   │   │   ├── features.go
│   │   │   ├── features_test.go
│   │   │   ├── generator.go
│   │   │   ├── testdata/
│   │   │   │   ├── v1/
│   │   │   │   │   ├── buf.gen.yaml
│   │   │   │   │   ├── gen_error1.yaml
│   │   │   │   │   ├── gen_error10.yaml
│   │   │   │   │   ├── gen_error11.yaml
│   │   │   │   │   ├── gen_error12.yaml
│   │   │   │   │   ├── gen_error13.yaml
│   │   │   │   │   ├── gen_error14.yaml
│   │   │   │   │   ├── gen_error2.yaml
│   │   │   │   │   ├── gen_error3.yaml
│   │   │   │   │   ├── gen_error4.yaml
│   │   │   │   │   ├── gen_error5.yaml
│   │   │   │   │   ├── gen_error6.yaml
│   │   │   │   │   ├── gen_error7.yaml
│   │   │   │   │   ├── gen_error8.yaml
│   │   │   │   │   ├── gen_error9.yaml
│   │   │   │   │   ├── gen_success1.json
│   │   │   │   │   ├── gen_success1.yaml
│   │   │   │   │   ├── gen_success2.json
│   │   │   │   │   ├── gen_success2.yaml
│   │   │   │   │   ├── gen_success3.json
│   │   │   │   │   ├── gen_success3.yaml
│   │   │   │   │   ├── gen_success3.yml
│   │   │   │   │   ├── gen_success4.json
│   │   │   │   │   ├── gen_success4.yaml
│   │   │   │   │   ├── gen_success4.yml
│   │   │   │   │   ├── gen_success5.json
│   │   │   │   │   ├── gen_success5.yaml
│   │   │   │   │   ├── gen_success5.yml
│   │   │   │   │   ├── gen_success6.json
│   │   │   │   │   ├── gen_success6.yaml
│   │   │   │   │   ├── gen_success6.yml
│   │   │   │   │   ├── gen_success7.json
│   │   │   │   │   ├── gen_success7.yaml
│   │   │   │   │   ├── gen_success7.yml
│   │   │   │   │   ├── gen_success8.json
│   │   │   │   │   ├── gen_success8.yaml
│   │   │   │   │   ├── gen_success8.yml
│   │   │   │   │   ├── gen_success9.json
│   │   │   │   │   ├── gen_success9.yaml
│   │   │   │   │   ├── gen_success9.yml
│   │   │   │   │   ├── go_gen_error1.yaml
│   │   │   │   │   ├── go_gen_error2.yaml
│   │   │   │   │   ├── go_gen_error3.yaml
│   │   │   │   │   ├── go_gen_error4.yaml
│   │   │   │   │   ├── go_gen_error5.yaml
│   │   │   │   │   ├── go_gen_error6.yaml
│   │   │   │   │   ├── go_gen_success1.json
│   │   │   │   │   └── go_gen_success1.yaml
│   │   │   │   └── v1beta1/
│   │   │   │       ├── buf.gen.yaml
│   │   │   │       ├── gen_error1.yaml
│   │   │   │       ├── gen_error2.yaml
│   │   │   │       ├── gen_error3.yaml
│   │   │   │       ├── gen_success1.json
│   │   │   │       ├── gen_success1.yaml
│   │   │   │       ├── gen_success2.json
│   │   │   │       ├── gen_success2.yaml
│   │   │   │       ├── gen_success3.json
│   │   │   │       ├── gen_success3.yaml
│   │   │   │       ├── gen_success3.yml
│   │   │   │       └── gen_success4_nopath.yaml
│   │   │   └── usage.gen.go
│   │   ├── buflsp/
│   │   │   ├── buflsp.go
│   │   │   ├── buflsp_test.go
│   │   │   ├── builtin.go
│   │   │   ├── cel.go
│   │   │   ├── completion.go
│   │   │   ├── completion_cel.go
│   │   │   ├── completion_cel_test.go
│   │   │   ├── completion_test.go
│   │   │   ├── definition_cel.go
│   │   │   ├── definition_cel_test.go
│   │   │   ├── definition_test.go
│   │   │   ├── deprecate.go
│   │   │   ├── deprecate_test.go
│   │   │   ├── diagnostic.go
│   │   │   ├── diagnostics_test.go
│   │   │   ├── document_highlight_test.go
│   │   │   ├── document_link.go
│   │   │   ├── document_link_test.go
│   │   │   ├── document_symbol_test.go
│   │   │   ├── file.go
│   │   │   ├── file_manager.go
│   │   │   ├── folding_range.go
│   │   │   ├── folding_range_test.go
│   │   │   ├── format_test.go
│   │   │   ├── hover_cel.go
│   │   │   ├── hover_cel_test.go
│   │   │   ├── hover_test.go
│   │   │   ├── image.go
│   │   │   ├── jsonrpc_wrappers.go
│   │   │   ├── lint_ignore.go
│   │   │   ├── lint_ignore_test.go
│   │   │   ├── nyi.go
│   │   │   ├── organize_imports.go
│   │   │   ├── organize_imports_test.go
│   │   │   ├── references_test.go
│   │   │   ├── rename_test.go
│   │   │   ├── semantic_tokens.go
│   │   │   ├── semantic_tokens_cel.go
│   │   │   ├── semantic_tokens_test.go
│   │   │   ├── server.go
│   │   │   ├── symbol.go
│   │   │   ├── symbol_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── completion/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_completion.proto
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── map_test.proto
│   │   │   │   │   ├── options_test.proto
│   │   │   │   │   ├── test.proto
│   │   │   │   │   └── update_test.proto
│   │   │   │   ├── definition/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_definition.proto
│   │   │   │   │   ├── definition.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── deprecate/
│   │   │   │   │   ├── edge_cases_test.proto
│   │   │   │   │   ├── message_test.proto
│   │   │   │   │   └── nested_test.proto
│   │   │   │   ├── diagnostics/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── syntax_error.proto
│   │   │   │   │   ├── unresolved_import.proto
│   │   │   │   │   ├── unused_import.proto
│   │   │   │   │   └── valid.proto
│   │   │   │   ├── document_highlight/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── highlight.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── document_link/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── main.proto
│   │   │   │   │   ├── types.proto
│   │   │   │   │   └── wkt.proto
│   │   │   │   ├── folding_range/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── comments.proto
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── folding.proto
│   │   │   │   │   ├── imports.proto
│   │   │   │   │   ├── minimal.proto
│   │   │   │   │   ├── nested.proto
│   │   │   │   │   └── options.proto
│   │   │   │   ├── format/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── formatted.proto
│   │   │   │   │   └── unformatted.proto
│   │   │   │   ├── hover/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_comprehensive.proto
│   │   │   │   │   ├── test.proto
│   │   │   │   │   ├── unused_import.proto
│   │   │   │   │   └── unused_import_no_blank_line.proto
│   │   │   │   ├── lint_ignore/
│   │   │   │   │   ├── already_ignored_test.proto
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── different_rule_test.proto
│   │   │   │   │   ├── field_test.proto
│   │   │   │   │   ├── filewide_test.proto
│   │   │   │   │   ├── multiple_test.proto
│   │   │   │   │   ├── nested_test.proto
│   │   │   │   │   ├── syntax_test.proto
│   │   │   │   │   ├── tabs_test.proto
│   │   │   │   │   └── trailing_comment_test.proto
│   │   │   │   ├── organize_imports/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── comments_test.proto
│   │   │   │   │   ├── duplicate_test.proto
│   │   │   │   │   ├── import_test.proto
│   │   │   │   │   ├── modifier_test.proto
│   │   │   │   │   ├── nochanges_test.proto
│   │   │   │   │   ├── noimports_test.proto
│   │   │   │   │   ├── nopackage_test.proto
│   │   │   │   │   ├── options/
│   │   │   │   │   │   └── custom_option.proto
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── existing_field.proto
│   │   │   │   │   │   ├── method_input.proto
│   │   │   │   │   │   ├── method_output.proto
│   │   │   │   │   │   ├── modifier_public.proto
│   │   │   │   │   │   ├── modifier_weak.proto
│   │   │   │   │   │   ├── nested_field.proto
│   │   │   │   │   │   ├── notattop_import.proto
│   │   │   │   │   │   └── toplevel_field.proto
│   │   │   │   │   └── unknown_test.proto
│   │   │   │   ├── references/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── references.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── rename/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── rename.proto
│   │   │   │   │   ├── subpkg/
│   │   │   │   │   │   └── options.proto
│   │   │   │   │   ├── types.proto
│   │   │   │   │   └── wkt.proto
│   │   │   │   ├── semantic_tokens/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel.proto
│   │   │   │   │   ├── cel_advanced.proto
│   │   │   │   │   ├── cel_invalid.proto
│   │   │   │   │   ├── cel_nested.proto
│   │   │   │   │   ├── comprehensive.proto
│   │   │   │   │   ├── edition.proto
│   │   │   │   │   └── proto2.proto
│   │   │   │   ├── symbols/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── symbols.proto
│   │   │   │   ├── type_definition/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── type_definition.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── uri@encode/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── test.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── vendor/
│   │   │   │   │   └── protovalidate/
│   │   │   │   │       └── buf/
│   │   │   │   │           └── validate/
│   │   │   │   │               └── validate.proto
│   │   │   │   └── workspace_symbols/
│   │   │   │       ├── buf.yaml
│   │   │   │       ├── types.proto
│   │   │   │       └── workspace_symbols.proto
│   │   │   ├── type_definition_test.go
│   │   │   ├── uri.go
│   │   │   ├── uri_test.go
│   │   │   ├── usage.gen.go
│   │   │   ├── workspace.go
│   │   │   └── workspace_symbol_test.go
│   │   ├── bufmigrate/
│   │   │   ├── bufmigrate.go
│   │   │   ├── migrate_builder.go
│   │   │   ├── migrator.go
│   │   │   └── usage.gen.go
│   │   ├── bufprint/
│   │   │   ├── bufprint.go
│   │   │   ├── curated_plugin_printer.go
│   │   │   ├── pagination_wrapper.go
│   │   │   ├── sdk_info_printer.go
│   │   │   ├── stats_printer.go
│   │   │   ├── tab_writer.go
│   │   │   ├── token_json_printer.go
│   │   │   ├── token_text_printer.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotoc/
│   │   │   ├── bufprotoc.go
│   │   │   ├── bufprotoc_test.go
│   │   │   ├── testdata/
│   │   │   │   └── basic/
│   │   │   │       ├── bsr/
│   │   │   │       │   └── buf.testing/
│   │   │   │       │       └── acme/
│   │   │   │       │           ├── date/
│   │   │   │       │           │   └── acme/
│   │   │   │       │           │       └── date/
│   │   │   │       │           │           └── v1/
│   │   │   │       │           │               └── date.proto
│   │   │   │       │           └── extension/
│   │   │   │       │               └── acme/
│   │   │   │       │                   └── extension/
│   │   │   │       │                       └── v1/
│   │   │   │       │                           └── extension.proto
│   │   │   │       └── workspacev1/
│   │   │   │           ├── common/
│   │   │   │           │   ├── geo/
│   │   │   │           │   │   └── proto/
│   │   │   │           │   │       └── acme/
│   │   │   │           │   │           └── geo/
│   │   │   │           │   │               └── v1/
│   │   │   │           │   │                   └── country_alpha_3_code.proto
│   │   │   │           │   └── money/
│   │   │   │           │       └── proto/
│   │   │   │           │           └── acme/
│   │   │   │           │               └── money/
│   │   │   │           │                   └── v1/
│   │   │   │           │                       ├── currency_code.proto
│   │   │   │           │                       └── money.proto
│   │   │   │           └── finance/
│   │   │   │               ├── bond/
│   │   │   │               │   └── proto/
│   │   │   │               │       ├── root1/
│   │   │   │               │       │   └── acme/
│   │   │   │               │       │       └── bond/
│   │   │   │               │       │           ├── excluded/
│   │   │   │               │       │           │   └── v1/
│   │   │   │               │       │           │       └── excluded.proto
│   │   │   │               │       │           └── real/
│   │   │   │               │       │               └── v1/
│   │   │   │               │       │                   └── bond.proto
│   │   │   │               │       └── root2/
│   │   │   │               │           └── acme/
│   │   │   │               │               └── bond/
│   │   │   │               │                   └── v2/
│   │   │   │               │                       └── bond.proto
│   │   │   │               └── portfolio/
│   │   │   │                   └── proto/
│   │   │   │                       └── acme/
│   │   │   │                           └── portfolio/
│   │   │   │                               └── v1/
│   │   │   │                                   └── portfolio.proto
│   │   │   └── usage.gen.go
│   │   ├── bufprotopluginexec/
│   │   │   ├── binary_handler.go
│   │   │   ├── bufprotopluginexec.go
│   │   │   ├── generator.go
│   │   │   ├── protoc_gen_swift_stderr_write_closer.go
│   │   │   ├── protoc_proxy_handler.go
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── util_darwin.go
│   │   │   ├── util_undarwin.go
│   │   │   ├── version.go
│   │   │   └── version_test.go
│   │   ├── bufstudioagent/
│   │   │   ├── buffer_codec.go
│   │   │   ├── bufstudioagent.go
│   │   │   ├── bufstudioagent_test.go
│   │   │   ├── plain_post_handler.go
│   │   │   └── usage.gen.go
│   │   ├── buftarget/
│   │   │   ├── bucket_targeting.go
│   │   │   ├── buftarget.go
│   │   │   ├── controlling_workspace.go
│   │   │   ├── terminate.go
│   │   │   └── usage.gen.go
│   │   ├── buftesting/
│   │   │   ├── buftesting.go
│   │   │   └── usage.gen.go
│   │   ├── bufwkt/
│   │   │   ├── bufwktstore/
│   │   │   │   ├── bufwktstore.go
│   │   │   │   ├── store.go
│   │   │   │   └── usage.gen.go
│   │   │   └── cmd/
│   │   │       └── wkt-go-data/
│   │   │           ├── main.go
│   │   │           └── usage.gen.go
│   │   └── bufworkspace/
│   │       ├── bufworkspace.go
│   │       ├── malformed_dep.go
│   │       ├── module_targeting.go
│   │       ├── option.go
│   │       ├── testdata/
│   │       │   └── basic/
│   │       │       ├── README.md
│   │       │       ├── bsr/
│   │       │       │   └── buf.testing/
│   │       │       │       └── acme/
│   │       │       │           ├── date/
│   │       │       │           │   └── acme/
│   │       │       │           │       └── date/
│   │       │       │           │           └── v1/
│   │       │       │           │               └── date.proto
│   │       │       │           └── extension/
│   │       │       │               └── acme/
│   │       │       │                   └── extension/
│   │       │       │                       └── v1/
│   │       │       │                           └── extension.proto
│   │       │       ├── scripts/
│   │       │       │   └── fakebuflock.bash
│   │       │       ├── workspace_undeclared_dep/
│   │       │       │   ├── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       └── bond/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── bond/
│   │       │       │                       └── v2/
│   │       │       │                           └── bond.proto
│   │       │       ├── workspace_unused_dep/
│   │       │       │   ├── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       └── bond/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── bond/
│   │       │       │                       └── v2/
│   │       │       │                           └── bond.proto
│   │       │       ├── workspacev1/
│   │       │       │   ├── LICENSE
│   │       │       │   ├── README.md
│   │       │       │   ├── buf.work.yaml
│   │       │       │   ├── common/
│   │       │       │   │   ├── geo/
│   │       │       │   │   │   └── proto/
│   │       │       │   │   │       ├── LICENSE
│   │       │       │   │   │       ├── acme/
│   │       │       │   │   │       │   └── geo/
│   │       │       │   │   │       │       └── v1/
│   │       │       │   │   │       │           └── country_alpha_3_code.proto
│   │       │       │   │   │       └── buf.yaml
│   │       │       │   │   └── money/
│   │       │       │   │       └── proto/
│   │       │       │   │           ├── acme/
│   │       │       │   │           │   └── money/
│   │       │       │   │           │       └── v1/
│   │       │       │   │           │           ├── currency_code.proto
│   │       │       │   │           │           └── money.proto
│   │       │       │   │           ├── buf.md
│   │       │       │   │           └── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       ├── bond/
│   │       │       │       │   └── proto/
│   │       │       │       │       ├── LICENSE
│   │       │       │       │       ├── README.md
│   │       │       │       │       ├── buf.yaml
│   │       │       │       │       ├── root1/
│   │       │       │       │       │   └── acme/
│   │       │       │       │       │       └── bond/
│   │       │       │       │       │           ├── excluded/
│   │       │       │       │       │           │   └── v1/
│   │       │       │       │       │           │       └── excluded.proto
│   │       │       │       │       │           └── real/
│   │       │       │       │       │               └── v1/
│   │       │       │       │       │                   └── bond.proto
│   │       │       │       │       └── root2/
│   │       │       │       │           └── acme/
│   │       │       │       │               └── bond/
│   │       │       │       │                   └── v2/
│   │       │       │       │                       └── bond.proto
│   │       │       │       └── portfolio/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── portfolio/
│   │       │       │                       └── v1/
│   │       │       │                           └── portfolio.proto
│   │       │       ├── workspacev2/
│   │       │       │   ├── LICENSE
│   │       │       │   ├── README.md
│   │       │       │   ├── buf.yaml
│   │       │       │   ├── common/
│   │       │       │   │   ├── geo/
│   │       │       │   │   │   └── proto/
│   │       │       │   │   │       ├── LICENSE
│   │       │       │   │   │       └── acme/
│   │       │       │   │   │           └── geo/
│   │       │       │   │   │               └── v1/
│   │       │       │   │   │                   └── country_alpha_3_code.proto
│   │       │       │   │   └── money/
│   │       │       │   │       └── proto/
│   │       │       │   │           ├── acme/
│   │       │       │   │           │   └── money/
│   │       │       │   │           │       └── v1/
│   │       │       │   │           │           ├── currency_code.proto
│   │       │       │   │           │           └── money.proto
│   │       │       │   │           └── buf.md
│   │       │       │   └── finance/
│   │       │       │       ├── bond/
│   │       │       │       │   └── proto/
│   │       │       │       │       ├── LICENSE
│   │       │       │       │       ├── README.md
│   │       │       │       │       └── acme/
│   │       │       │       │           └── bond/
│   │       │       │       │               ├── excluded/
│   │       │       │       │               │   └── v1/
│   │       │       │       │               │       └── excluded.proto
│   │       │       │       │               ├── real/
│   │       │       │       │               │   └── v1/
│   │       │       │       │               │       └── bond.proto
│   │       │       │       │               └── v2/
│   │       │       │       │                   └── bond.proto
│   │       │       │       └── portfolio/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── portfolio/
│   │       │       │                       └── v1/
│   │       │       │                           └── portfolio.proto
│   │       │       └── workspacev2_duplicate_path/
│   │       │           ├── buf.yaml
│   │       │           ├── proto/
│   │       │           │   ├── shared/
│   │       │           │   │   └── prefix/
│   │       │           │   │       ├── bar/
│   │       │           │   │       │   └── v1/
│   │       │           │   │       │       └── bar.proto
│   │       │           │   │       └── foo/
│   │       │           │   │           └── v1/
│   │       │           │   │               └── foo.proto
│   │       │           │   └── shared1/
│   │       │           │       └── prefix/
│   │       │           │           ├── x/
│   │       │           │           │   └── x.proto
│   │       │           │           └── y/
│   │       │           │               └── y.proto
│   │       │           └── separate/
│   │       │               └── v1/
│   │       │                   └── separate.proto
│   │       ├── usage.gen.go
│   │       ├── workspace.go
│   │       ├── workspace_dep_manager.go
│   │       ├── workspace_dep_manager_provider.go
│   │       ├── workspace_provider.go
│   │       ├── workspace_targeting.go
│   │       └── workspace_test.go
│   ├── bufpkg/
│   │   ├── bufanalysis/
│   │   │   ├── bufanalysis.go
│   │   │   ├── bufanalysistesting/
│   │   │   │   ├── bufanalysistesting.go
│   │   │   │   ├── bufanalysistesting_test.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── file_annotation.go
│   │   │   ├── file_annotation_set.go
│   │   │   ├── print.go
│   │   │   ├── usage.gen.go
│   │   │   └── util.go
│   │   ├── bufcheck/
│   │   │   ├── annotation.go
│   │   │   ├── breaking_test.go
│   │   │   ├── bufcheck.go
│   │   │   ├── bufcheckserver/
│   │   │   │   ├── bufcheckserver.go
│   │   │   │   ├── bufcheckserver_test.go
│   │   │   │   ├── internal/
│   │   │   │   │   ├── bufcheckserverbuild/
│   │   │   │   │   │   ├── bufcheckserverbuild.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   ├── bufcheckserverhandle/
│   │   │   │   │   │   ├── breaking.go
│   │   │   │   │   │   ├── breaking_util.go
│   │   │   │   │   │   ├── bufcheckserverhandle.go
│   │   │   │   │   │   ├── cardinality.go
│   │   │   │   │   │   ├── field_default.go
│   │   │   │   │   │   ├── field_default_test.go
│   │   │   │   │   │   ├── lint.go
│   │   │   │   │   │   ├── lint_util.go
│   │   │   │   │   │   ├── tag_ranges.go
│   │   │   │   │   │   ├── tag_ranges_test.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   ├── bufcheckserverutil/
│   │   │   │   │   │   ├── breaking.go
│   │   │   │   │   │   ├── bufcheckserverutil.go
│   │   │   │   │   │   ├── customfeatures/
│   │   │   │   │   │   │   └── customfeatures/
│   │   │   │   │   │   │       ├── customfeatures.go
│   │   │   │   │   │   │       ├── customfeatures_test.go
│   │   │   │   │   │   │       └── usage.gen.go
│   │   │   │   │   │   ├── input_file.go
│   │   │   │   │   │   ├── lint.go
│   │   │   │   │   │   ├── request.go
│   │   │   │   │   │   ├── response_writer.go
│   │   │   │   │   │   ├── rule_spec_builder.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   └── buflintvalidate/
│   │   │   │   │       ├── adder.go
│   │   │   │   │       ├── buflintvalidate.go
│   │   │   │   │       ├── cel.go
│   │   │   │   │       ├── cel_test.go
│   │   │   │   │       ├── field.go
│   │   │   │   │       ├── numeric.go
│   │   │   │   │       ├── predefined_rules.go
│   │   │   │   │       ├── usage.gen.go
│   │   │   │   │       └── util.go
│   │   │   │   ├── testdata/
│   │   │   │   │   └── lint/
│   │   │   │   │       └── service_pascal_case/
│   │   │   │   │           └── a.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── category.go
│   │   │   ├── check_client_spec.go
│   │   │   ├── client.go
│   │   │   ├── config.go
│   │   │   ├── file_info.go
│   │   │   ├── internal/
│   │   │   │   ├── bufcheckopt/
│   │   │   │   │   ├── bufcheckopt.go
│   │   │   │   │   └── usage.gen.go
│   │   │   │   └── cmd/
│   │   │   │       ├── buf-plugin-duplicate-category/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-duplicate-rule/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-panic/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-protovalidate-ext/
│   │   │   │       │   ├── handlers.go
│   │   │   │       │   ├── main.go
│   │   │   │       │   ├── usage.gen.go
│   │   │   │       │   └── util.go
│   │   │   │       ├── buf-plugin-rpc-ext/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       └── buf-plugin-suffix/
│   │   │   │           ├── handlers.go
│   │   │   │           ├── main.go
│   │   │   │           └── usage.gen.go
│   │   │   ├── lint_test.go
│   │   │   ├── multi_client.go
│   │   │   ├── multi_client_test.go
│   │   │   ├── options_config.go
│   │   │   ├── policy_config.go
│   │   │   ├── print.go
│   │   │   ├── rule.go
│   │   │   ├── rules_config.go
│   │   │   ├── runner_provider.go
│   │   │   ├── testdata/
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── current/
│   │   │   │   │   │   ├── breaking_custom_plugins/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_same_json_format/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_same_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete_unless_name_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete_unless_number_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_same_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_extension_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_extension_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete_unless_name_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete_unless_number_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_cpp_string_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── google/
│   │   │   │   │   │   │       └── protobuf/
│   │   │   │   │   │   │           └── cpp_features.proto
│   │   │   │   │   │   ├── breaking_field_same_ctype/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_default/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_java_utf8_validation/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   ├── 5.proto
│   │   │   │   │   │   │   ├── 6.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_json_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_jstype/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_label/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_oneof/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_utf8_validation/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_compatible_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_compatible_type/
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_json_compatible_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_json_compatible_type/
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_file_no_delete/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_no_delete_ignores/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_no_delete_unstable/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       └── a.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_file_same_package/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_same_syntax/
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── root/
│   │   │   │   │   │   │       ├── a/
│   │   │   │   │   │   │       │   ├── a.proto
│   │   │   │   │   │   │       │   └── b/
│   │   │   │   │   │   │       │       └── a_b.proto
│   │   │   │   │   │   │       ├── no_package.proto
│   │   │   │   │   │   │       └── sub/
│   │   │   │   │   │   │           └── a/
│   │   │   │   │   │   │               └── b/
│   │   │   │   │   │   │                   └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_delete_file/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       └── a.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_false/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │   │   │       └── 2.proto
│   │   │   │   │   │   │   ├── b/
│   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_true/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │   │   │       └── 2.proto
│   │   │   │   │   │   │   ├── b/
│   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_int_enum/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_enum/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_int/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_message/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_json_format/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_required_fields/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_oneof_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_extension_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_no_delete/
│   │   │   │   │   │   │   ├── a1.proto
│   │   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   │   ├── b1.proto
│   │   │   │   │   │   │   ├── b2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_service_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_policy_disablebuiltin/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── disablebuiltin.policy.yaml
│   │   │   │   │   │   ├── breaking_policy_empty/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── empty.policy.yaml
│   │   │   │   │   │   ├── breaking_policy_local/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   │   ├── buf.policy1.yaml
│   │   │   │   │   │   │   ├── buf.policy2.yaml
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_reserved_enum_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_reserved_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_rpc_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_rpc_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   └── breaking_service_no_delete/
│   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │       ├── 2.proto
│   │   │   │   │   │       └── buf.yaml
│   │   │   │   │   └── previous/
│   │   │   │   │       ├── breaking_custom_plugins/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── b.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_enum_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_same_json_format/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_enum_same_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete_unless_name_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete_unless_number_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_same_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_extension_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_extension_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete_unless_name_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete_unless_number_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_cpp_string_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── google/
│   │   │   │   │       │       └── protobuf/
│   │   │   │   │       │           └── cpp_features.proto
│   │   │   │   │       ├── breaking_field_same_ctype/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_default/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_java_utf8_validation/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   ├── 4.proto
│   │   │   │   │       │   ├── 5.proto
│   │   │   │   │       │   └── 6.proto
│   │   │   │   │       ├── breaking_field_same_json_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_jstype/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_label/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_oneof/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_utf8_validation/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_field_wire_compatible_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_wire_compatible_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_wire_json_compatible_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_wire_json_compatible_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_file_no_delete/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_no_delete_ignores/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   ├── b/
│   │   │   │   │       │       │   │   └── a_b.proto
│   │   │   │   │       │       │   └── c/
│   │   │   │   │       │       │       └── c.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_no_delete_unstable/
│   │   │   │   │       │   └── a/
│   │   │   │   │       │       └── v1beta1/
│   │   │   │   │       │           ├── a.proto
│   │   │   │   │       │           └── b.proto
│   │   │   │   │       ├── breaking_file_same_package/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_same_syntax/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_delete_file/
│   │   │   │   │       │   └── a/
│   │   │   │   │       │       └── v1beta1/
│   │   │   │   │       │           ├── a.proto
│   │   │   │   │       │           └── b.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_false/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   ├── 1.proto
│   │   │   │   │       │   │   │   └── 2.proto
│   │   │   │   │       │   │   └── v1beta1/
│   │   │   │   │       │   │       ├── 1.proto
│   │   │   │   │       │   │       └── 2.proto
│   │   │   │   │       │   └── b/
│   │   │   │   │       │       ├── 1.proto
│   │   │   │   │       │       └── 2.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_true/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   ├── 1.proto
│   │   │   │   │       │   │   │   └── 2.proto
│   │   │   │   │       │   │   └── v1beta1/
│   │   │   │   │       │   │       ├── 1.proto
│   │   │   │   │       │   │       └── 2.proto
│   │   │   │   │       │   └── b/
│   │   │   │   │       │       ├── 1.proto
│   │   │   │   │       │       └── 2.proto
│   │   │   │   │       ├── breaking_int_enum/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_enum/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_int/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_message/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_same_json_format/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_message_same_required_fields/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_oneof_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_package_extension_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_package_no_delete/
│   │   │   │   │       │   ├── a1.proto
│   │   │   │   │       │   ├── b1.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── c.proto
│   │   │   │   │       ├── breaking_package_service_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_policy_disablebuiltin/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── disablebuiltin.policy.yaml
│   │   │   │   │       ├── breaking_policy_empty/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── empty.policy.yaml
│   │   │   │   │       ├── breaking_policy_local/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── b.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_reserved_enum_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_reserved_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_rpc_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_rpc_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       └── breaking_service_no_delete/
│   │   │   │   │           ├── 1.proto
│   │   │   │   │           └── 2.proto
│   │   │   │   ├── lint/
│   │   │   │   │   ├── comment_ignores_cascade_off/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_cascade_on/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_multiple_fails/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_off/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_on/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_with_trailing_comment/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comments/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── custom_plugins/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── custom_wasm_plugins/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── directory_same_package/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       ├── c.proto
│   │   │   │   │   │       └── d.proto
│   │   │   │   │   ├── editions_go_features/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_first_value_zero/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_no_allow_alias/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_value_prefix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_value_upper_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_zero_value_suffix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_zero_value_suffix_custom/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_lower_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_no_descriptor/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_not_required/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── file_lower_snake_case/
│   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   ├── B.proto
│   │   │   │   │   │   ├── Foo.proto
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── aBc.proto
│   │   │   │   │   │   ├── aBc.txt
│   │   │   │   │   │   ├── ab.proto
│   │   │   │   │   │   ├── ab_c.proto
│   │   │   │   │   │   ├── ab_c_.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── fooBar.proto
│   │   │   │   │   ├── ignores1/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores2/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores3/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores4/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── import_no_public/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── one/
│   │   │   │   │   │   │   └── one.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── sub1.proto
│   │   │   │   │   │       └── sub2.proto
│   │   │   │   │   ├── import_used/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── one/
│   │   │   │   │   │   │   └── one.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── sub1.proto
│   │   │   │   │   │       └── sub2.proto
│   │   │   │   │   ├── lint_stable_package_import/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   ├── baz/
│   │   │   │   │   │   │   │   └── baz.proto
│   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   └── foo.proto
│   │   │   │   │   │   │   ├── v1alpha/
│   │   │   │   │   │   │   │   └── bar.proto
│   │   │   │   │   │   │   └── v2/
│   │   │   │   │   │   │       └── foo.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── message_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── oneof_lower_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── package_defined/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   ├── package_directory_match/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │       ├── a_b.proto
│   │   │   │   │   │   │       └── a_c.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       └── a/
│   │   │   │   │   │           └── b/
│   │   │   │   │   │               └── a_b.proto
│   │   │   │   │   ├── package_lower_snake_case/
│   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   ├── 5.proto
│   │   │   │   │   │   ├── 6.proto
│   │   │   │   │   │   ├── 7.proto
│   │   │   │   │   │   ├── 8.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   ├── package_no_import_cycle/
│   │   │   │   │   │   ├── a1.proto
│   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   ├── b1.proto
│   │   │   │   │   │   ├── b2.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── c1.proto
│   │   │   │   │   │   ├── c2.proto
│   │   │   │   │   │   ├── d1.proto
│   │   │   │   │   │   ├── d2.proto
│   │   │   │   │   │   ├── none1.proto
│   │   │   │   │   │   └── none2.proto
│   │   │   │   │   ├── package_same_directory/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── a.proto
│   │   │   │   │   ├── package_same_directory_no_package/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── no_package.proto
│   │   │   │   │   ├── package_same_option_value/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── a.proto
│   │   │   │   │   │       └── b.proto
│   │   │   │   │   ├── package_version_suffix/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── foo.proto
│   │   │   │   │   │   ├── foo_bar.proto
│   │   │   │   │   │   ├── foo_bar_v0beta1.proto
│   │   │   │   │   │   ├── foo_bar_v1.proto
│   │   │   │   │   │   ├── foo_bar_v1beta1.proto
│   │   │   │   │   │   ├── foo_bar_v1test.proto
│   │   │   │   │   │   ├── foo_bar_v1test_foo.proto
│   │   │   │   │   │   ├── foo_bar_v1testfoo.proto
│   │   │   │   │   │   ├── foo_bar_v2.proto
│   │   │   │   │   │   ├── foo_bar_v2beta0.proto
│   │   │   │   │   │   ├── foo_bar_vv1beta1.proto
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── v1.proto
│   │   │   │   │   ├── policy_disablebuiltin/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.policydisablebuiltin.yaml
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── policy_empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── empty.policy.yaml
│   │   │   │   │   ├── policy_ignores1/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores2/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores3/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores4/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_local/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── buf.policy1.yaml
│   │   │   │   │   │   ├── buf.policy2.yaml
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── protovalidate/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── proto/
│   │   │   │   │   │   │   ├── any.proto
│   │   │   │   │   │   │   ├── bool.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   ├── bytes.proto
│   │   │   │   │   │   │   ├── cel_expression.proto
│   │   │   │   │   │   │   ├── cel_field.proto
│   │   │   │   │   │   │   ├── cel_message.proto
│   │   │   │   │   │   │   ├── duration.proto
│   │   │   │   │   │   │   ├── enum.proto
│   │   │   │   │   │   │   ├── extension.proto
│   │   │   │   │   │   │   ├── field.proto
│   │   │   │   │   │   │   ├── field_mask.proto
│   │   │   │   │   │   │   ├── map.proto
│   │   │   │   │   │   │   ├── number.proto
│   │   │   │   │   │   │   ├── oneof.proto
│   │   │   │   │   │   │   ├── repeated.proto
│   │   │   │   │   │   │   ├── string.proto
│   │   │   │   │   │   │   └── timestamp.proto
│   │   │   │   │   │   └── vendor/
│   │   │   │   │   │       └── protovalidate/
│   │   │   │   │   │           └── buf/
│   │   │   │   │   │               └── validate/
│   │   │   │   │   │                   └── validate.proto
│   │   │   │   │   ├── protovalidate_predefined/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── import/
│   │   │   │   │   │   │   └── import.proto
│   │   │   │   │   │   ├── proto/
│   │   │   │   │   │   │   ├── rules.proto
│   │   │   │   │   │   │   └── test.proto
│   │   │   │   │   │   └── vendor/
│   │   │   │   │   │       └── protovalidate/
│   │   │   │   │   │           └── buf/
│   │   │   │   │   │               └── validate/
│   │   │   │   │   │                   └── validate.proto
│   │   │   │   │   ├── rpc_no_streaming/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_requests/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_requests_and_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_same/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_same_and_empty_request_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_standard_name/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_standard_name_allow_empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_suffix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_suffix_custom/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── syntax_specified/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   │   └── a3.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   └── v2/
│   │   │   │   │       └── ignores/
│   │   │   │   │           ├── buf.yaml
│   │   │   │   │           ├── ignores1/
│   │   │   │   │           │   ├── bar1/
│   │   │   │   │           │   │   ├── bar.proto
│   │   │   │   │           │   │   └── bar2.proto
│   │   │   │   │           │   ├── buf1.proto
│   │   │   │   │           │   └── foo1/
│   │   │   │   │           │       ├── bar/
│   │   │   │   │           │       │   └── bar.proto
│   │   │   │   │           │       ├── baz/
│   │   │   │   │           │       │   └── baz.proto
│   │   │   │   │           │       └── buf.proto
│   │   │   │   │           ├── ignores2/
│   │   │   │   │           │   ├── bar2/
│   │   │   │   │           │   │   ├── bar.proto
│   │   │   │   │           │   │   └── bar2.proto
│   │   │   │   │           │   ├── buf2.proto
│   │   │   │   │           │   └── foo2/
│   │   │   │   │           │       ├── bar/
│   │   │   │   │           │       │   └── bar.proto
│   │   │   │   │           │       ├── baz/
│   │   │   │   │           │       │   └── baz.proto
│   │   │   │   │           │       └── buf.proto
│   │   │   │   │           └── ignores3/
│   │   │   │   │               ├── bar3/
│   │   │   │   │               │   ├── bar.proto
│   │   │   │   │               │   └── bar2.proto
│   │   │   │   │               ├── buf3.proto
│   │   │   │   │               └── foo3/
│   │   │   │   │                   ├── bar/
│   │   │   │   │                   │   └── bar.proto
│   │   │   │   │                   ├── baz/
│   │   │   │   │                   │   └── baz.proto
│   │   │   │   │                   └── buf.proto
│   │   │   │   └── multi_client/
│   │   │   │       └── simple/
│   │   │   │           └── simple.proto
│   │   │   ├── usage.gen.go
│   │   │   └── util.go
│   │   ├── bufcobra/
│   │   │   ├── bufcobra.go
│   │   │   ├── config.go
│   │   │   ├── markdown.go
│   │   │   └── usage.gen.go
│   │   ├── bufconfig/
│   │   │   ├── breaking_config.go
│   │   │   ├── buf_gen_yaml_file.go
│   │   │   ├── buf_gen_yaml_file_test.go
│   │   │   ├── buf_lock_file.go
│   │   │   ├── buf_lock_file_test.go
│   │   │   ├── buf_work_yaml_file.go
│   │   │   ├── buf_work_yaml_file_test.go
│   │   │   ├── buf_yaml_file.go
│   │   │   ├── buf_yaml_file_test.go
│   │   │   ├── bufconfig.go
│   │   │   ├── check_config.go
│   │   │   ├── file.go
│   │   │   ├── file_info.go
│   │   │   ├── file_type.go
│   │   │   ├── file_version.go
│   │   │   ├── generate_config.go
│   │   │   ├── generate_config_test.go
│   │   │   ├── generate_managed_config.go
│   │   │   ├── generate_managed_option.go
│   │   │   ├── generate_plugin_config.go
│   │   │   ├── generate_type_config.go
│   │   │   ├── input_config.go
│   │   │   ├── lint_config.go
│   │   │   ├── module_config.go
│   │   │   ├── object_data.go
│   │   │   ├── paths.go
│   │   │   ├── paths_test.go
│   │   │   ├── plugin_config.go
│   │   │   ├── policy_config.go
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── walk.go
│   │   │   └── walk_test.go
│   │   ├── bufconnect/
│   │   │   ├── bufconnect.go
│   │   │   ├── errors.go
│   │   │   ├── errors_test.go
│   │   │   ├── interceptors.go
│   │   │   ├── interceptors_test.go
│   │   │   ├── netrc_token_provider.go
│   │   │   ├── static_token_provider.go
│   │   │   ├── static_token_provider_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufimage/
│   │   │   ├── bufimage.go
│   │   │   ├── bufimagefuzz/
│   │   │   │   ├── bufimagefuzz.go
│   │   │   │   ├── bufimagefuzz_unix_test.go
│   │   │   │   ├── corpus/
│   │   │   │   │   ├── alloptions.txtar
│   │   │   │   │   ├── ccoptions.txtar
│   │   │   │   │   ├── comment_ignores.txtar
│   │   │   │   │   ├── comment_ignores_cascade.txtar
│   │   │   │   │   ├── comments.txtar
│   │   │   │   │   ├── csharpoptions.txtar
│   │   │   │   │   ├── customoptions1.txtar
│   │   │   │   │   ├── customoptionserror1.txtar
│   │   │   │   │   ├── directory_same_package.txtar
│   │   │   │   │   ├── empty.txtar
│   │   │   │   │   ├── emptyoptions.txtar
│   │   │   │   │   ├── enum_first_value_zero.txtar
│   │   │   │   │   ├── enum_pascal_case.txtar
│   │   │   │   │   ├── enum_value_prefix.txtar
│   │   │   │   │   ├── enum_value_upper_snake_case.txtar
│   │   │   │   │   ├── enum_zero_value_suffix.txtar
│   │   │   │   │   ├── enum_zero_value_suffix_custom.txtar
│   │   │   │   │   ├── ex1.txtar
│   │   │   │   │   ├── ex2.txtar
│   │   │   │   │   ├── ex3.txtar
│   │   │   │   │   ├── field_lower_snake_case.txtar
│   │   │   │   │   ├── field_no_descriptor.txtar
│   │   │   │   │   ├── file_lower_snake_case.txtar
│   │   │   │   │   ├── import_no_public.txtar
│   │   │   │   │   ├── import_no_weak.txtar
│   │   │   │   │   ├── import_used.txtar
│   │   │   │   │   ├── javaoptions.txtar
│   │   │   │   │   ├── jsoptions.txtar
│   │   │   │   │   ├── message_pascal_case.txtar
│   │   │   │   │   ├── objcoptions.txtar
│   │   │   │   │   ├── oneof_lower_snake_case.txtar
│   │   │   │   │   ├── optionpanic.txtar
│   │   │   │   │   ├── package_defined.txtar
│   │   │   │   │   ├── package_directory_match.txtar
│   │   │   │   │   ├── package_lower_snake_case.txtar
│   │   │   │   │   ├── package_same_directory.txtar
│   │   │   │   │   ├── package_same_directory_no_package.txtar
│   │   │   │   │   ├── package_same_option_value.txtar
│   │   │   │   │   ├── package_version_suffix.txtar
│   │   │   │   │   ├── packageversion.txtar
│   │   │   │   │   ├── phpoptions.txtar
│   │   │   │   │   ├── proto3optional1.txtar
│   │   │   │   │   ├── rpc_no_streaming.txtar
│   │   │   │   │   ├── rpc_pascal_case.txtar
│   │   │   │   │   ├── rpc_standard_name.txtar
│   │   │   │   │   ├── rpc_standard_name_allow_empty.txtar
│   │   │   │   │   ├── rubyoptions.txtar
│   │   │   │   │   ├── semicolons.txtar
│   │   │   │   │   ├── service_pascal_case.txtar
│   │   │   │   │   ├── service_suffix.txtar
│   │   │   │   │   ├── service_suffix_custom.txtar
│   │   │   │   │   ├── simple.txtar
│   │   │   │   │   ├── syntax_specified.txtar
│   │   │   │   │   ├── test.txtar
│   │   │   │   │   └── wktimport.txtar
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimagemodify/
│   │   │   │   ├── bufimagemodify.go
│   │   │   │   ├── bufimagemodify_test.go
│   │   │   │   ├── field_option.go
│   │   │   │   ├── file_option.go
│   │   │   │   ├── internal/
│   │   │   │   │   ├── field_options_trie.go
│   │   │   │   │   ├── internal.go
│   │   │   │   │   ├── location_path_dfa.go
│   │   │   │   │   ├── marksweeper.go
│   │   │   │   │   └── usage.gen.go
│   │   │   │   ├── override.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── alloptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── bar/
│   │   │   │   │   │   ├── bar_all/
│   │   │   │   │   │   │   ├── with_package.proto
│   │   │   │   │   │   │   └── without_package.proto
│   │   │   │   │   │   └── bar_empty/
│   │   │   │   │   │       ├── with_package.proto
│   │   │   │   │   │       └── without_package.proto
│   │   │   │   │   ├── ccoptions/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── b.proto
│   │   │   │   │   ├── csharpoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── csharp.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── csharp.proto
│   │   │   │   │   │   │   └── override.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── csharp.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── csharp.proto
│   │   │   │   │   ├── emptyoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── foo/
│   │   │   │   │   │   ├── foo_all/
│   │   │   │   │   │   │   ├── with_package.proto
│   │   │   │   │   │   │   └── without_package.proto
│   │   │   │   │   │   └── foo_empty/
│   │   │   │   │   │       ├── with_package.proto
│   │   │   │   │   │       └── without_package.proto
│   │   │   │   │   ├── javaemptyoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── javaoptions/
│   │   │   │   │   │   ├── java_file.proto
│   │   │   │   │   │   └── override.proto
│   │   │   │   │   ├── jsoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── objcoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   ├── gpb/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── objc.proto
│   │   │   │   │   │   │   └── override.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   └── unversioned/
│   │   │   │   │   │       └── objc.proto
│   │   │   │   │   ├── packageversion/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── b.proto
│   │   │   │   │   ├── phpoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── reserved/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── override.proto
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── php.proto
│   │   │   │   │   ├── rubyoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── override.proto
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── ruby.proto
│   │   │   │   │   └── wktimport/
│   │   │   │   │       └── a.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimagetesting/
│   │   │   │   ├── bufimagetesting.go
│   │   │   │   ├── bufimagetesting_test.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimageutil/
│   │   │   │   ├── bufimageutil.go
│   │   │   │   ├── bufimageutil_test.go
│   │   │   │   ├── image_filter.go
│   │   │   │   ├── image_index.go
│   │   │   │   ├── source_paths_remap.go
│   │   │   │   ├── source_paths_remap_test.go
│   │   │   │   ├── tags.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── any/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c1.proto
│   │   │   │   │   │   ├── c1.txtar
│   │   │   │   │   │   ├── c2.proto
│   │   │   │   │   │   ├── c2.txtar
│   │   │   │   │   │   ├── c3.proto
│   │   │   │   │   │   ├── c3.txtar
│   │   │   │   │   │   ├── c4.proto
│   │   │   │   │   │   ├── c4.txtar
│   │   │   │   │   │   ├── d.proto
│   │   │   │   │   │   ├── d.txtar
│   │   │   │   │   │   ├── e.proto
│   │   │   │   │   │   └── e.txtar
│   │   │   │   │   ├── deps/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c.proto
│   │   │   │   │   │   ├── old.proto
│   │   │   │   │   │   ├── test.EnumA.txtar
│   │   │   │   │   │   ├── test.FieldA.txtar
│   │   │   │   │   │   ├── test.IncludeWithExcludeExt.txtar
│   │   │   │   │   │   ├── test.PublicOrder.txtar
│   │   │   │   │   │   └── test.proto
│   │   │   │   │   ├── empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c.proto
│   │   │   │   │   │   ├── d.proto
│   │   │   │   │   │   ├── empty.exclude.txtar
│   │   │   │   │   │   └── empty.include.txtar
│   │   │   │   │   ├── exclude_import_deps/
│   │   │   │   │   │   ├── dep.proto
│   │   │   │   │   │   ├── excluded.proto
│   │   │   │   │   │   ├── opt.proto
│   │   │   │   │   │   └── user.proto
│   │   │   │   │   ├── extensions/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── extensions-excluded.txtar
│   │   │   │   │   │   └── extensions.txtar
│   │   │   │   │   ├── importmods/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── noimports.txtar
│   │   │   │   │   │   ├── public.proto
│   │   │   │   │   │   ├── regular.proto
│   │   │   │   │   │   ├── regular_public.txtar
│   │   │   │   │   │   ├── regular_weak.txtar
│   │   │   │   │   │   ├── weak.proto
│   │   │   │   │   │   └── weak_public.txtar
│   │   │   │   │   ├── imports/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── bar.txtar
│   │   │   │   │   │   ├── foo.txtar
│   │   │   │   │   │   ├── foo_bar.txtar
│   │   │   │   │   │   └── options.proto
│   │   │   │   │   ├── nesting/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── enum.exclude.txtar
│   │   │   │   │   │   ├── enum.txtar
│   │   │   │   │   │   ├── message.exclude.txtar
│   │   │   │   │   │   ├── message.txtar
│   │   │   │   │   │   ├── mixed.txtar
│   │   │   │   │   │   ├── recursenested.exclude.txtar
│   │   │   │   │   │   ├── recursenested.txtar
│   │   │   │   │   │   ├── usingother.exclude.txtar
│   │   │   │   │   │   └── usingother.txtar
│   │   │   │   │   ├── oneofs/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── pkg.Foo.exclude-bar.txtar
│   │   │   │   │   │   └── pkg.Foo.exclude-partial.txtar
│   │   │   │   │   ├── options/
│   │   │   │   │   │   ├── Files.txtar
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── all-exclude-options.txtar
│   │   │   │   │   │   ├── all-with-Files.txtar
│   │   │   │   │   │   ├── all.exclude.txtar
│   │   │   │   │   │   ├── all.txtar
│   │   │   │   │   │   ├── options.foo.exclude.txtar
│   │   │   │   │   │   ├── options.foo.include.txtar
│   │   │   │   │   │   ├── options.only_file.txtar
│   │   │   │   │   │   ├── options.proto
│   │   │   │   │   │   ├── pkg.Foo.exclude.txtar
│   │   │   │   │   │   ├── pkg.Foo.txtar
│   │   │   │   │   │   ├── pkg.FooEnum.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooEnum.txtar
│   │   │   │   │   │   ├── pkg.FooService.Do.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooService.Do.txtar
│   │   │   │   │   │   ├── pkg.FooService.exclude-method-types.txtar
│   │   │   │   │   │   ├── pkg.FooService.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooService.mixed.txtar
│   │   │   │   │   │   ├── pkg.FooService.txtar
│   │   │   │   │   │   └── pkg.Pkg.exclude.txtar
│   │   │   │   │   ├── packages/
│   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   ├── baz1.proto
│   │   │   │   │   │   ├── baz2.proto
│   │   │   │   │   │   ├── foo.bar.baz.txtar
│   │   │   │   │   │   ├── foo.bar.txtar
│   │   │   │   │   │   ├── foo.proto
│   │   │   │   │   │   ├── foo.txtar
│   │   │   │   │   │   ├── nopackage.proto
│   │   │   │   │   │   ├── options.proto
│   │   │   │   │   │   ├── other.proto
│   │   │   │   │   │   └── root.txtar
│   │   │   │   │   ├── sourcecodeinfo/
│   │   │   │   │   │   ├── Bar.txtar
│   │   │   │   │   │   ├── Baz.txtar
│   │   │   │   │   │   ├── Do.txtar
│   │   │   │   │   │   ├── Foo+Ext.txtar
│   │   │   │   │   │   ├── Foo.txtar
│   │   │   │   │   │   ├── NestedFoo.txtar
│   │   │   │   │   │   ├── Quz.txtar
│   │   │   │   │   │   ├── Svc.txtar
│   │   │   │   │   │   ├── all.txtar
│   │   │   │   │   │   └── test.proto
│   │   │   │   │   └── unuseddeps/
│   │   │   │   │       ├── a.proto
│   │   │   │   │       ├── a.txtar
│   │   │   │   │       ├── ab.txtar
│   │   │   │   │       ├── b.proto
│   │   │   │   │       └── c.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── build_image.go
│   │   │   ├── build_image_test.go
│   │   │   ├── build_image_unix_test.go
│   │   │   ├── image.go
│   │   │   ├── image_file.go
│   │   │   ├── image_test.go
│   │   │   ├── import_tracker.go
│   │   │   ├── module_image_file_info.go
│   │   │   ├── parser_accessor_handler.go
│   │   │   ├── testdata/
│   │   │   │   ├── customoptions1/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── customoptionserror1/
│   │   │   │   │   ├── a.proto
│   │   │   │   │   └── b.proto
│   │   │   │   ├── cyclicimport/
│   │   │   │   │   ├── a/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   └── b/
│   │   │   │   │       └── b.proto
│   │   │   │   ├── duplicatesyntheticoneofs/
│   │   │   │   │   ├── a1.proto
│   │   │   │   │   └── a2.proto
│   │   │   │   ├── notamessagetype/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── optionpanic/
│   │   │   │   │   ├── options/
│   │   │   │   │   │   └── option.proto
│   │   │   │   │   └── proto/
│   │   │   │   │       └── test.proto
│   │   │   │   ├── proto3optional1/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── semicolons/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── spacebetweennumberandid/
│   │   │   │   │   └── a.proto
│   │   │   │   └── trailingcomments/
│   │   │   │       └── a.proto
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── util_test.go
│   │   │   ├── validate.go
│   │   │   └── well_known_type_image_file_info.go
│   │   ├── bufmodule/
│   │   │   ├── added_module.go
│   │   │   ├── bufmodule.go
│   │   │   ├── bufmodule_test.go
│   │   │   ├── bufmoduleapi/
│   │   │   │   ├── bufmoduleapi.go
│   │   │   │   ├── cmd/
│   │   │   │   │   └── buf-legacyfederation-go-data/
│   │   │   │   │       ├── main.go
│   │   │   │   │       └── usage.gen.go
│   │   │   │   ├── commit_provider.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── digest_for_commit_id.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── graph_provider.go
│   │   │   │   ├── module_data_provider.go
│   │   │   │   ├── module_key_for_universal_proto_commit.go
│   │   │   │   ├── module_key_provider.go
│   │   │   │   ├── registry.go
│   │   │   │   ├── universal_proto_commit.go
│   │   │   │   ├── universal_proto_content.go
│   │   │   │   ├── universal_proto_file.go
│   │   │   │   ├── uploader.go
│   │   │   │   ├── usage.gen.go
│   │   │   │   ├── v1_proto_module_provider.go
│   │   │   │   └── v1_proto_owner_provider.go
│   │   │   ├── bufmodulecache/
│   │   │   │   ├── base_provider.go
│   │   │   │   ├── bufmodulecache.go
│   │   │   │   ├── bufmodulecache_test.go
│   │   │   │   ├── commit_provider.go
│   │   │   │   ├── module_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufmoduledebug/
│   │   │   │   ├── bufmoduledebug.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufmodulestore/
│   │   │   │   ├── bufmodulestore.go
│   │   │   │   ├── commit_store.go
│   │   │   │   ├── commit_store_test.go
│   │   │   │   ├── module_data_store.go
│   │   │   │   ├── module_data_store_test.go
│   │   │   │   ├── usage.gen.go
│   │   │   │   └── util.go
│   │   │   ├── bufmoduletesting/
│   │   │   │   ├── bufmoduletesting.go
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── buf-digest/
│   │   │   │   │   │   ├── digest.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   └── buf-new-commit-id/
│   │   │   │   │       ├── newcommitid.go
│   │   │   │   │       └── usage.gen.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── commit_key.go
│   │   │   ├── commit_provider.go
│   │   │   ├── digest.go
│   │   │   ├── errors.go
│   │   │   ├── file.go
│   │   │   ├── file_info.go
│   │   │   ├── file_type.go
│   │   │   ├── graph_provider.go
│   │   │   ├── module.go
│   │   │   ├── module_data.go
│   │   │   ├── module_data_provider.go
│   │   │   ├── module_dep.go
│   │   │   ├── module_key.go
│   │   │   ├── module_key_provider.go
│   │   │   ├── module_read_bucket.go
│   │   │   ├── module_set.go
│   │   │   ├── module_set_builder.go
│   │   │   ├── module_visibility.go
│   │   │   ├── object_data.go
│   │   │   ├── paths.go
│   │   │   ├── proto_file_tracker.go
│   │   │   ├── registry_commit_id.go
│   │   │   ├── remote_dep.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufparse/
│   │   │   ├── bufparse.go
│   │   │   ├── errors.go
│   │   │   ├── full_name.go
│   │   │   ├── parse.go
│   │   │   ├── ref.go
│   │   │   └── usage.gen.go
│   │   ├── bufplugin/
│   │   │   ├── bufplugin.go
│   │   │   ├── bufpluginapi/
│   │   │   │   ├── bufpluginapi.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── plugin_data_provider.go
│   │   │   │   ├── plugin_key_provider.go
│   │   │   │   ├── uploader.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufplugincache/
│   │   │   │   ├── bufplugincache.go
│   │   │   │   ├── plugin_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpluginstore/
│   │   │   │   ├── bufpluginstore.go
│   │   │   │   ├── policy_data_store.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── digest.go
│   │   │   ├── errors.go
│   │   │   ├── plugin.go
│   │   │   ├── plugin_data.go
│   │   │   ├── plugin_data_provider.go
│   │   │   ├── plugin_key.go
│   │   │   ├── plugin_key_provider.go
│   │   │   ├── plugin_type.go
│   │   │   ├── plugin_visibility.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufpolicy/
│   │   │   ├── bufpolicy.go
│   │   │   ├── bufpolicyapi/
│   │   │   │   ├── bufpolicyapi.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── policy_data_provider.go
│   │   │   │   ├── policy_key_provider.go
│   │   │   │   ├── uploader.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicycache/
│   │   │   │   ├── bufpolicycache.go
│   │   │   │   ├── policy_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicyconfig/
│   │   │   │   ├── buf_policy_yaml_file.go
│   │   │   │   ├── buf_policy_yaml_file_test.go
│   │   │   │   ├── bufpolicyconfig.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── file.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicystore/
│   │   │   │   ├── buf_policy_store.go
│   │   │   │   ├── bufpolicystore.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── digest.go
│   │   │   ├── digest_test.go
│   │   │   ├── errors.go
│   │   │   ├── policy.go
│   │   │   ├── policy_config.go
│   │   │   ├── policy_config_test.go
│   │   │   ├── policy_data.go
│   │   │   ├── policy_data_provider.go
│   │   │   ├── policy_key.go
│   │   │   ├── policy_key_provider.go
│   │   │   ├── policy_plugin_data_provider.go
│   │   │   ├── policy_plugin_key_provider.go
│   │   │   ├── policy_visibility.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotocompile/
│   │   │   ├── bufprotocompile.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotoplugin/
│   │   │   ├── bufprotoplugin.go
│   │   │   ├── bufprotoplugin_test.go
│   │   │   ├── bufprotopluginos/
│   │   │   │   ├── bufprotopluginos.go
│   │   │   │   ├── cleaner.go
│   │   │   │   ├── response_writer.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── generator.go
│   │   │   ├── response_writer.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotosource/
│   │   │   ├── bufprotosource.go
│   │   │   ├── bufprotosource_test.go
│   │   │   ├── descriptor.go
│   │   │   ├── enum.go
│   │   │   ├── enum_range.go
│   │   │   ├── enum_value.go
│   │   │   ├── field.go
│   │   │   ├── file.go
│   │   │   ├── file_import.go
│   │   │   ├── files.go
│   │   │   ├── location.go
│   │   │   ├── location_descriptor.go
│   │   │   ├── location_store.go
│   │   │   ├── merge_comment_location.go
│   │   │   ├── message.go
│   │   │   ├── message_range.go
│   │   │   ├── method.go
│   │   │   ├── named_descriptor.go
│   │   │   ├── oneof.go
│   │   │   ├── option_extension_descriptor.go
│   │   │   ├── option_extension_descriptor_test.go
│   │   │   ├── paths.go
│   │   │   ├── reserved_name.go
│   │   │   ├── service.go
│   │   │   ├── tag_range_test.go
│   │   │   ├── testdata/
│   │   │   │   └── nested/
│   │   │   │       └── foo.proto
│   │   │   └── usage.gen.go
│   │   ├── bufreflect/
│   │   │   ├── bufreflect.go
│   │   │   └── usage.gen.go
│   │   ├── bufregistryapi/
│   │   │   ├── bufregistryapimodule/
│   │   │   │   ├── bufregistryapimodule.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufregistryapiowner/
│   │   │   │   ├── bufregistryapiowner.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufregistryapiplugin/
│   │   │   │   ├── bufregistryapiplugin.go
│   │   │   │   └── usage.gen.go
│   │   │   └── bufregistryapipolicy/
│   │   │       ├── bufregistryapipolicy.go
│   │   │       └── usage.gen.go
│   │   ├── bufremoteplugin/
│   │   │   ├── bufremoteplugin.go
│   │   │   ├── bufremoteplugin_test.go
│   │   │   ├── bufremotepluginconfig/
│   │   │   │   ├── bufremotepluginconfig.go
│   │   │   │   ├── bufremotepluginconfig_test.go
│   │   │   │   ├── config.go
│   │   │   │   ├── get.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── failure/
│   │   │   │   │   │   ├── invalid-empty-plugin-version.yaml
│   │   │   │   │   │   ├── invalid-empty-version.yaml
│   │   │   │   │   │   ├── invalid-multiple-registries.yaml
│   │   │   │   │   │   └── invalid-plugin-version.yaml
│   │   │   │   │   └── success/
│   │   │   │   │       ├── cargo/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── cmake/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── go/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── go-empty-registry/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── maven/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── npm/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── nuget/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── options/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── python/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       └── swift/
│   │   │   │   │           └── buf.plugin.yaml
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufremoteplugindocker/
│   │   │   │   ├── bufremoteplugindocker.go
│   │   │   │   ├── docker.go
│   │   │   │   ├── docker_test.go
│   │   │   │   ├── registry_auth_config.go
│   │   │   │   ├── registry_auth_config_test.go
│   │   │   │   ├── testdata/
│   │   │   │   │   └── success/
│   │   │   │   │       └── Dockerfile
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufremotepluginref/
│   │   │   │   ├── bufremotepluginref.go
│   │   │   │   ├── bufremotepluginref_test.go
│   │   │   │   ├── plugin_identity.go
│   │   │   │   ├── plugin_reference.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── dotnet_target_framework.go
│   │   │   ├── dotnet_target_platform_test.go
│   │   │   ├── plugin.go
│   │   │   └── usage.gen.go
│   │   └── buftransport/
│   │       ├── buftransport.go
│   │       └── usage.gen.go
│   ├── gen/
│   │   ├── data/
│   │   │   ├── datalegacyfederation/
│   │   │   │   ├── datalegacyfederation.gen.go
│   │   │   │   └── usage.gen.go
│   │   │   └── datawkt/
│   │   │       ├── datawkt.gen.go
│   │   │       └── usage.gen.go
│   │   └── proto/
│   │       ├── connect/
│   │       │   └── buf/
│   │       │       └── alpha/
│   │       │           ├── audit/
│   │       │           │   └── v1alpha1/
│   │       │           │       └── auditv1alpha1connect/
│   │       │           │           ├── service.connect.go
│   │       │           │           └── usage.gen.go
│   │       │           ├── registry/
│   │       │           │   └── v1alpha1/
│   │       │           │       └── registryv1alpha1connect/
│   │       │           │           ├── admin.connect.go
│   │       │           │           ├── authn.connect.go
│   │       │           │           ├── authz.connect.go
│   │       │           │           ├── convert.connect.go
│   │       │           │           ├── display.connect.go
│   │       │           │           ├── doc.connect.go
│   │       │           │           ├── download.connect.go
│   │       │           │           ├── github.connect.go
│   │       │           │           ├── image.connect.go
│   │       │           │           ├── jsonschema.connect.go
│   │       │           │           ├── organization.connect.go
│   │       │           │           ├── owner.connect.go
│   │       │           │           ├── plugin_curation.connect.go
│   │       │           │           ├── push.connect.go
│   │       │           │           ├── reference.connect.go
│   │       │           │           ├── repository.connect.go
│   │       │           │           ├── repository_branch.connect.go
│   │       │           │           ├── repository_commit.connect.go
│   │       │           │           ├── repository_tag.connect.go
│   │       │           │           ├── resolve.connect.go
│   │       │           │           ├── resource.connect.go
│   │       │           │           ├── schema.connect.go
│   │       │           │           ├── scim_token.connect.go
│   │       │           │           ├── search.connect.go
│   │       │           │           ├── studio.connect.go
│   │       │           │           ├── studio_request.connect.go
│   │       │           │           ├── token.connect.go
│   │       │           │           ├── usage.gen.go
│   │       │           │           ├── user.connect.go
│   │       │           │           └── webhook.connect.go
│   │       │           └── webhook/
│   │       │               └── v1alpha1/
│   │       │                   └── webhookv1alpha1connect/
│   │       │                       ├── event.connect.go
│   │       │                       └── usage.gen.go
│   │       └── go/
│   │           ├── buf/
│   │           │   └── alpha/
│   │           │       ├── audit/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── event.pb.go
│   │           │       │       ├── service.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── breaking/
│   │           │       │   └── v1/
│   │           │       │       ├── config.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── image/
│   │           │       │   └── v1/
│   │           │       │       ├── image.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── lint/
│   │           │       │   └── v1/
│   │           │       │       ├── config.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── module/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── module.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── registry/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── admin.pb.go
│   │           │       │       ├── authn.pb.go
│   │           │       │       ├── authz.pb.go
│   │           │       │       ├── convert.pb.go
│   │           │       │       ├── display.pb.go
│   │           │       │       ├── doc.pb.go
│   │           │       │       ├── download.pb.go
│   │           │       │       ├── git_metadata.pb.go
│   │           │       │       ├── github.pb.go
│   │           │       │       ├── image.pb.go
│   │           │       │       ├── jsonschema.pb.go
│   │           │       │       ├── module.pb.go
│   │           │       │       ├── organization.pb.go
│   │           │       │       ├── owner.pb.go
│   │           │       │       ├── plugin_curation.pb.go
│   │           │       │       ├── push.pb.go
│   │           │       │       ├── reference.pb.go
│   │           │       │       ├── repository.pb.go
│   │           │       │       ├── repository_branch.pb.go
│   │           │       │       ├── repository_commit.pb.go
│   │           │       │       ├── repository_tag.pb.go
│   │           │       │       ├── resolve.pb.go
│   │           │       │       ├── resource.pb.go
│   │           │       │       ├── role.pb.go
│   │           │       │       ├── schema.pb.go
│   │           │       │       ├── scim_token.pb.go
│   │           │       │       ├── search.pb.go
│   │           │       │       ├── studio.pb.go
│   │           │       │       ├── studio_request.pb.go
│   │           │       │       ├── token.pb.go
│   │           │       │       ├── usage.gen.go
│   │           │       │       ├── user.pb.go
│   │           │       │       ├── verification_status.pb.go
│   │           │       │       └── webhook.pb.go
│   │           │       ├── studio/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── invoke.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       └── webhook/
│   │           │           └── v1alpha1/
│   │           │               ├── event.pb.go
│   │           │               └── usage.gen.go
│   │           ├── google/
│   │           │   └── protobuf/
│   │           │       ├── cpp_features.pb.go
│   │           │       ├── java_features.pb.go
│   │           │       └── usage.gen.go
│   │           └── grpc/
│   │               └── reflection/
│   │                   └── v1/
│   │                       ├── reflection.pb.go
│   │                       └── usage.gen.go
│   └── pkg/
│       ├── bandeps/
│       │   ├── bandeps.go
│       │   ├── checker.go
│       │   ├── cmd/
│       │   │   └── bandeps/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── key_rwlock.go
│       │   ├── state.go
│       │   ├── usage.gen.go
│       │   ├── util.go
│       │   └── violation.go
│       ├── cache/
│       │   ├── cache.go
│       │   └── usage.gen.go
│       ├── cas/
│       │   ├── blob.go
│       │   ├── blob_set.go
│       │   ├── blob_set_test.go
│       │   ├── blob_test.go
│       │   ├── cas.go
│       │   ├── digest.go
│       │   ├── digest_test.go
│       │   ├── errors.go
│       │   ├── file_node.go
│       │   ├── file_set.go
│       │   ├── manifest.go
│       │   ├── manifest_test.go
│       │   ├── storage.go
│       │   └── usage.gen.go
│       ├── cert/
│       │   └── certclient/
│       │       ├── certclient.go
│       │       ├── usage.gen.go
│       │       └── util.go
│       ├── connectclient/
│       │   ├── connectclient.go
│       │   └── usage.gen.go
│       ├── dag/
│       │   ├── comparable_graph.go
│       │   ├── dag.go
│       │   ├── dag_test.go
│       │   ├── dagtest/
│       │   │   ├── dagtest.go
│       │   │   └── usage.gen.go
│       │   ├── errors.go
│       │   ├── graph.go
│       │   └── usage.gen.go
│       ├── diff/
│       │   ├── diff.go
│       │   ├── diffmyers/
│       │   │   ├── diffmyers.go
│       │   │   ├── diffmyers_test.go
│       │   │   ├── testdata/
│       │   │   │   ├── create
│       │   │   │   ├── delete
│       │   │   │   ├── delete-and-insert
│       │   │   │   ├── equal
│       │   │   │   ├── first-line-prefix
│       │   │   │   ├── insert
│       │   │   │   ├── lao-tzu
│       │   │   │   └── remove
│       │   │   └── usage.gen.go
│       │   └── usage.gen.go
│       ├── encoding/
│       │   ├── encoding.go
│       │   ├── encoding_test.go
│       │   └── usage.gen.go
│       ├── filelock/
│       │   ├── filelock.go
│       │   ├── filelock_test.go
│       │   ├── lock.go
│       │   ├── locker.go
│       │   ├── nop_locker.go
│       │   ├── nop_unlocker.go
│       │   └── usage.gen.go
│       ├── git/
│       │   ├── branch.go
│       │   ├── cloner.go
│       │   ├── cmd/
│       │   │   └── git-ls-files-unstaged/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── git.go
│       │   ├── git_test.go
│       │   ├── lister.go
│       │   ├── ref.go
│       │   ├── ref_branch.go
│       │   ├── remote.go
│       │   ├── remote_test.go
│       │   └── usage.gen.go
│       ├── github/
│       │   └── githubtesting/
│       │       ├── archive_reader.go
│       │       ├── githubtesting.go
│       │       └── usage.gen.go
│       ├── httpauth/
│       │   ├── env_authenticator.go
│       │   ├── httpauth.go
│       │   ├── multi_authenticator.go
│       │   ├── netrc_authenticator.go
│       │   ├── nop_authenticator.go
│       │   ├── usage.gen.go
│       │   └── util.go
│       ├── indent/
│       │   ├── indent.go
│       │   └── usage.gen.go
│       ├── iotesting/
│       │   ├── iotesting.go
│       │   └── usage.gen.go
│       ├── licenseheader/
│       │   ├── cmd/
│       │   │   └── license-header/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── licenseheader.go
│       │   ├── licenseheader_test.go
│       │   └── usage.gen.go
│       ├── netext/
│       │   ├── netext.go
│       │   ├── netext_test.go
│       │   └── usage.gen.go
│       ├── netrc/
│       │   ├── machine.go
│       │   ├── netrc.go
│       │   ├── netrc_unix.go
│       │   ├── netrc_unix_test.go
│       │   ├── netrc_windows.go
│       │   ├── testdata/
│       │   │   └── unix/
│       │   │       ├── home1/
│       │   │       │   └── .netrc
│       │   │       ├── home2/
│       │   │       │   └── .netrc
│       │   │       └── home3/
│       │   │           └── .netrcc
│       │   └── usage.gen.go
│       ├── normalpath/
│       │   ├── normalpath.go
│       │   ├── normalpath_test.go
│       │   ├── normalpath_unix.go
│       │   ├── normalpath_unix_test.go
│       │   ├── normalpath_windows.go
│       │   ├── normalpath_windows_test.go
│       │   └── usage.gen.go
│       ├── oauth2/
│       │   ├── client.go
│       │   ├── client_test.go
│       │   ├── device.go
│       │   ├── oauth2.go
│       │   └── usage.gen.go
│       ├── osext/
│       │   ├── osext.go
│       │   └── usage.gen.go
│       ├── pluginrpcutil/
│       │   ├── pluginrpcutil.go
│       │   ├── runner.go
│       │   ├── usage.gen.go
│       │   └── wasm_runner.go
│       ├── protodescriptor/
│       │   ├── protodescriptor.go
│       │   └── usage.gen.go
│       ├── protoencoding/
│       │   ├── detrand.go
│       │   ├── detrand_test.go
│       │   ├── json_marshaler.go
│       │   ├── json_unmarshaler.go
│       │   ├── protoencoding.go
│       │   ├── reparse_extensions.go
│       │   ├── reparse_extensions_test.go
│       │   ├── resolver.go
│       │   ├── strip_legacy_options.go
│       │   ├── strip_legacy_options_test.go
│       │   ├── txtpb_marshaler.go
│       │   ├── txtpb_unmarshaler.go
│       │   ├── usage.gen.go
│       │   ├── wire_marshaler.go
│       │   ├── wire_unmarshaler.go
│       │   ├── yaml_marshaler.go
│       │   └── yaml_unmarshaler.go
│       ├── protogenutil/
│       │   ├── named_helper.go
│       │   ├── protogenutil.go
│       │   └── usage.gen.go
│       ├── protosourcepath/
│       │   ├── README.md
│       │   ├── enum.go
│       │   ├── enumvalue.go
│       │   ├── field.go
│       │   ├── message.go
│       │   ├── method.go
│       │   ├── protosourcepath.go
│       │   ├── protosourcepath_test.go
│       │   ├── service.go
│       │   ├── testdata/
│       │   │   ├── proto2/
│       │   │   │   ├── import.proto
│       │   │   │   └── test.proto
│       │   │   └── proto3/
│       │   │       ├── import.proto
│       │   │       └── test.proto
│       │   └── usage.gen.go
│       ├── protostat/
│       │   ├── protostat.go
│       │   ├── protostat_test.go
│       │   ├── protostatos/
│       │   │   ├── file_walker.go
│       │   │   ├── protostatos.go
│       │   │   └── usage.gen.go
│       │   ├── protostatstorage/
│       │   │   ├── file_walker.go
│       │   │   ├── protostatstorage.go
│       │   │   └── usage.gen.go
│       │   └── usage.gen.go
│       ├── prototesting/
│       │   ├── prototesting.go
│       │   ├── prototesting_unix.go
│       │   ├── prototesting_windows.go
│       │   └── usage.gen.go
│       ├── prototime/
│       │   ├── prototime.go
│       │   └── usage.gen.go
│       ├── protoversion/
│       │   ├── package_version.go
│       │   ├── protoversion.go
│       │   ├── protoversion_test.go
│       │   └── usage.gen.go
│       ├── refcount/
│       │   ├── refcount.go
│       │   ├── refcount_test.go
│       │   └── usage.gen.go
│       ├── shake256/
│       │   ├── shake256.go
│       │   └── usage.gen.go
│       ├── slogapp/
│       │   ├── console.go
│       │   ├── console_test.go
│       │   ├── slogapp.go
│       │   ├── slogapp_test.go
│       │   └── usage.gen.go
│       ├── slogtestext/
│       │   ├── slogtestext.go
│       │   └── usage.gen.go
│       ├── storage/
│       │   ├── bucket.go
│       │   ├── cmd/
│       │   │   ├── ddiff/
│       │   │   │   ├── main.go
│       │   │   │   └── usage.gen.go
│       │   │   └── storage-go-data/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── copy.go
│       │   ├── diff.go
│       │   ├── errors.go
│       │   ├── filter.go
│       │   ├── limit.go
│       │   ├── map.go
│       │   ├── mapper.go
│       │   ├── mask.go
│       │   ├── mask_test.go
│       │   ├── matcher.go
│       │   ├── multi.go
│       │   ├── storage.go
│       │   ├── storagearchive/
│       │   │   ├── storagearchive.go
│       │   │   └── usage.gen.go
│       │   ├── storagemem/
│       │   │   ├── bucket.go
│       │   │   ├── internal/
│       │   │   │   ├── internal.go
│       │   │   │   └── usage.gen.go
│       │   │   ├── read_object_closer.go
│       │   │   ├── storagemem.go
│       │   │   ├── storagemem_test.go
│       │   │   ├── usage.gen.go
│       │   │   └── write_object_closer.go
│       │   ├── storageos/
│       │   │   ├── bucket.go
│       │   │   ├── provider.go
│       │   │   ├── storageos.go
│       │   │   ├── storageos_test.go
│       │   │   └── usage.gen.go
│       │   ├── storagetesting/
│       │   │   ├── storagetesting.go
│       │   │   ├── testdata/
│       │   │   │   ├── base/
│       │   │   │   │   ├── 1.proto
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── b/
│       │   │   │   │   │   │   ├── 1.proto
│       │   │   │   │   │   │   ├── 2.proto
│       │   │   │   │   │   │   └── 2.txt
│       │   │   │   │   │   └── bar.yaml
│       │   │   │   │   └── ab/
│       │   │   │   │       ├── 1.proto
│       │   │   │   │       ├── 2.proto
│       │   │   │   │       └── 2.txt
│       │   │   │   ├── diff/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   └── prefix/
│       │   │   │   │   │       ├── 1.txt
│       │   │   │   │   │       └── 2.txt
│       │   │   │   │   └── b/
│       │   │   │   │       └── prefix/
│       │   │   │   │           ├── 1.txt
│       │   │   │   │           └── 3.txt
│       │   │   │   ├── five/
│       │   │   │   │   ├── root1/
│       │   │   │   │   │   └── foo
│       │   │   │   │   └── root2/
│       │   │   │   │       └── foo/
│       │   │   │   │           └── bar.proto
│       │   │   │   ├── four/
│       │   │   │   │   └── root/
│       │   │   │   │       └── a/
│       │   │   │   │           ├── 3.proto
│       │   │   │   │           └── b/
│       │   │   │   │               ├── 1.proto
│       │   │   │   │               └── 2.proto
│       │   │   │   ├── link/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── one/
│       │   │   │   │   └── root/
│       │   │   │   │       ├── 1.proto
│       │   │   │   │       ├── a/
│       │   │   │   │       │   ├── 1.proto
│       │   │   │   │       │   ├── 1.txt
│       │   │   │   │       │   ├── b/
│       │   │   │   │       │   │   ├── 1.proto
│       │   │   │   │       │   │   ├── 2.proto
│       │   │   │   │       │   │   └── 2.txt
│       │   │   │   │       │   └── bar.yaml
│       │   │   │   │       ├── ab/
│       │   │   │   │       │   ├── 1.proto
│       │   │   │   │       │   ├── 2.proto
│       │   │   │   │       │   └── 2.txt
│       │   │   │   │       ├── c/
│       │   │   │   │       │   └── 1.proto
│       │   │   │   │       └── foo.yaml
│       │   │   │   ├── overlay/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── 1
│       │   │   │   │   │   └── 2
│       │   │   │   │   └── b/
│       │   │   │   │       ├── 2
│       │   │   │   │       └── 3
│       │   │   │   ├── symlink_loop/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── symlink_success/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── three/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── one.proto
│       │   │   │   │   │   └── one.txt
│       │   │   │   │   └── b/
│       │   │   │   │       ├── one.txt
│       │   │   │   │       └── two.proto
│       │   │   │   └── two/
│       │   │   │       ├── foo.yaml
│       │   │   │       ├── root1/
│       │   │   │       │   ├── 1.proto
│       │   │   │       │   ├── a/
│       │   │   │       │   │   ├── 1.proto
│       │   │   │       │   │   ├── 1.txt
│       │   │   │       │   │   ├── b/
│       │   │   │       │   │   │   ├── 1.proto
│       │   │   │       │   │   │   ├── 2.proto
│       │   │   │       │   │   │   └── 2.txt
│       │   │   │       │   │   └── bar.yaml
│       │   │   │       │   ├── ab/
│       │   │   │       │   │   ├── 1.proto
│       │   │   │       │   │   ├── 2.proto
│       │   │   │       │   │   └── 2.txt
│       │   │   │       │   ├── c/
│       │   │   │       │   │   └── 1.proto
│       │   │   │       │   └── foo.yaml
│       │   │   │       ├── root2/
│       │   │   │       │   ├── 2.proto
│       │   │   │       │   ├── a/
│       │   │   │       │   │   ├── 2.proto
│       │   │   │       │   │   ├── 2.txt
│       │   │   │       │   │   ├── b/
│       │   │   │       │   │   │   ├── 3.proto
│       │   │   │       │   │   │   ├── 4.proto
│       │   │   │       │   │   │   └── 4.txt
│       │   │   │       │   │   └── bat.yaml
│       │   │   │       │   ├── ab/
│       │   │   │       │   │   ├── 3.proto
│       │   │   │       │   │   ├── 4.proto
│       │   │   │       │   │   └── 4.txt
│       │   │   │       │   ├── baz.yaml
│       │   │   │       │   └── c/
│       │   │   │       │       └── 3.proto
│       │   │   │       └── rootoverlap/
│       │   │   │           ├── 1.proto
│       │   │   │           ├── a/
│       │   │   │           │   ├── 1.proto
│       │   │   │           │   ├── 1.txt
│       │   │   │           │   ├── b/
│       │   │   │           │   │   ├── 1.proto
│       │   │   │           │   │   ├── 2.proto
│       │   │   │           │   │   └── 2.txt
│       │   │   │           │   └── bar.yaml
│       │   │   │           ├── ab/
│       │   │   │           │   ├── 1.proto
│       │   │   │           │   ├── 2.proto
│       │   │   │           │   └── 2.txt
│       │   │   │           ├── c/
│       │   │   │           │   └── 1.proto
│       │   │   │           └── foo.yaml
│       │   │   └── usage.gen.go
│       │   ├── storageutil/
│       │   │   ├── storageutil.go
│       │   │   └── usage.gen.go
│       │   ├── strip.go
│       │   ├── usage.gen.go
│       │   └── util.go
│       ├── stringjson/
│       │   ├── stringjson.go
│       │   └── usage.gen.go
│       ├── syserror/
│       │   ├── syserror.go
│       │   └── usage.gen.go
│       ├── thread/
│       │   ├── thread.go
│       │   ├── thread_test.go
│       │   └── usage.gen.go
│       ├── tmp/
│       │   ├── tmp.go
│       │   ├── tmp_test.go
│       │   └── usage.gen.go
│       ├── transport/
│       │   └── http/
│       │       ├── httpclient/
│       │       │   ├── client.go
│       │       │   ├── httpclient.go
│       │       │   └── usage.gen.go
│       │       └── httpserver/
│       │           ├── httpserver.go
│       │           └── usage.gen.go
│       ├── uuidutil/
│       │   ├── usage.gen.go
│       │   ├── uuidutil.go
│       │   └── uuidutil_test.go
│       ├── verbose/
│       │   ├── usage.gen.go
│       │   └── verbose.go
│       └── wasm/
│           ├── compiled_module.go
│           ├── runtime.go
│           ├── unimplemented_runtime.go
│           ├── usage.gen.go
│           └── wasm.go
└── proto/
    └── buf/
        └── alpha/
            ├── audit/
            │   └── v1alpha1/
            │       ├── event.proto
            │       └── service.proto
            ├── breaking/
            │   └── v1/
            │       └── config.proto
            ├── image/
            │   └── v1/
            │       └── image.proto
            ├── lint/
            │   └── v1/
            │       └── config.proto
            ├── module/
            │   └── v1alpha1/
            │       └── module.proto
            ├── registry/
            │   └── v1alpha1/
            │       ├── admin.proto
            │       ├── authn.proto
            │       ├── authz.proto
            │       ├── convert.proto
            │       ├── display.proto
            │       ├── doc.proto
            │       ├── download.proto
            │       ├── git_metadata.proto
            │       ├── github.proto
            │       ├── image.proto
            │       ├── jsonschema.proto
            │       ├── module.proto
            │       ├── organization.proto
            │       ├── owner.proto
            │       ├── plugin_curation.proto
            │       ├── push.proto
            │       ├── reference.proto
            │       ├── repository.proto
            │       ├── repository_branch.proto
            │       ├── repository_commit.proto
            │       ├── repository_tag.proto
            │       ├── resolve.proto
            │       ├── resource.proto
            │       ├── role.proto
            │       ├── schema.proto
            │       ├── scim_token.proto
            │       ├── search.proto
            │       ├── studio.proto
            │       ├── studio_request.proto
            │       ├── token.proto
            │       ├── user.proto
            │       ├── verification_status.proto
            │       └── webhook.proto
            ├── studio/
            │   └── v1alpha1/
            │       └── invoke.proto
            └── webhook/
                └── v1alpha1/
                    └── event.proto

================================================
FILE CONTENTS
================================================

================================================
FILE: .bufstyle.yaml
================================================
version: v1
ignore:
  PACKAGE_FILENAME:
    - private/gen


================================================
FILE: .dockerignore
================================================
# Autogenerated by makego. DO NOT EDIT.
.build/
.claude/settings.local.json
.ctrlp
.env/
.idea/
.tmp/
.vscode/
cmd/buf/buf
cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-receiver/protoc-gen-insertion-point-receiver
cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-writer/protoc-gen-insertion-point-writer
cmd/buf/internal/command/alpha/protoc/test.txt
cmd/buf/internal/command/generate/internal/protoc-gen-top-level-type-names-yaml/protoc-gen-top-level-type-names-yaml
cmd/buf/testdata/imports/cache/v3/modulelocks/
cmd/buf/testdata/imports/corrupted_cache_dep/v3/modulelocks/
cmd/buf/testdata/imports/corrupted_cache_file/v3/modulelocks/
cmd/protoc-gen-buf-breaking/protoc-gen-buf-breaking
cmd/protoc-gen-buf-lint/protoc-gen-buf-lint
private/buf/buftesting/cache/
private/buf/bufwkt/cmd/wkt-go-data/wkt-go-data
private/bufpkg/bufcheck/internal/cmd/buf-plugin-duplicate-category/buf-plugin-duplicate-category
private/bufpkg/bufcheck/internal/cmd/buf-plugin-duplicate-rule/buf-plugin-duplicate-rule
private/bufpkg/bufcheck/internal/cmd/buf-plugin-panic/buf-plugin-panic
private/bufpkg/bufcheck/internal/cmd/buf-plugin-protovalidate-ext/buf-plugin-protovalidate-ext
private/bufpkg/bufcheck/internal/cmd/buf-plugin-rpc-ext/buf-plugin-rpc-ext
private/bufpkg/bufcheck/internal/cmd/buf-plugin-suffix/buf-plugin-suffix
private/bufpkg/bufmodule/bufmoduleapi/cmd/buf-legacyfederation-go-data/buf-legacyfederation-go-data
private/bufpkg/bufmodule/bufmoduletesting/cmd/buf-digest/buf-digest
private/bufpkg/bufmodule/bufmoduletesting/cmd/buf-new-commit-id/buf-new-commit-id
private/bufpkg/buftesting/cache/
private/pkg/bandeps/cmd/bandeps/bandeps
private/pkg/git/cmd/git-ls-files-unstaged/git-ls-files-unstaged
private/pkg/licenseheader/cmd/license-header/license-header
private/pkg/storage/cmd/ddiff/ddiff
private/pkg/storage/cmd/storage-go-data/storage-go-data
private/pkg/storage/storageos/tmp/


================================================
FILE: .envrc
================================================
. $(make -s direnv)


================================================
FILE: .gitattributes
================================================
# This is similar to the git option core.autocrlf but it applies to all
# users of the repository and therefore doesn't depend on a developers
# local configuration.
* text=auto

# Never attempt EOL conversion on files within testdata
**/testdata/** -text -diff

**/corpus/** linguist-generated=true
**/usage.gen.go linguist-generated=true
/private/gen/** linguist-generated=true


================================================
FILE: .github/CODEOWNERS
================================================


================================================
FILE: .github/ISSUE_TEMPLATE/1-bug-report.yml
================================================
name: Bug Report
description: File a bug report.
labels: Bug
body:
  - type: markdown
    attributes:
      value: |
        Thanks for helping us improve Buf by filing bugs, we really appreciate it! For us to investigate your issue efficiently, we need a minimal reproducible example. We get lots of support requests, so please help us help you. We find that the easiest way to do this is by linking to a GitHub repository with the setup of the example, as well as a set of commands for us to run on this GitHub repository to reproduce the issue. You can use an existing GitHub repository, or a temporary GitHub repository you create.

        **If you do not provide a minimal reproducible example in a GitHub repository, we will likely close your issue until a reproducible example is provided. We apologize, but we have to be efficient with our support requests, and we appreciate your help.**

        [This article](https://stackoverflow.com/help/minimal-reproducible-example) on minimal reproducible examples may be of use!
  - type: input
    id: github-repository
    attributes:
      label: GitHub repository with your minimal reproducible example (do not leave this field blank or fill out this field with "github.com/bufbuild/buf" or we will automatically close your issue, see the instructions above!)
      description: Provide us with a link to the GitHub repository that contains the setup needed to reproduce the issue. This is a repository you create, and is required for us to investigate your issue.
      placeholder: https://github.com/you/temp-repo-with-repro
    validations:
      required: true
  - type: textarea
    id: commands
    attributes:
      label: Commands
      description: Please provide the commands to run from the root of this repository to reproduce the issue.
      placeholder: |
        cd ./proto
        buf lint
      render: shell
    validations:
      required: true
  - type: textarea
    id: actual-output
    attributes:
      label: Output
      description: What is the output of running these commands?
      placeholder: |
        foo/bar/v1/bar.proto:37:29:Field name "CreateTime" should be lower_snake_case, such as "create_time".
      render: shell
    validations:
      required: true
  - type: textarea
    id: expected-output
    attributes:
      label: Expected Output
      description: What did you expect instead?
      placeholder: I expected no lint failures.
    validations:
      required: true
  - type: textarea
    id: other
    attributes:
      label: Anything else?
      description: Is there any other context you'd like us to have?


================================================
FILE: .github/ISSUE_TEMPLATE/2-feature-request.yml
================================================
name: Feature Request
description: Let us know about a feature you'd like us to add.
labels: Feature
body:
  - type: markdown
    attributes:
      value: |
        Thanks for your suggestions on how to improve Buf, we really appreciate it!
  - type: textarea
    id: feature
    attributes:
      label: Feature
      description: Tell us what you'd like to see!
    validations:
      required: true


================================================
FILE: .github/ISSUE_TEMPLATE/3-other.yml
================================================
name: Other
description: Anything else.
body:
  - type: markdown
    attributes:
      value: |
        Thanks for getting in touch, we really appreciate it! If your issue isn't a bug or feature request, we'd highly recommend to talk to us on the [Buf Slack](https://buf.build/links/slack). If you think the issue is more appropriate for a GitHub issue, please file it below!

        If this is a question about some behavior you are witnessing, we will need a minimal reproducible example. We get lots of support requests, so please help us help you. We find that the easiest way to do this is by linking to a GitHub repository with the setup of the example, as well as a set of commands for us to run on this GitHub repository to reproduce the issue. You can use an existing GitHub repository, or a temporary GitHub repository you create.

        **If this is a question about some behavior you are witnessing, and you do not provide a minimal reproducible example in a GitHub repository, we will likely close your issue until a reproducible example is provided. We apologize, but we have to be efficient with our support requests, and we appreciate your help.**

        [This article](https://stackoverflow.com/help/minimal-reproducible-example) on minimal reproducible examples may be of use!
  - type: input
    id: github-repository
    attributes:
      label: GitHub repository with your minimal reproducible example (do not leave this field blank or fill out this field with "github.com/bufbuild/buf" or we will automatically close your issue, see the instructions above!)
      description: If this is a question about some behavior you are witnessing, provide us with a link to the GitHub repository that contains the setup needed to reproduce the issue. This is a repository you create, and is required for us to investigate your issue.
      placeholder: https://github.com/you/temp-repo-with-repro
  - type: textarea
    id: feature
    attributes:
      label: What's up?
      description: Tell us what's on your mind!
    validations:
      required: true


================================================
FILE: .github/dependabot.yml
================================================
version: 2
updates:
  - package-ecosystem: "docker"
    directory: "/"
    schedule:
      interval: "weekly"
  - package-ecosystem: "github-actions"
    directory: "/"
    schedule:
      interval: "weekly"
  - package-ecosystem: "gomod"
    directory: "/"
    schedule:
      interval: "weekly"
    ignore:
      # We manually update this from main and lock the commit in make/buf/all.mk
      - dependency-name: "github.com/bufbuild/protocompile"
      # This needs to be locked to the same version we generate with, which is
      # controlled via dep_protoc_gen_connect_go.mk
      - dependency-name: "github.com/bufbuild/connect-go"
      # This needs to be locked to the same version we generate with, which is
      # controlled via make/go/dep_protoc_gen_go.mk
      - dependency-name: "google.golang.org/protobuf"


================================================
FILE: .github/workflows/add-to-project.yaml
================================================
name: Add issues and PRs to project

on:
  issues:
    types:
      - opened
      - reopened
      - transferred
  pull_request_target:
    types:
      - opened
      - reopened
  issue_comment:
    types:
      - created

jobs:
  call-workflow-add-to-project:
    name: Call workflow to add issue to project
    uses: bufbuild/base-workflows/.github/workflows/add-to-project.yaml@main
    secrets: inherit


================================================
FILE: .github/workflows/back-to-development.yaml
================================================
name: Go back to Development
on:
  workflow_dispatch:
  release:
    types: [published]
env:
  APP_ID: 251311
jobs:
  post-release:
    runs-on: ubuntu-latest
    steps:
      - name: Get GitHub app token
        uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
        id: app_token
        with:
          app-id: ${{ env.APP_ID }}
          private-key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }}
      - name: Checkout repository code
        uses: actions/checkout@v6
        with:
          token: ${{ steps.app_token.outputs.token }}
      - name: Set up Git name and email
        run: |
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor }}@users.noreply.github.com"
      - name: Create PR back to development
        run: bash ./make/buf/scripts/gobacktodevelopment.bash
        env:
          GH_TOKEN: ${{ steps.app_token.outputs.token }}
          WEBHOOK_URL: ${{ secrets.SLACK_RELEASE_NOTIFICATION_WEBHOOK }}


================================================
FILE: .github/workflows/buf-binary-size.yaml
================================================
name: binary-size
on:
  push:
    branches:
      - main
    tags: ["v*"]
  pull_request:
# Prevent writing to the repository using the CI token.
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions: read-all
env:
  MAKEFLAGS: "-j 2"
jobs:
  buf-binary-size:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
      - name: cache
        uses: actions/cache@v5
        with:
          path: |
            ~/.cache/buf/${{ runner.os }}/x86_64/bin
            ~/.cache/buf/${{ runner.os }}/x86_64/go/pkg/mod
            ~/.cache/buf/${{ runner.os }}/x86_64/gocache
            ~/.cache/buf/${{ runner.os }}/x86_64/include
            ~/.cache/buf/${{ runner.os }}/x86_64/versions
          key: ${{ runner.os }}-buf-${{ hashFiles('**/go.sum', 'make/**') }}
          restore-keys: |
            ${{ runner.os }}-buf-
      - name: make-bufbinarysize
        run: make bufbinarysize


================================================
FILE: .github/workflows/buf-ci.yaml
================================================
name: Buf CI
on:
  push:
  pull_request:
    types: [opened, synchronize, reopened, labeled, unlabeled]
  delete:
permissions:
  contents: read
  pull-requests: write
jobs:
  buf:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - uses: bufbuild/buf-action@v1
        with:
          token: ${{ secrets.BUF_TOKEN }}


================================================
FILE: .github/workflows/build-and-draft-release.yaml
================================================
name: Build and Draft Release
on:
  pull_request:
    types: [closed]
  workflow_dispatch:
    inputs:
      version:
        type: string
        description: The released version without 'v'. For example, 1.0.0.
env:
  APP_ID: 251311
jobs:
  draft_release:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'workflow_dispatch' || (github.event_name == 'pull_request' && github.event.pull_request.merged == true && startsWith(github.event.pull_request.head.ref, 'release')) }}
    steps:
      - name: Set VERSION variable
        # The head ref looks like release/v1.0.0, and we need to trim the string up to the `/v`.
        run: |
          VERSION="${{ github.event.inputs.version || github.head_ref}}"
          echo "VERSION=${VERSION##*/v}" >> $GITHUB_ENV
      - name: Get GitHub app token
        uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
        id: app_token
        with:
          app-id: ${{ env.APP_ID }}
          private-key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }}
      - name: Checkout repository code
        uses: actions/checkout@v6
        with:
          token: ${{ steps.app_token.outputs.token }}
      - name: Set up Go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
      - name: Set up Git name and email
        run: |
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor }}@users.noreply.github.com"
      - name: Build assets and draft release
        run: bash ./make/buf/scripts/draftrelease.bash
        env:
          GH_TOKEN: ${{ steps.app_token.outputs.token }}
          WEBHOOK_URL: ${{ secrets.SLACK_RELEASE_NOTIFICATION_WEBHOOK }}
          RELEASE_MINISIGN_PRIVATE_KEY: ${{secrets.RELEASE_MINISIGN_PRIVATE_KEY}}
          RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD: ${{secrets.RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD}}
      - name: Unset keys
        if: ${{ always() }}
        run: |
          unset RELEASE_MINISIGN_PRIVATE_KEY
          unset RELEASE_MINISIGN_PRIVATE_KEY_PASSWORD


================================================
FILE: .github/workflows/ci.yaml
================================================
name: ci
on:
  push:
    branches:
      - main
    tags: ["v*"]
  pull_request:
# Prevent writing to the repository using the CI token.
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions: read-all
env:
  MAKEFLAGS: "-j 2"
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
      - name: cache
        uses: actions/cache@v5
        with:
          path: |
            ~/.cache/buf/${{ runner.os }}/x86_64/bin
            ~/.cache/buf/${{ runner.os }}/x86_64/go/pkg/mod
            ~/.cache/buf/${{ runner.os }}/x86_64/gocache
            ~/.cache/buf/${{ runner.os }}/x86_64/include
            ~/.cache/buf/${{ runner.os }}/x86_64/versions
          key: ${{ runner.os }}-buf-lint-${{ hashFiles('**/go.sum', 'make/**') }}
          restore-keys: |
            ${{ runner.os }}-buf-lint-
      - name: golangci-lint-cache
        uses: actions/cache@v5
        with:
          path: ~/.cache/golangci-lint
          # https://github.com/golangci/golangci-lint-action#caching-internals includes an interval number in the cache
          # key, however we update our go modules at least once weekly so we shouldn't need that.
          key: ${{ runner.os }}-buf-golangci-lint-${{ hashFiles('**/go.sum') }}
          restore-keys: |
            ${{ runner.os }}-buf-golangci-lint-
      - name: make-lint
        run: make lint
        env:
          BUF_BREAKING_AGAINST_INPUT: "https://github.com/bufbuild/buf.git#branch=main"
          BUF_INPUT_HTTPS_USERNAME: ${{ github.actor }}
          BUF_INPUT_HTTPS_PASSWORD: ${{ github.token }}
  test:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
      - name: cache
        uses: actions/cache@v5
        with:
          path: |
            ~/.cache/buf/${{ runner.os }}/x86_64/bin
            ~/.cache/buf/${{ runner.os }}/x86_64/go/pkg/mod
            ~/.cache/buf/${{ runner.os }}/x86_64/gocache
            ~/.cache/buf/${{ runner.os }}/x86_64/include
            ~/.cache/buf/${{ runner.os }}/x86_64/versions
          key: ${{ runner.os }}-buf-test-${{ hashFiles('**/go.sum', 'make/**') }}
          restore-keys: |
            ${{ runner.os }}-buf-test-
      - name: make-test
        run: make test
  docker:
    runs-on: ubuntu-latest
    needs:
      - lint
      - test
    # This job only runs when
    # 1. The previous lint and test jobs have completed successfully
    # 2. The repository is not a fork, i.e. it will only run on the official bufbuild/buf
    # 3. The workflow run is trigged by main branch OR a tag with v prefix
    # See https://github.com/bufbuild/buf/pull/289/files#r596207623 for the discussion
    if: ${{ github.repository == 'bufbuild/buf' && (github.ref == 'refs/heads/main' || contains(github.ref, 'refs/tags/v')) }}
    steps:
      # qemu is used when executing things like `apk` in the final build
      # stage which must execute on the target platform. We currently do
      # not have any CGO and care should be taken in the Dockerfile to ensure
      # that go cross compilation happens on the build platform.
      - name: setup-qemu
        uses: docker/setup-qemu-action@v4
        id: qemu
        with:
          # alpine image doesn't support linux/riscv64
          platforms: linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/ppc64le,linux/s390x
      - name: setup-docker-buildx
        uses: docker/setup-buildx-action@v4
      - name: login-docker
        uses: docker/login-action@v4
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
      - name: docker-meta
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: |
            bufbuild/buf
          tags: |
            type=edge,branch=main
            type=semver,pattern={{version}}
            type=semver,pattern={{major}}.{{minor}}
            type=semver,pattern={{major}}
          flavor: |
            latest=auto
      - name: docker-build-push
        uses: docker/build-push-action@v7
        with:
          file: Dockerfile.buf
          platforms: ${{ steps.qemu.outputs.platforms }}
          push: true
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}


================================================
FILE: .github/workflows/codeql.yaml
================================================
# Broadly based on example Github action from
# https://github.com/github/codeql-action#usage
name: codeql
# https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
# https://github.com/github/codeql-action/issues/572
permissions:
  actions: read
  contents: read
  pull-requests: read
  security-events: write
on:
  push:
    branches:
      - main
jobs:
  codeql:
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
      - name: initialize
        uses: github/codeql-action/init@v4
        with:
          # Limit analysis to Go for now.
          # Available languages: https://docs.github.com/en/code-security/secure-coding/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#changing-the-languages-that-are-analyzed
          languages: go
      - name: autobuild
        uses: github/codeql-action/autobuild@v4
      - name: analyze
        uses: github/codeql-action/analyze@v4


================================================
FILE: .github/workflows/create-release-pr.yaml
================================================
name: Create Release PR
on:
  workflow_dispatch:
    inputs:
      version:
        type: string
        description: The released version without 'v'. For example, 1.0.0.
env:
  APP_ID: 251311
jobs:
  prepare:
    runs-on: ubuntu-latest
    steps:
      - name: Get GitHub app token
        uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
        id: app_token
        with:
          app-id: ${{ env.APP_ID }}
          private-key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }}
      - name: Checkout repository code
        uses: actions/checkout@v6
        with:
          token: ${{ steps.app_token.outputs.token }}
      - name: Set up Git name and email
        run: |
          git config user.name "${{ github.actor }}"
          git config user.email "${{ github.actor }}@users.noreply.github.com"
      - name: Create release PR
        run: bash ./make/buf/scripts/createreleasepr.bash
        env:
          GH_TOKEN: ${{ steps.app_token.outputs.token }}
          VERSION: ${{ github.event.inputs.version }}
          WEBHOOK_URL: ${{ secrets.SLACK_RELEASE_NOTIFICATION_WEBHOOK }}


================================================
FILE: .github/workflows/docker-publish.yaml
================================================
# This job will build and push the Docker image to Docker Hub.
name: docker-publish
on:
  workflow_dispatch:
    inputs:
      version:
        type: string
        required: true
        description: The release version (e.g., X.Y.Z), without the v.
      latest:
        type: boolean
        description: Tag with latest
        default: false
      publish:
        type: boolean
        description: Publish the image to Docker Hub
        default: false
permissions: read-all
jobs:
  docker:
    runs-on: ubuntu-latest
    if: github.repository == 'bufbuild/buf'
    steps:
      - name: Validate SemVer
        run: |
          VERSION=${{ github.event.inputs.version }}
          SEMVER_REGEX='^[0-9]*\.[0-9]*\.[0-9]*$'
          if [[ ! $VERSION =~ $SEMVER_REGEX ]]; then
            echo "Error: '$VERSION' is not a valid SemVer version"
            exit 1
          else
            echo "Version '$VERSION' is a valid SemVer version"
          fi
      - name: checkout
        id: checkout
        uses: actions/checkout@v6
        with:
          ref: refs/tags/v${{ github.event.inputs.version }}
      - name: setup-qemu
        uses: docker/setup-qemu-action@v4
        id: qemu
        with:
          platforms: linux/386,linux/amd64,linux/arm64,linux/arm/v7,linux/arm/v6,linux/ppc64le,linux/s390x
      - name: setup-docker-buildx
        uses: docker/setup-buildx-action@v4
      - name: login-docker
        uses: docker/login-action@v4
        with:
          username: ${{ secrets.DOCKER_USERNAME }}
          password: ${{ secrets.DOCKER_TOKEN }}
      - name: docker-meta
        id: meta
        uses: docker/metadata-action@v6
        with:
          images: |
            bufbuild/buf
          tags: |
            type=raw,value=latest,enable=${{ github.event.inputs.latest }}
            type=semver,pattern={{major}},value=v${{ github.event.inputs.version }}
            type=semver,pattern={{major}}.{{minor}},value=v${{ github.event.inputs.version }}
            type=semver,pattern={{major}}.{{minor}}.{{patch}},value=v${{ github.event.inputs.version }}
            type=semver,pattern={{version}},value=v${{ github.event.inputs.version }}
          labels: |
            org.opencontainers.image.revision=${{ steps.checkout.outputs.commit }}
            org.opencontainers.image.version=${{ github.event.inputs.version }}
          flavor: |
            latest=false
      - name: docker-build
        uses: docker/build-push-action@v7
        with:
          context: . # This uses the checkout context
          file: Dockerfile.buf
          load: true
          push: false
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}
      - name: docker-test
        run: |
          OUTPUT=$(docker run --rm bufbuild/buf:${{ github.event.inputs.version }} --version)
          if [ "$OUTPUT" == "${{ github.event.inputs.version }}" ]; then
            echo "Version matches"
          else
            echo "Version does not match: expected ${{ github.event.inputs.version }}, got $OUTPUT"
            exit 1
          fi
      - name: docker-build-publish
        uses: docker/build-push-action@v7
        if: ${{ github.event.inputs.publish == 'true' }}
        with:
          context: . # This uses the checkout context
          file: Dockerfile.buf
          platforms: ${{ steps.qemu.outputs.platforms }}
          push: ${{ github.event.inputs.publish == 'true' }}
          tags: ${{ steps.meta.outputs.tags }}
          labels: ${{ steps.meta.outputs.labels }}


================================================
FILE: .github/workflows/emergency-review-bypass.yaml
================================================
name: Bypass review in case of emergency
on:
  pull_request:
    types:
      - labeled
permissions:
  pull-requests: write
jobs:
  approve:
    if: github.event.label.name == 'Emergency Bypass Review'
    uses: bufbuild/base-workflows/.github/workflows/emergency-review-bypass.yaml@main
    secrets: inherit


================================================
FILE: .github/workflows/make-upgrade.yaml
================================================
name: Make upgrade
on:
  schedule:
    # Run every Monday at 10am UTC
    - cron: "0 10 * * 1"
env:
  APP_ID: 251311
jobs:
  prepare:
    runs-on: ubuntu-latest
    steps:
      - name: Get GitHub app token
        uses: actions/create-github-app-token@f8d387b68d61c58ab83c6c016672934102569859 # v3.0.0
        id: app_token
        with:
          app-id: ${{ env.APP_ID }}
          private-key: ${{ secrets.TOKEN_EXCHANGE_GH_APP_PRIVATE_KEY }}
      - name: Checkout repository code
        uses: actions/checkout@v6
        with:
          token: ${{ steps.app_token.outputs.token }}
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
          cache: false
      - name: Set up Git name and email
        run: |
          git config user.name 'github-actions[bot]'
          git config user.email 'github-actions[bot]@users.noreply.github.com'
      - name: make-githubactionupgrade
        run: make githubactionupgrade
        env:
          GH_TOKEN: ${{ steps.app_token.outputs.token }}


================================================
FILE: .github/workflows/notify-approval-bypass.yaml
================================================
name: PR Approval Bypass Notifier
on:
  pull_request:
    types:
      - closed
    branches:
      - main
permissions:
  pull-requests: read
jobs:
  approval:
    uses: bufbuild/base-workflows/.github/workflows/notify-approval-bypass.yaml@main
    secrets: inherit


================================================
FILE: .github/workflows/pr-title.yaml
================================================
name: Lint PR Title
# Prevent writing to the repository using the CI token.
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions:
  pull-requests: read
on:
  pull_request:
    # By default, a workflow only runs when a pull_request's activity type is opened,
    # synchronize, or reopened. We explicity override here so that PR titles are
    # re-linted when the PR text content is edited.
    types:
      - opened
      - edited
      - reopened
      - synchronize
jobs:
  lint:
    uses: bufbuild/base-workflows/.github/workflows/pr-title.yaml@main


================================================
FILE: .github/workflows/previous.yaml
================================================
name: previous
on:
  push:
    branches:
      - main
    tags: ["v*"]
  pull_request:
# Prevent writing to the repository using the CI token.
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions: read-all
env:
  MAKEFLAGS: "-j 2"
jobs:
  test-previous:
    strategy:
      matrix:
        go-version: ["1.25.x"]
    runs-on: ubuntu-latest
    steps:
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: ${{ matrix.go-version }}
          check-latest: true
      - name: cache
        uses: actions/cache@v5
        with:
          path: |
            ~/.cache/buf/${{ runner.os }}/x86_64/bin
            ~/.cache/buf/${{ runner.os }}/x86_64/go/pkg/mod
            ~/.cache/buf/${{ runner.os }}/x86_64/gocache
            ~/.cache/buf/${{ runner.os }}/x86_64/include
            ~/.cache/buf/${{ runner.os }}/x86_64/versions
          key: ${{ runner.os }}-${{ matrix.go-version }}-buf-${{ hashFiles('**/go.sum', 'make/**') }}
          restore-keys: |
            ${{ runner.os }}-${{ matrix.go-version }}-buf-
      - name: make-test
        run: make test


================================================
FILE: .github/workflows/verify-changelog.yaml
================================================
name: Verify Changelog
on:
  pull_request:
    types:
      - opened
  push:
    branches:
      - "release/**"
      - "next/**"
jobs:
  verify:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'push' || startsWith(github.head_ref, 'release/') || startsWith(github.head_ref, 'next/')}}
    steps:
      - name: Checkout repository code
        uses: actions/checkout@v6
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          fetch-depth: 0
      - name: Check changelog is modified
        run: bash ./make/buf/scripts/verifychangelog.bash


================================================
FILE: .github/workflows/windows.yaml
================================================
name: windows
on:
  push:
    branches:
      - main
    tags: ["v*"]
  pull_request:
# Prevent writing to the repository using the CI token.
# Ref: https://docs.github.com/en/actions/reference/workflow-syntax-for-github-actions#permissions
permissions: read-all
jobs:
  test:
    env:
      DOWNLOAD_CACHE: 'd:\downloadcache'
      # Improve performance by using D: drive.
      # C: seems to be really slow, especially for cache restores.
      GOPATH: 'd:\go\path'
      GOCACHE: 'd:\go\cache'
      GOMODCACHE: 'd:\go\modcache'
    runs-on: windows-latest
    steps:
      - name: support-longpaths
        run: git config --system core.longpaths true
      - name: checkout
        uses: actions/checkout@v6
      - name: setup-go
        uses: actions/setup-go@v6
        with:
          go-version: "1.26.x"
          check-latest: true
          cache: true
      - name: windows-cache
        uses: actions/cache@v5
        with:
          path: |
            ${{ env.DOWNLOAD_CACHE }}
          key: ${{ runner.os }}-buf-windows-${{ hashFiles('windows/**') }}
          restore-keys: |
            ${{ runner.os }}-buf-windows-
      - name: test
        shell: bash
        run: ./etc/windows/test.bash


================================================
FILE: .gitignore
================================================
# Autogenerated by makego. DO NOT EDIT.
/.build/
/.claude/settings.local.json
/.ctrlp
/.env/
/.idea/
/.tmp/
/.vscode/
/cmd/buf/buf
/cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-receiver/protoc-gen-insertion-point-receiver
/cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-writer/protoc-gen-insertion-point-writer
/cmd/buf/internal/command/alpha/protoc/test.txt
/cmd/buf/internal/command/generate/internal/protoc-gen-top-level-type-names-yaml/protoc-gen-top-level-type-names-yaml
/cmd/buf/testdata/imports/cache/v3/modulelocks/
/cmd/buf/testdata/imports/corrupted_cache_dep/v3/modulelocks/
/cmd/buf/testdata/imports/corrupted_cache_file/v3/modulelocks/
/cmd/protoc-gen-buf-breaking/protoc-gen-buf-breaking
/cmd/protoc-gen-buf-lint/protoc-gen-buf-lint
/private/buf/buftesting/cache/
/private/buf/bufwkt/cmd/wkt-go-data/wkt-go-data
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-duplicate-category/buf-plugin-duplicate-category
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-duplicate-rule/buf-plugin-duplicate-rule
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-panic/buf-plugin-panic
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-protovalidate-ext/buf-plugin-protovalidate-ext
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-rpc-ext/buf-plugin-rpc-ext
/private/bufpkg/bufcheck/internal/cmd/buf-plugin-suffix/buf-plugin-suffix
/private/bufpkg/bufmodule/bufmoduleapi/cmd/buf-legacyfederation-go-data/buf-legacyfederation-go-data
/private/bufpkg/bufmodule/bufmoduletesting/cmd/buf-digest/buf-digest
/private/bufpkg/bufmodule/bufmoduletesting/cmd/buf-new-commit-id/buf-new-commit-id
/private/bufpkg/buftesting/cache/
/private/pkg/bandeps/cmd/bandeps/bandeps
/private/pkg/git/cmd/git-ls-files-unstaged/git-ls-files-unstaged
/private/pkg/licenseheader/cmd/license-header/license-header
/private/pkg/storage/cmd/ddiff/ddiff
/private/pkg/storage/cmd/storage-go-data/storage-go-data
/private/pkg/storage/storageos/tmp/


================================================
FILE: .godoclint.yaml
================================================
# Configuration file version.
version: "1.0"

# List of regexp patterns matching files the linter should include. When
# omitted/null, the linter includes all Go files. If assigned then only the
# files that their relative path (with respect to the config file path) matches
# any of the patterns will be processed.
#
# Note: The patterns must assume a Unix-like path (i.e., separated with forward
# slashes, `/`), even on Windows. This is to ensure a consistent behavior across
# different platforms.
#
# Example:
#   include:
#     - ^pkg/
#     - _foo.go$
include: null

# List of regexp patterns matching files the linter should skip. When
# omitted/null, the linter excludes no Go files. If assigned then only the
# files that their relative path (with respect to the config file path) does not
# match any of the patterns will be processed.
#
# Note: The patterns must assume a Unix-like path (i.e., separated with forward
# slashes, `/`), even on Windows. This is to ensure a consistent behavior across
# different platforms.
#
# Example:
#   exclude:
#     - ^internal/
#     - _autogenerated.go$
exclude:
  - ^private/gen

# Default set of rules to enable. Possible values are:
# - `basic`: enables basic rules which are: `pkg-doc`, `single-pkg-doc`, `start-with-name` and `deprecated`.
# - `all`:   all rules are enabled by default; the `disable` key can be used to disable specific rules.
# - `none`:  no rule is enabled by default; the `enable` key can be used to enable specific rules.
default: none

# List of rules to enable *in addition to* the default set.
#
# See the linter docs for more on supported rules.
#
# Example:
#   - pkg-doc
#   - single-pkg-doc
#   - require-pkg-doc
#   - specific-file-pkg-doc
#   - start-with-name
#   - require-doc
#   - deprecated
#   - max-len
#   - no-unused-link
enable:
  - pkg-doc
  - single-pkg-doc
  #- require-pkg-doc
  - specific-file-pkg-doc
  - start-with-name
  - require-doc
  - deprecated
  #- max-len
  - no-unused-link

# List of rules to disable.
#
# Example:
#   disable:
#     - pkg-doc
#     - single-pkg-doc
disable: null

# A map for setting individual rule options.
#
# All sub-keys are optional.
options:
  # Maximum line length for godocs, not including the `// `, or `/*` or `*/`
  # tokens.
  max-len/length: 120

  # Include test files when applying the `max-len` rule.
  max-len/include-tests: false

  # Include test files when applying the `pkg-doc` rule.
  pkg-doc/include-tests: false

  # Include test files when applying the `single-pkg-doc` rule.
  single-pkg-doc/include-tests: false

  # Include test files when applying the `require-pkg-doc` rule.
  require-pkg-doc/include-tests: false

  # Include test files when applying the `specific-file-pkg-doc` rule.
  specific-file-pkg-doc/include-tests: false

  # The file pattern to indicate which file should contain the package-level godoc when
  # applying the `specific-file-pkg-doc` rule.
  #
  # Valid values are:
  #
  #   - "doc": The godoc should be in a file named doc.go
  #   - "package-name": The godoc should be in a file named after the package. For example, if a package
  #     is named "foobar", the godoc should be in a file named "foobar.go".
  specific-file-pkg-doc/file-pattern: "package-name"

  # Include test files when applying the `require-doc` rule.
  require-doc/include-tests: false

  # Ignore exported (public) symbols when applying the `require-doc` rule.
  require-doc/ignore-exported: false

  # Ignore unexported (private) symbols when applying the `require-doc` rule.
  require-doc/ignore-unexported: true

  # Include test files when applying the `start-with-name` rule.
  start-with-name/include-tests: false

  # Include unexported (private) symbols when applying the `start-with-name` rule.
  start-with-name/include-unexported: false

  # Include test files when applying the `no-unused-link` rule.
  no-unused-link/include-tests: false


================================================
FILE: .golangci.yml
================================================
version: "2"
linters:
  default: none
  enable:
    - asciicheck
    - bidichk
    - bodyclose
    - containedctx
    - copyloopvar
    # - contextcheck
    - decorder
    # - depguard
    - dogsled
    - errcheck
    - exhaustruct
    - forbidigo
    - forcetypeassert
    - gochecknoinits
    - goheader
    - gomodguard
    - goprintffuncname
    - gosec
    - govet
    - grouper
    - importas
    - ineffassign
    - loggercheck
    - makezero
    - mirror
    - misspell
    - modernize
    - nakedret
    - nilerr
    - nolintlint
    - nosprintfhostport
    - paralleltest
    - predeclared
    - promlinter
    - reassign
    - rowserrcheck
    - staticcheck
    - unconvert
    - unused
    - usetesting
    - wastedassign
    - whitespace
  settings:
    errcheck:
      check-type-assertions: true
    forbidigo:
      forbid:
        # Use private/pkg/thread.Parallelize
        - pattern: ^errgroup\.
        # Use private/pkg/standard/xos/xexec
        - pattern: ^exec\.Cmd$
        - pattern: ^exec\.Command$
        - pattern: ^exec\.CommandContext$
        # os.Rename does not work across filesystem boundaries
        # See https://github.com/bufbuild/buf/issues/639
        - pattern: ^os\.Rename$
        # Use private/pkg/osext.Getwd
        - pattern: ^os\.Getwd$
        # Use private/pkg/osext.Chdir
        - pattern: ^os\.Chdir$
        # Ban debug statements
        - pattern: ^fmt\.Print
        - pattern: ^log\.
        - pattern: ^print$
        - pattern: ^println$
        # Use private/pkg/protoencoding Marshalers and Unmarshalers
        - pattern: ^(proto|prototext|protojson|protoyaml).Marshal$
        - pattern: ^(proto|prototext|protojson|protoyaml).Unmarshal$
        - pattern: ^(proto|prototext|protojson|protoyaml).MarshalOptions$
        - pattern: ^(proto|prototext|protojson|protoyaml).UnmarshalOptions$
        - pattern: ^proto\.Clone$
          msg: please use proto.CloneOf
    govet:
      enable:
        - nilness
    importas:
      alias:
        - pkg: github.com/bufbuild/buf/private/gen/proto/go/buf/alpha/image/v1
          alias: imagev1
        - pkg: github.com/bufbuild/buf/private/gen/proto/go/buf/alpha/module/v1
          alias: modulev1
        - pkg: github.com/bufbuild/buf/private/gen/proto/go/buf/alpha/registry/v1alpha1
          alias: registryv1alpha1
    nolintlint:
      require-explanation: true
      require-specific: true
      allow-unused: false
    usetesting:
      context-background: true
      context-todo: true
  exclusions:
    generated: lax
    presets:
      - comments
      - common-false-positives
      - legacy
      - std-error-handling
    rules:
      - linters:
          - staticcheck
        # No need to require embedded fields from selector expression, they could help with
        # more expressive code.
        text: "QF1008"
      - linters:
          - staticcheck
        # Whether or not to apply De Morgan's law is contextual and should be handled during
        # code review.
        text: "QF1001"
      - linters:
          - paralleltest
        # We use chdir in these tests.
        path: cmd/buf/workspace_subdir_test.go
        text: missing the call to method parallel
      - linters:
          - paralleltest
        # TestWorkspaceArchiveDir, TestWorkspaceWithInvalidArchivePathFail
        # and TestWorkspaceWithInvalidArchiveAbsolutePathFail cannot run in parallel
        # because they all call createZipFromDir on the same path, writing to the same file.
        path: cmd/buf/workspace_test.go
        text: missing the call to method parallel
      - linters:
          - paralleltest
        # This test shouldn't run in parallel as it needs osext.Getwd.
        path: cmd/buf/internal/command/config/configmigrate/configmigrate_test.go
        text: missing the call to method parallel
      - linters:
          - forbidigo
        # This is a legacy usage of os.Getwd we're not bothering to port yet.
        path: cmd/buf/internal/command/alpha/protoc/protoc_test.go
        text: os.Getwd
      - linters:
          - dogsled
        # One function call doesn't care about most of the returned destructured values. The
        # dogsled linter complains about it. (Value of this linter is unclear...)
        path: cmd/buf/internal/command/curl/curl.go
      - linters:
          - forbidigo
        # This is a legacy usage of os.Getwd we're not bothering to port yet.
        path: cmd/buf/internal/command/generate/generate_test.go
        text: os.Getwd
      - linters:
          - exhaustruct
        # We didn't turn on exhaustruct historically, but we really want to make sure it is turned on
        # for this file, as we do conversion between v1beta1 and v1 registry-proto types.
        path-except: private/bufpkg/bufmodule/bufmoduleapi/convert.go
      - linters:
          - gosec
        # G101 checks for hardcoded credentials, and the variables named "*Password*
        # trip this off.
        path: private/buf/bufcli/env.go
        text: "G101:"
      - linters:
          - gosec
        # G404 checks for use of the ordinary non-CPRNG.
        path: private/buf/buflsp/progress.go
        text: "G404:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/file.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/diagnostic.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/image.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/report.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/server.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/symbol.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/semantic_tokens.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/cel.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/folding_range.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/completion.go
        text: "G115:"
      - linters:
          - gosec
        # G115 checks for use of truncating conversions.
        path: private/buf/buflsp/organize_imports.go
        text: "G115:"
      - linters:
          - containedctx
        # Type must implement an interface whose methods do not accept context. But this
        # implementation makes RPC calls, which need a context. So we allow creator of the
        # type to provide a context at value creation (instead of using context.Background()).
        path: private/buf/bufcurl/reflection_resolver.go
      - linters:
          - gosec
        # We verify manually so that we can emit verbose output while doing so.
        path: private/buf/bufcurl/tls.go
        text: "G402:"
      - linters:
          - paralleltest
        # This test shouldn't run in parallel as it needs osext.Getwd.
        path: private/buf/buffetch/internal/reader_test.go
        text: missing the call to method parallel
      - linters:
          - paralleltest
        # Parallelizing TestPlainPostHandlerTLS and TestPlainPostHandlerH2C
        # makes this test flaky.
        path: private/buf/bufstudioagent/bufstudioagent_test.go
        text: missing the call to method parallel
      - linters:
          - gochecknoinits
        # we actually want to use init here
        path: private/bufpkg/bufconfig/module_config.go
      - linters:
          - gosec
        # We don't need a cryptographically secure RNG for these tests, and a
        # deterministic RNG is actually nice for test repeatability.
        path: private/bufpkg/bufimage/bufimageutil/.*_test\.go
        text: "G404:"
      - linters:
          - paralleltest
        # This test shouldn't run in parallel as it allocates a lot of memory.
        path: private/bufpkg/bufimage/build_image_unix_test.go
        text: missing the call to method parallel
      - linters:
          - containedctx
        # we actually want to embed a context here
        path: private/bufpkg/bufimage/parser_accessor_handler.go
      - linters:
          - containedctx
        # we actually want to embed a context here
        path: private/bufpkg/bufmodule/module.go
      - linters:
          - containedctx
        # we actually want to embed a context here
        path: private/bufpkg/bufmodule/module_set_builder.go
      - linters:
          - containedctx
        # we actually want to embed a context here
        path: private/pkg/standard/xos/xexec/process.go
      - linters:
          - gochecknoinits
        # we actually want to use init here
        path: private/bufpkg/bufmodule/paths.go
      - linters:
          - forbidigo
        # we want to use errgroup here
        path: private/bufpkg/bufremoteplugin/bufremoteplugindocker/docker.go
        text: use of `errgroup
      - linters:
          - forbidigo
        # this is one of two files we want to allow exec.Cmd functions in
        path: private/pkg/standard/xos/xexec/xexec.go
      - linters:
          - forbidigo
        # this is one of two files we want to allow exec.Cmd functions in
        path: private/pkg/standard/xos/xexec/process.go
      - linters:
          - gosec
        # G204 checks that exec.Command is not called with non-constants.
        path: private/pkg/standard/xos/xexec/xexec.go
        text: "G204:"
      - linters:
          - gosec
        # We should be able to use net/http/cgi in a unit test, in addition the CVE mentions
        # only versions of go < 1.6.3 are affected.
        path: private/pkg/git/git_test.go
        text: "G504:"
      - linters:
          - wastedassign
        # netrc/internal is a library largely copied in from an external repository with attribution.
        # We try to make minimal edits.
        path: private/pkg/netrc/internal/internal.go
      - linters:
          - forbidigo
        # We cache os.Getwd in osext, osext is the entrypoint.
        path: private/pkg/osext/osext.go
        text: os.Getwd
      - linters:
          - forbidigo
        # We cache os.Getwd in osext, osext has a Chdir that clears the cache.
        path: private/pkg/osext/osext.go
        text: os.Chdir
      - linters:
          - forbidigo
        # We're going to move xfilepath out.
        path: private/pkg/standard/xpath/xfilepath/xfilepath.go
        text: os.Getwd
      - linters:
          - gochecknoinits
        # protoencoding calls detrand.Disable via go:linkname and and init function. See the comments
        # in the file for more details.
        path: private/pkg/protoencoding/detrand.go
      - linters:
          - errcheck
        # headers.go has casts with values from contexts that should fail if there
        # is no error, but it would be very unidiomatic to return an error from
        # the functions that do these casts, and we completely control the
        # context values within this file
        path: private/pkg/rpc/headers.go
      - linters:
          - forbidigo
        # we use os.Rename here to rename files in the same directory
        # This is safe (we aren't traversing filesystem boundaries).
        path: private/pkg/storage/storageos/bucket.go
        text: os.Rename
      - linters:
          - containedctx
        # connCtx is cancelled when the connection is done; the context lifetime is
        # tied to the struct, not passed per-call.
        path: private/buf/buflsp/buflsp.go
      - linters:
          - containedctx
        # we actually want to embed a context here
        path: private/pkg/transport/grpc/grpcclient/client_conn_provider.go
      - linters:
          - forbidigo
        # we actually want to use errgroup when starting an HTTP server
        path: private/pkg/transport/http/httpserver/httpserver.go
      - linters:
          - staticcheck
        text: "ST1005:"
      - linters:
          - gochecknoinits
        # we actually want to use this init
        path: private/usage/usage.go
      - linters:
          - staticcheck
        # We deprecated all the definitions in plugin.proto but we still implement them.
        text: buf/alpha/registry/v1alpha1/plugin.proto is marked as deprecated
      - linters:
          - staticcheck
        # We deprecated all the definitions in generate.proto but we still implement them.
        text: buf/alpha/registry/v1alpha1/generate.proto is marked as deprecated
      - linters:
          - staticcheck
        # This greatly simplifies creation of descriptors, and it's safe enough since
        # it's just test code.
        text: GetDeprecatedLegacyJsonFieldConflicts is deprecated
      - linters:
          - forcetypeassert
        path: private/bufpkg/bufimage/source_retention_options_test\.go
      - linters:
          - paralleltest
        # The LsModules tests call chdir and cannot be parallelized.
        path: cmd/buf/buf_test.go
        text: LsModules
      - linters:
          - gosec
        # G101 checks for hardcoded credentials, and the variables named "*Token*
        # trip this off.
        path: private/pkg/oauth2/device.go
        text: "G101:"
      # G115 checks for integer overflow from integer conversions. There are known false
      # positives from the check (https://github.com/securego/gosec/issues/1212) that are
      # actively being worked on. Each exemption below is a false positive or for a safe operation,
      # such as parsing indices from descriptors and/or images.
      - linters:
          - gosec
        # Loop index conversion to uint64.
        path: private/buf/bufgen/features.go
        text: "G115:"
      - linters:
          - gosec
        # Converting result from utf8.RuneCountInString to uint64.
        path: private/bufpkg/bufcheck/bufcheckserver/internal/buflintvalidate/field.go
        text: "G115:"
      - linters:
          - gosec
        # PluginReference revision is validated with a bounds check at construction time.
        path: private/bufpkg/bufremoteplugin/bufremoteplugin.go
        text: "G115:"
      - linters:
          - gosec
        # A bounds check has been added for int32 -> uint32 conversion this is being flagged
        # as a false positive.
        path: private/buf/bufcurl/reflection_resolver.go
        text: "G115:"
      - linters:
          - gosec
        # bufprotosource converts indices to int32 to form the source path. Since it is parsing
        # from the fileDescriptor set, the operation should be safe.
        path: private/bufpkg/bufprotosource/paths.go
        text: "G115:"
      - linters:
          - gosec
        # Bounds checks have been added with assertion statements to ensure safe int -> int32
        # conversions, this is a false positive.
        path: private/bufpkg/bufprotosource/option_extension_descriptor_test.go
        text: "G115:"
      - linters:
          - gosec
        # This converts results from strconv.ParseInt with the bit size set to 32 to int32,
        # so it should be a safe conversion, this is a false positive.
        path: private/buf/bufprotopluginexec/version.go
        text: "G115:"
      - linters:
          - gosec
        # This checks the cel constraints from an Image, and converts loop indices to int32
        # to set the source path for the location, this operation should be safe.
        path: private/bufpkg/bufcheck/bufcheckserver/internal/buflintvalidate/cel.go
        text: "G115:"
      # No obvious deprecated replacement.
      - linters:
          - staticcheck
        path: private/pkg/protoencoding/reparse_extensions_test.go
        text: "SA1019:"
      - linters:
          - staticcheck
        # We still need to strip the "weak" option from fields until it is fully deprecated
        path: private/pkg/protoencoding/strip_legacy_options.go
      # Allow marshal and unmarshal functions in protoencoding only
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: proto.Marshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: proto.Unmarshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: protojson.Marshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: protojson.Unmarshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: protoyaml.Marshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: protoyaml.Unmarshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: prototext.Marshal
      - linters:
          - forbidigo
        path: private/pkg/protoencoding
        text: prototext.Unmarshal
      - linters:
          - gosec
        # This checks the cel constraints for predefined rules from an Image, and converts loop indices to int32
        # to set the source path for the location, this operation should be safe.
        path: private/bufpkg/bufcheck/bufcheckserver/internal/buflintvalidate/predefined_rules.go
        text: "G115:"
      - linters:
          - govet
        # We print command.Short to markdown, which is controlled and set by each command
        # and should be considered safe.
        path: private/bufpkg/bufcobra/markdown.go
        text: "printf: non-constant format string in call to p"
      - linters:
          - gosec
        # This converts slice indexes in a FileDescriptorProto to int32,
        # which are not an actual risk of overflow.
        path: private/bufpkg/bufimage/bufimageutil/image_filter.go
        text: "G115:"

issues:
  max-same-issues: 0
formatters:
  enable:
    - gci
    - gofmt
  exclusions:
    generated: lax


================================================
FILE: .pre-commit-hooks.yaml
================================================
- id: buf-generate
  name: buf generate
  language: golang
  language_version: 1.25.6
  entry: buf generate
  types: [proto]
  pass_filenames: false
- id: buf-build
  name: buf build
  language: golang
  language_version: 1.25.6
  entry: buf build
  types: [proto]
  pass_filenames: false
- id: buf-breaking
  name: buf breaking
  language: golang
  language_version: 1.25.6
  entry: buf breaking
  types: [proto]
  pass_filenames: false
- id: buf-lint
  name: buf lint
  language: golang
  language_version: 1.25.6
  entry: buf lint
  types: [proto]
  pass_filenames: false
- id: buf-format
  name: buf format
  language: golang
  language_version: 1.25.6
  entry: buf format -w --exit-code
  types: [proto]
  pass_filenames: false
- id: buf-dep-update
  name: buf dep update
  language: golang
  language_version: 1.25.6
  entry: buf dep update
  files: '(buf\.lock|buf\.yaml)'
  pass_filenames: false
- id: buf-dep-prune
  name: buf dep prune
  language: golang
  language_version: 1.25.6
  entry: buf dep prune
  files: '(buf\.lock|buf\.yaml)'
  pass_filenames: false
  # Deprecated: use buf-dep-update instead.
- id: buf-mod-update
  name: buf mod update
  language: golang
  language_version: 1.25.6
  entry: buf mod update
  files: '(buf\.lock|buf\.yaml)'
  pass_filenames: false
  # Deprecated: use buf-dep-prune instead.
- id: buf-mod-prune
  name: buf mod prune
  language: golang
  language_version: 1.25.6
  entry: buf mod prune
  files: '(buf\.lock|buf\.yaml)'
  pass_filenames: false


================================================
FILE: CHANGELOG.md
================================================
# Changelog

## [Unreleased]

- Add support for `--rbs_out` as a `protoc_builtin` plugin (requires protoc v34.0+).
- Add relevant links from CEL LSP hover documentation to either <celbyexample.com> or <protovalidate.com>

## [v1.66.1] - 2026-03-09

- Fix `exclude_types` in `buf generate` dropping transitive dependencies of import files retained for their extension fields.

## [v1.66.0] - 2026-02-23

- Add LSP comment ignore code action to add comment ignores for lint errors.
- Fix buf breaking module comparison when adding new modules.
- Add LSP hover support for protovalidate CEL expressions.
- Fixed offset handling in CEL semantic tokens for non-ASCII content and proto escape sequences in multi-line string literal expressions.
- Improve URI normalization for the LSP.

## [v1.65.0] - 2026-02-03

- Add `buf registry policy {commit,create,delete,info,label,settings}` commands to manage BSR policies.
- Add LSP deprecate code action to add the deprecated option on types and symbols.
- Fix import LSP document link to not include `import` keyword.
- Update `PROTOVALIDATE` lint rule to support checking unenforceable `required` rules on `repeated.items`, `map.keys` and `map.values`.
- Add `buf source edit deprecate` command to deprecate types by setting the `deprecate = true` option.

## [v1.64.0] - 2026-01-19

- Fix LSP completion for options.
- Add LSP document highlighting support.
- Add LSP completion for fully-qualified type references.
- Improve LSP semantic tokens implementation (for syntax highlighting).
- Add LSP organize imports code action to add missing imports, remove unused
  imports, and sort imports alphabetically.
- Add LSP document link support.
- Add LSP folding range support.
- Update `PROTOVALIDATE` lint rule to support checking `cel_expression` fields for valid CEL.

## [v1.63.0] - 2026-01-06

- Update `PROTOVALIDATE` lint rule to support field mask rules.
- Add LSP completion for field numbers.

## [v1.62.1] - 2025-12-29

- Fix default behavior for `swift_prefix` to remain unset when no override is provided in
  managed mode.

## [v1.62.0] - 2025-12-29

- Add `swift_prefix` to managed mode.
- Add `textDocument/rename` and `textDocument/prepareRename` support for `buf lsp serve`.
- Fix panic in LSP for empty option paths.
- Fix support for multi-arch image manifests for `buf beta registry plugin push`.

## [v1.61.0] - 2025-11-25

- Disable format on unknown or invalid syntax.
- Fix regression in LSP functionality for well-known types.
- Fix browser open for `buf registry login` in WSL2.
- Fix panic in LSP for EOF lookups.
- Fix `--create` flag for `buf push` to avoid errors on already existing modules if create is disallowed.

## [v1.60.0] - 2025-11-14

- Fix LSP published diagnostics to filter to the opened file.
- Add `textDocument/documentSymbol` support for `buf lsp serve`.
- Fix LSP navigation for cached modules which could cause import paths to become unresolvable.
- Update default value of `--timeout` flag to 0, which results in no timeout by default.
- Update `PROTOVALIDATE` lint rule to allow for custom rules that do not have `id` or `message`
  fields.

## [v1.59.0] - 2025-10-20

- Promote `buf beta lsp` to `buf lsp serve`. Command `buf beta lsp` is now deprecated.
- Add `textDocument/References` support for `buf lsp serve`.
- Add autocompletion for basic keywords, syntax, package and imports for `buf lsp serve`.
- Add workspace symbol queries for `buf lsp serve`.
- Fix positional encoding for diagnostics in `buf lsp serve`.
- Fix format updates for `buf lsp serve`.
- Fix syntax highlighting on semantic tokens for `buf lsp serve`.
- Fix `buf format` to remove extraneous whitespace before the first header node (syntax/package
  declarations).

## [v1.58.0] - 2025-10-09

- Update `PROTOVALIDATE` lint rule to check `IGNORE_IF_ZERO_VALUE` on fields that track presence.
- Fix `buf format` on fields with missing field number tags.
- Optimize `include` and `exclude` path handling for workspaces to avoid unnecessary file system
  operations. This change can result in a performance improvement for large workspaces.
- Fix buf curl for HTTP/2 services with ` --http2-prior-knowledge` flag set.

## [v1.57.2] - 2025-09-16

- Fix buf curl for HTTP/2 services.

## [v1.57.1] - 2025-09-16

- Minor bug fixes and dependency upgrades.

## [v1.57.0] - 2025-08-27

- Update exclude types to remove unused options reducing the size of generated code.
- Add `gitlab-code-quality` error format to print errors in the GitLab Code Quality format
  for `buf lint` and `buf breaking`.
- Add `source_control_url` to `json` outputs for `buf registry {module, plugin} commit` commands.

## [v1.56.0] - 2025-07-31

- Add `buf export --all` flag to include non-proto source files.
- Add s390x binaries for Linux to releases.
- Fix ppc64le binaries for Linux released as x86_64 binaries.
- `buf lint` will no longer warn about uses of `(buf.validate.message).disabled`, as it was
  removed in protovalidate v0.14.0. Please update to protovalidate v0.14.0 or higher, using the
  steps outlined in the
  [protovalidate release notes](https://github.com/bufbuild/protovalidate/releases/tag/v0.14.0).
- Fix `buf breaking --against-registry` to work with new modules that have no commits on the
  default branch.

## [v1.55.1] - 2025-06-17

- Fix language version for pre-commit hooks.

## [v1.55.0] - 2025-06-17

- Promote `buf beta stats` to `buf stats`.
- Update built-in Well-Known Types to Protobuf v31.1.
- Add `buf registry sdk info` command.
- Allow workspaces that are adding new module(s) with no module-specific breaking configurations
  to run `buf breaking`, ignoring new module(s).

## [v1.54.0] - 2025-05-12

- Add `CSR` category to breaking rules.
- Add support for local bufplugins for `protoc-gen-buf-breaking` and `protoc-gen-buf-lint`.
- Add RISC-V (64-bit) binaries for Linux to releases.
- Fix type filtering on `buf generate` for empty files, files with no declared types.
- Fix CEL check on `buf lint` for predefined `rules` variables.
- Fix `buf config migrate` to filter out removed rules.
- Allow users to set examples without constraints in `PROTOVALIDATE` lint rule.
- Add ppc64le binaries for Linux to releases.

## [v1.53.0] - 2025-04-21

- Fix buf breaking annotations for JSON format.

## [v1.52.1] - 2025-04-08

- Fix language version for pre-commit hooks.

## [v1.52.0] - 2025-04-07

- Fix `exclude_type` on a non imported package.
- Fix `--exclude-type` flag for `buf generate` when an input is specified.
- Fix type filter import filtering for options.
- Add OS environment when invoking local buf plugins.
- Add file path to `buf lint` and `buf breaking` output even when source code info is not
  available. This allows `buf lint` and `buf breaking` to respect `ignore` and `ignore_only`
  configurations when source code info is not available.

## [v1.51.0] - 2025-03-28

- Fix `buf convert` to allow for zero length for `binpb`, `txtpb`, and `yaml` formats.
- Fix use of deprecated flag `--include-types` for `buf generate`.
- Add `--against-registry` flag to `buf breaking` that runs breaking checks against the latest
  commit on the default branch of the corresponding module in the registry.
- Fix type filter with unused image dependencies for `buf generate`.
- Improve type filtering for `buf generate`. Adds the ability to exclude types with the parameter
  `exclude_types` in `buf.gen.yaml` and a flag `--exclude-types` in the CLI.
  Type filters may now also be specified as plugin parameters in `buf.gen.yaml`.

## [v1.50.1] - 2025-03-10

- Minor fixes and dependency updates.

## [v1.50.0] - 2025-01-17

- Add input parameter `filter` for use with git inputs. This sets the filter
  flag argument for the git fetch command.

## [v1.49.0] - 2025-01-07

- Fix `buf plugin push --label` to allow pushing a plugin with a label.
- Add `--digest-changes-only` flag to `buf registry {module,plugin} commit list` to filter
  out commits that have no digest changes.
- Fix `buf plugin push --source-control-url` to allow pushing a plugin with the source
  control url.

## [v1.48.0] - 2024-12-19

- Add `buf registry plugin {create,delete,info,update}` commands to manage BSR plugins.
- Breaking analysis support for `buf beta lsp`.
- Fix bug when using the `--type` flag filter for `buf build` where import ordering is not
  deterministic.
- Add `buf plugin push` command to push a plugin to the Buf Schema Registry.
  Only WebAssembly check plugins are supported at this time.
- Add `buf plugin update` and `buf plugin prune` command to manage plugins in the `buf.lock`
  file. Only WebAssembly check plugins are supported at this time.
- Add `buf registry plugin commit {add-label,info,list,resolve}` to manage BSR plugin commits.
- Add `buf registry plugin label {archive,info,list,unarchive}` to manage BSR plugin commits.
- Move `buf registry module update` to `buf registry module settings update`. Command
  `buf registry module update` is now deprecated.
- Support remote check plugins in `buf lint` and `buf breaking` commands.

## [v1.47.2] - 2024-11-14

- Update the patch version to resolve NPM packaging issues. No command updates or user changes.

## [v1.47.1] - 2024-11-14

- Update the patch version to resolve NPM packaging issues. No command updates or user changes.

## [v1.47.0] - 2024-11-13

- Move `buf registry commit` to `buf registry module commit`. Command
  `buf registry commit` is now deprecated.
- Move `buf registry label` to `buf registry module label`. Command
  `buf registry label` is now deprecated.

## [v1.46.0] - 2024-10-29

- Add `buf registry whoami` command, which checks if you are logged in to the Buf Schema
  Registry at a given domain.

## [v1.45.0] - 2024-10-08

- Update `buf registry module info --format=json` to add `default_label_name`, which provides the name
  of the default label of a module.

## [v1.44.0] - 2024-10-03

- Update the `PROTOVALIDATE` lint rule to check example field options. Examples will be checked that
  they satisfy the field constraints, and are only present if constraints are present.
- Update the `PROTOVALIDATE` lint rule to check predefined rules. Predefined rules will be checked
  that they compile.
- Add support for a WebAssembly (Wasm) runtime for custom lint and breaking changes plugins. Use the
  `.wasm` file extension to specify a path to a Wasm plugin.

## [v1.43.0] - 2024-09-30

- Add new experimental LSP support under `buf beta lsp`.

## [v1.42.0] - 2024-09-18

- Add support for custom lint and breaking change plugins. See
  [our launch blog post](https://buf.build/blog/buf-custom-lint-breaking-change-plugins)
  for more details!
- Add `buf dep graph --format` flag that defaults to `dot`, and adds the option `json`, to print
  the dependency graph in JSON format.
- Fix bugs in `buf format` where trailing comments on commas in message literals were not properly
  propagated to the formatted proto, empty message literals were not properly indented, and
  compound strings in options added an extra newline before trailing commas.

## [v1.41.0] - 2024-09-11

- Add HTTP/3 support for gRPC with `buf curl`.
- Fix issue where errors from protoc plugins may be overwritten when executing plugins in parallel.

## [v1.40.1] - 2024-09-06

- Fix issue with `buf lint` where comment ignores in the shape of `// buf:lint:ignore <RULE_ID> <extra comment>`
  were not recognized due to the extra comment.

## [v1.40.0] - 2024-09-04

- Add concept of a default lint or breaking rule, which is printed out as a property when running
  `buf config ls-{breaking,lint}-rules`. Default rules are those rules which are run if no lint
  or breaking rules are explicitly configured in your `buf.yaml`.
- Rename `DEFAULT` lint rule category to `STANDARD`. With the concept of default rules being introduced,
  having a category named `DEFAULT` is confusing, as while it happens that all the rules in the `DEFAULT`
  lint category are also default rules, the name has become overloaded. As with all `buf` changes, this
  change is backwards-compatible: the `DEFAULT` lint category continues to work, and always will. We
  recommend changing to `STANDARD`, however.

## [v1.39.0] - 2024-08-27

- Fix git input handling of relative HEAD refs without branch names.
- Add `includes` key to module configurations in v2 `buf.yaml`, accepting a list of directories.
  * If `includes` is specified, a proto file is considered in the module only if it is in one of the
    directories specified.
  * If both `includes` and `excludes` keys are specified for a module, a proto file is considered
    part of this module if it is contained in any of the include paths and not in any of the exclude
    paths.
- Allow multiple module configurations in the same v2 `buf.yaml` to have the same directory path.

## [v1.38.0] - 2024-08-22

- Add `--http3` flag to `buf curl` which forces `buf curl` to use HTTP/3 as the transport.
- Fix issue with directory inputs for v2 workspaces where the specified directory was not itself
  a path to a module, but contained directories with modules, and the modules would not build.
- Stop creating empty `buf.lock` files when `buf dep update` does not find new dependencies
  to update and there is no existing `buf.lock`.
- Update `buf push` to push the license file or doc file (e.g. `README.md`, `LICENSE`) in the
  same directory as `buf.yaml` if a module does not have a license file or doc file in the
  module's directory.
- Fix constraints of `--path` flag for lint and breaking rules to avoid resolving all files
  within a module. This change can result in a performance improvement for large workspaces.

## [v1.37.0] - 2024-08-16

- Add `STABLE_PACKAGE_NO_IMPORT_UNSTABLE` lint rule which disallows files from stable packages
  to import files from unstable packages.
- Fix plugin push failures when pushing an image built with containerd image store.

## [v1.36.0] - 2024-08-06

- Add `--list-services` and `--list-methods` flags to `buf curl`, which trigger the command to list
  known services or methods in the RPC schema, instead of invoking an RPC method.
- Add `clean` as a top-level option in `buf.gen.yaml`, matching the `buf generate --clean` flag. If
  set to true, this will delete the directories, jar files, or zip files set to `out` for each
  plugin.
- Fix git input handling of annotated tags.
- Update `buf registry login` to complete the login flow in the browser by default. This allows
  users to login with their browser and have the token automatically provided to the CLI.
- Add `buf registry organization {create, delete, info, update}` commands to manage BSR
  organizations. Remove `buf beta registry organization` commands.
- Add `buf registry module {create, delete, deprecate, info, undeprecate, update}` commands to
  manage BSR modules. Remove `buf beta registry repository` commands.
- Add `buf registry label {archive, info, list, unarchive}` commands to manage BSR module labels.
  Remove `buf beta registry label` commands and `buf beta registry {archive, unarchive}`.
- Add `buf registry commit {add-label, info, list, resolve}` to manage BSR module commits. Remove
  `buf beta registry commit` commands.

## [v1.35.1] - 2024-07-24

- Fix the git input parameter `ref` to align with the `git` notion of a ref. This allows for the use
  of branch names, tag names, and commit hashes.
- Fix unexpected `buf build` errors with absolute path directory inputs without workspace and/or
  module configurations (e.g. `buf.yaml`, `buf.work.yaml`) and proto file paths set to the `--path` flag.

## [v1.35.0] - 2024-07-22

- Add `buf generate --clean` flag that will delete the directories, jar files, or zip files that the
  plugins will write to, prior to generation. Allows cleaning of existing assets without having
  to call `rm -rf`.
- Deprecate `--username` flag on and username prompt on `buf registry login`. A username is no longer
  required to log in.

## [v1.34.0] - 2024-06-21

- Add `buf config ls-modules` command to list configured modules.
- Fix issue where `buf generate` would succeed on missing insertion points and
  panic on empty insertion point files.
- Update `buf generate` to allow the use of Editions syntax when doing local code
  generation by proxying to a `protoc` binary (for languages where code gen is
  implemented inside of `protoc` instead of in a plugin: Java, C++, Python, etc).
- Allow use of an array of strings for the `protoc_path` property of for `buf.gen.yaml`,
  where the first array element is the actual path and other array elements are extra
  arguments that are passed to `protoc` each time it is invoked.

## [v1.33.0] - 2024-06-13

- Allow user to override `--source-control-url` and `--create-default-label` when using
  `--git-metadata` with `buf push`.
- Fix `buf push --git-metadata` when local tags point to different objects than
  the remote tags.
- Fix issue where comment ignores were not respected for `PROTOVALIDATE` lint rule violations.
- Add `buf beta registry label {create,get,list}` to replace `buf beta registry {draft, tag}`
  commands.
- Update `buf beta commit {get,list}` command outputs to display create time and stop
  displaying associated tags.
- Change the behavior of `buf beta commit list <buf.build/owner/repository>` when the
  reference is empty. It now lists commits in the repository instead of listing commits
  of the default label.
- Update output of `buf format` to canonicalize the punctuation used in message literals
  in option values. The output now always uses `{` and `}` instead of `<` and `>`; it
  adds `:` separators between field names and message values if the source omitted them,
  and it removes unnecessary separators between fields (`,` and `;` are allowed, but
  neither is needed).
- Update `buf format -w` so that it does not touch files whose contents don't actually
  change. This eliminates noisy notifications to file-system-watcher tools that are
  watching the directory that contains proto sources.
- Update `buf generate` to work with plugins provided by protoc for versions v24.0
  to v25.3. Editions support was experimental in these releases, and the plugins
  advertise incomplete support for editions, which triggers `buf` to report an error.
  With this fix, these plugins can be used again as long as none of the input files use
  editions syntax.
- Add `buf push --exclude-unnamed` flag to exclude unnamed modules when pushing to the BSR.

## [v1.32.2] - 2024-05-28

- Update `buf generate` to warn instead of error when proto3 optional is required but not
  supported by a plugin.

## [v1.32.1] - 2024-05-21

- Fix archive and git inputs so that `--path` and `--exclude-path` paths are relative to
  the `#subdir` rather than the root of the input. This fixes an unintended behavior change
  that was introduced in `v1.32.0`.
- Add `module` input for `protoc-gen-buf-lint` and `protoc-gen-buf-breaking` to allow
  users to specify the module for `v2` configuration files.

## [v1.32.0] - 2024-05-16

- Add version `v2` for `buf.yaml` and `buf.gen.yaml` configuration files.
- Add `buf config migrate` to migrate configuration files to the latest version (now `v2`).
- Move `buf mod init` to `buf config init`. `buf mod init` is now deprecated.
- Move `buf mod ls-lint-rules` to `buf config ls-lint-rules`. `buf mod ls-lint-rules` is now
  deprecated.
- Move `buf mod ls-breaking-rules` to `buf config ls-breaking-rules`. `buf mod ls-breaking-rules`
  is now deprecated.
- Move `buf mod prune` to `buf dep prune`. `buf mod prune` is now deprecated.
- Move `buf mod update` to `buf dep update`. `buf mod update` is now deprecated.
- Move `buf mod {clear-cache,cc}` to `buf registry cc`. `buf mod {clear-cache,cc}` is now
  deprecated.
- Move `buf beta graph` to stable as `buf dep graph`.
- Change the default visibility of `buf push --create-visibility` to `private` when the `--create`
  flag is set. Users are no longer required to set `--create-visibility` when running
  `buf push --create`.
- Add `buf push --label`, which allows users to set labels when pushing new commits to the BSR.
- Add `buf push --source-control-url`, which allows users to associate commits pushed to the BSR
  with a URL to a source code repository.
- Add `buf push --create-default-label`, which allows users to set a default label for a repository
  when calling `buf push --create`.
- Add `buf push --git-metadata`, which automatically sets appropriate `--label`,
  `--source-control-url`, and `--create-default-label` flags based on the current Git repository.
- Add `buf convert --validate` to apply [protovalidate](https://github.com/bufbuild/protovalidate)
  rules to incoming messages specified with `--from`.
- Deprecate `buf mod open`.
- Delete `buf beta migrate-v1beta1` This is now replaced with `buf config migrate`.
- Add `buf registry sdk version` to get the version of a Generated SDK for a module and plugin.
- Add `buf beta registry archive` and `buf beta registry unarchive` commands for archiving and
  unarchiving labels on the BSR.
- Add support for Protobuf Editions. This allows `buf` to be used with sources that use edition
  2023, instead of proto2 or proto3 syntax. This also updates the `protoc-gen-buf-breaking` and
  `protoc-gen-buf-lint` Protobuf plugins to support files that use edition 2023.
- Update `buf breaking` rules to work with Protobuf Editions. To support Editions, some rules have
  been deprecated and replaced with Editions-aware rules. All deprecated rules continue to work
  for existing users.
  * `FIELD_SAME_CTYPE` has been replaced with `FIELD_SAME_CPP_STRING_TYPE`, which considers both
    `ctype` field options and new `(pb.cpp).string_type` features when deciding on backwards
    compatibility.
  * `FIELD_SAME_LABEL` has been replaced with three rules that all check "cardinality". The new
    rules can distinguish between maps and other repeated fields and between implicit and explicit
    field presence. The new rules are:
    1. `FIELD_SAME_CARDINALITY` in the `FILE` and `PACKAGE` categories.
    2. `FIELD_WIRE_COMPATIBLE_CARDINALITY` in the `WIRE` category.
    3. `FIELD_WIRE_JSON_COMPATIBLE_CARDINALITY` in the `WIRE_JSON` category.
  * `FILE_SAME_JAVA_STRING_CHECK_UTF8` has been replaced with `FIELD_SAME_JAVA_UTF8_VALIDATION`,
    which considers both the `java_string_check_utf8` file option and `(pb.java).utf8_validation`
    features when deciding on backwards compatibility.
  * Add to the existing `FILE_SAME_SYNTAX` rule with a few related rules that can catch the same
    sort of compatibility issues, but in an Editions source file that changes feature values:
    1. `MESSAGE_SAME_JSON_FORMAT` and `ENUM_SAME_JSON_FORMAT` catch changes to the `json_format`
       feature, which controls whether support for the JSON format is best-effort or properly
       supported. When supported, the compiler performs more checks relating to field name
       collisions for the JSON format as well as for FieldMask usage.
    2. `FIELD_SAME_UTF8_VALIDATION` catches changes to the `utf8_validation` feature, which
       controls validation of string values.
    3. `ENUM_SAME_TYPE` catches changes to an enum's type, open vs. closed.
- Add support for extensions to `buf breaking`. All existing rules for fields are now applied to
  extensions, except for `FIELD_NO_DELETE` (and its variants). There are also new
  `EXTENSION_NO_DELETE` and `PACKAGE_EXTENSION_NO_DELETE` rules for catching deletions of an
  extension. The new rules are not active by default in existing `v1` and `v1beta1`
  configurations, for backwards-compatibility reasons. Migrate your config to `v2` to use them.
- Add support for top-level extensions to `buf lint`. It previously only checked extensions that
  were defined inside of messages.
- Add a new `FIELD_NOT_REQUIRED` lint rule that prevents use of required in proto2 files and of
  `features.field_presence = LEGACY_REQUIRED` in Editions files. This new rule is not active by
  default in existing `v1` and `v1beta1` configurations, for backwards-compatibility reasons.
  Migrate your config to `v2` to use them.

## [v1.32.0-beta.1] - 2024-04-23

- Add `buf convert --validate` to apply [protovalidate](https://github.com/bufbuild/protovalidate)
  rules to incoming messages specified with `--from`.
- Add `buf config migrate` to migrate configuration files to the latest version (now `v2`).
- Promote `buf beta graph` to stable as `buf dep graph`.
- Move `buf mod init` to `buf config init`. `buf mod init` is now deprecated.
- Move `buf mod ls-lint-rules` to `buf config ls-lint-rules`. `buf mod ls-lint-rules` is now deprecated.
- Move `buf mod ls-breaking-rules` to `buf config ls-breaking-rules`. `buf mod ls-breaking-rules` is now deprecated.
- Move `buf mod prune` to `buf dep prune`. `buf mod prune` is now deprecated.
- Move `buf mod update` to `buf dep update`. `buf mod update` is now deprecated.
- Move `buf mod {clear-cache,cc}` to `buf registry cc`. `buf mod {clear-cache,cc}` is now deprecated.
- Deprecate `buf mod open`.
- Delete `buf beta migrate-v1beta1`.
- Add `buf registry sdk version` to get the version of a Generated SDK for a module and plugin.

## [v1.31.0] - 2024-04-23

- Update dependencies.

## [v1.30.1] - 2024-04-03

- Fix issue where `buf lint` incorrectly reports an error for `(buf.validate.field).repeated`
  is set for a repeated validation rule.

## [v1.30.0] - 2024-03-07

- Update `buf generate` so it populates the recently-added
  [`source_file_descriptors`](https://github.com/protocolbuffers/protobuf/blob/v24.0/src/google/protobuf/compiler/plugin.proto#L96-L99)
  field of the `CodeGeneratorRequest` message. This provides the plugin with access to options
  that are configured to only be retained in source and not at runtime (via
  [field option](https://github.com/protocolbuffers/protobuf/blob/v24.0/src/google/protobuf/descriptor.proto#L693-L702)).
  Descriptors in the `proto_file` field will not include any options configured this way
  for the files named in `file_to_generate` field.
- Add `--exclude-source-retention-options` flag to `buf build`, which
  causes options configured to only be retained in source to be stripped
  from the output descriptors.

## [v1.29.0] - 2024-01-24

- Add support for `yaml` format. All commands that take image inputs, output images,
  or convert between message formats, now take `yaml` as a format, in addition to
  the existing `binpb` and `txtpb` formats. Some examples:
  - `buf build -o image.yaml`
  - `buf ls-files image.yaml`
  - `buf convert --type foo.Bar --from input.binpb --to output.yaml`
- The `yaml` and `json` formats now accept two new options: `use_proto_names` and
  `use_enum_numbers`. This affects output serialization. Some examples:
  - `buf convert --type foo.Bar --from input.binpb --to output.yaml#use_proto_names=true`
  - `buf convert --type foo.Bar --from input.binpb --to -#format=yaml,use_enum_numbers=true`
- Fix issue where `buf format` would inadvertently mangle files that used
  the [expanded `Any` syntax](https://protobuf.com/docs/language-spec#any-messages)
  in option values.

## [v1.28.1] - 2023-11-15

- The `buf curl` command has been updated to support the use of multiple schemas.
  This allows users to specify multiple `--schema` flags and/or to use both `--schema`
  and `--reflect` flags at the same time. The result is that additional sources can
  be consulted to resolve an element. This can be useful when the result of an RPC
  contains extensions or values in `google.protobuf.Any` messages that are not defined
  in the same schema that defines the RPC service.
- Fix issue where `buf lint` incorrectly reports error when `(buf.validate.field).required`
  is set for an optional field in proto3.

## [v1.28.0] - 2023-11-10

- Add lint rules for [protovalidate](https://github.com/bufbuild/protovalidate). `buf lint`
  will now verify that your protovalidate rules are valid. A single rule `PROTOVALIDATE` has been
  added to the `DEFAULT` group - given that protovalidate is net new, this does not represent
  a breaking change.
- Update `buf beta price` with the latest pricing information.
- Display a warning when reading a `buf.lock` with dependencies with b1 or b3 digests. b1 and b3
  digests will be deprecated in a future version. Run `buf mod update` to update dependency digests.

## [v1.27.2] - 2023-10-27

- Fix issue where `buf build` and other commands may fail when handling certain
  archives created on macOS that contain files with extended attributes.

## [v1.27.1] - 2023-10-16

- Fix issue in v1.27.0 where `--path` did not work with workspaces under certain scenarios.

## [v1.27.0] - 2023-10-04

- Fix issue where `buf generate --exclude-path` was not properly excluding paths
  for remote modules.
- Fix issue where `buf curl` had a user agent that did not properly place the
  extension as a suffix.
- Update `buf beta price` with the latest pricing information.

## [v1.26.1] - 2023-08-09

- Fix issue where `buf build -o` did not properly output files with the `.txtpb`
  extension in Protobuf text format.

## [v1.26.0] - 2023-08-09

- Add support for the `--http2-prior-knowledge` flag when running `buf curl`
  against secure "https" URLs. This can be used with gRPC servers, that only
  support HTTP/2, when used with a network (layer 4) load balancer, that does
  not support protocol negotiation in TLS handshake.

## [v1.25.1] - 2023-08-02

- Fix issue where all files were being iterated over when using the `--path` flag.
- Fix issue where the directory `.` was incorrectly accepted as a value for the
  `directories` key in `buf.work.yaml`.

## [v1.25.0] - 2023-07-18

- Add `txtpb` format to handle the Protobuf text format. and automatically recognize
  `.txtpb` files as Protobuf text files. The `txtpb` format can now be used with
  all `buf` commands that take images as input or output, such as `build`, `convert`,
  and `curl`.

## [v1.24.0] - 2023-07-13

- Update `buf mod update` to block updates that will result in conflicting `.proto`
  files across dependencies.
- Replace `bin` format with `binpb` format, and support the `.binpb` file extension.
  `.binpb` is now the canonical file extension for binary-encoded Protobuf data.
  The `bin` format and the `.bin` file extension continue to be accepted.
- Remove support for `go` subdomain in `.netrc`. This was used as part of the
  remote generation alpha, which has been fully deprecated in favor of remote
  plugins and remote packages. See https://buf.build/blog/remote-packages-remote-plugins-approaching-v1
  for more details.
- Update `buf beta price` with the latest pricing information.

## [v1.23.1] - 2023-06-30

- Fix issue where `buf beta graph` would not print modules within a workspace that
  had no dependencies or dependents.
- Fix issue where `buf beta graph` would print warnings for missing dependencies
  that were actually present.

## [v1.23.0] - 2023-06-29

- Add `buf beta graph` to print the dependency graph for a module in DOT format.
- Various small bug fixes.

## [v1.22.0] - 2023-06-23

- Change default for `--origin` flag of `buf beta studio-agent` to `https://buf.build`

## [v1.21.0] - 2023-06-05

- Fix issue where locally-produced images did not have module information if the corresponding
  module was stored in the new cache.
- Remove `buf beta registry template`.
- Remove `buf beta registry plugin {create,deprecate,list,undeprecate,version}` and replace with
  `buf beta registry plugin {push,delete}`.
- Update `buf beta price` with the latest pricing information.

## [v1.20.0] - 2023-05-30

- Add `--emit-defaults` flag to `buf curl` to emit default values in JSON-encoded responses.
- Indent JSON-encoded responses from `buf curl` by default.
- Log a warning in case an import statement does not point to a file in the module, a file in a
  direct dependency, or a well-known type file.

## [v1.19.0] - 2023-05-17

- Add `--create` flag to `buf push` to create a repository if it does not exist. The user
  is also required to specify the visibility using `--create-visibility`.
- Add `github-actions` error format to print errors in a form parseable by GitHub Actions.
- Fix issue in `buf build` and `buf generate` where the use of type filtering (via
  `--type` flags) would cause the resulting image to have no source code info, even
  when `--exclude-source-info` was not specified. The main impact of the bug was that
  generated code would be missing comments.
- Fix issue in `buf curl` when using `--user` or `--netrc` that would cause a malformed
  Authorization header to be sent.
- Update the module cache to use an optimized content addressable store. The cache is
  now self-healing and uses significantly less space. Users wishing to free unused space
  can run `buf mod --clear-cache` once after upgrading to remove data stored in the
  previous module cache.

## [v1.18.0] - 2023-05-05

- Remove `buf beta registry {plugin,template} {deprecate,undeprecate}`.
- Add `--user` and `--netrc` flags to `buf curl`, providing the same behavior as the
  flags of the same name in the cURL tool.
- Include `DocumentationPath` in the module on `buf push`.
- Support fallback paths, `README.md` and `README.markdown`, for module documentation.
  The default source for module documentation is `buf.md`.
  If `buf.md` is missing, `README.md` or `README.markdown` is used as fallback sources.

## [v1.17.0] - 2023-04-05

- Fix issue with JSON marshalling of errors where line and column fields were
  omitted when line and column information was empty.
- Fix issue with MSVS marshalling of errors where the column could be 0.
- Add `buf beta stats` command to print statistics about a given source or module.
- Update `buf beta price` with the latest pricing information.

## [v1.16.0] - 2023-03-29

- Add `buf beta price` command to help users of the BSR figure out how much a module
  will cost to store on the BSR under the Teams or Pro plans.
- Fix issue in `protoc-gen-buf-lint` that prevented it from reporting lint
  errors for unused imports.
- Fix issue with `buf format` where indents would be produced on certain empty lines.
- Remove `buf alpha registry token create` command. Tokens must be created through the BSR UI.
- Add local WASM plugin support in alpha, gated by the `BUF_ALPHA_ENABLE_WASM` environment variable.
  This feature is under evaluation, and may change at any time. If you are interested in WASM
  Protobuf plugins, reach out to us.

## [v1.15.1] - 2023-03-08

- Fix bug in `buf generate` with `v1beta1` config files.
- Fix potential crash when using the `--type` flag with `buf build` or `buf generate`.

## [v1.15.0] - 2023-02-28

- Update built-in Well-Known Types to Protobuf v22.0.
- Fix bug in `buf format` where C-style block comments in which every
  line includes a prefix (usually "*") would be incorrectly indented.
- Add `--private-network` flag to `buf beta studio-agent` to support handling CORS requests
  from Studio on private networks that set the `Access-Control-Request-Private-Network` header.

## [v1.14.0] - 2023-02-09

- Replace `buf generate --include-types` with `buf generate --type` for consistency. `--include-types`
  is now deprecated but continues to work, consistent with our compatibility guarantee.
- Include type references in `google.protobuf.Any` messages in option values
  when filtering on type, e.g. with `buf build --type` or `buf generate --type`.
- Allow specifying a specific `protoc` path in `buf.gen.yaml` when using `protoc`'s built-in plugins
  via the new `protoc_path` option.
- Allow specifying arguments for local plugins in `buf.gen.yaml`. You can now do e.g.
  `path: ["go, "run", ./cmd/protoc-gen-foo]` in addition to `path: protoc-gen-foo`.
- Add optional name parameter to `buf mod init`, e.g. `buf mod init buf.build/owner/foobar`.
- Fix issue with `php_metadata_namespace` file option in [managed mode](https://docs.buf.build/generate/managed-mode).
- Make all help documentation much clearer. If you notice any inconsistencies, let us know.

## [v1.13.1] - 2023-01-27

- Fix race condition with `buf generate` when remote plugins from multiple
  BSR instances are being used at once.

## [v1.13.0] - 2023-01-26

- Extend the `BUF_TOKEN` environment variable to accept tokens for multiple
  BSR instances. Both `TOKEN` and `TOKEN1@BSRHOSTNAME1,TOKEN2@BSRHOSTNAME2,...`
  are now valid values for `BUF_TOKEN`.
- Remove `buf beta convert` in favor of the now-stable `buf convert`.

## [v1.12.0] - 2023-01-12
- Add `buf curl` command to invoke RPCs via [Connect](https://connect-build),
  [gRPC](https://grpc.io/), or [gRPC-Web](https://github.com/grpc/grpc-web.)
- Introduce `objc_class_prefix` option in managed mode, allowing a `default` value
  for `objc_class_prefix` for all files, `except` and `override`, which both behave
  similarly to other `except` and `override` options. Specifying an empty `default`
  value is equivalent to having managed mode on in previous versions.
- Introduce `ruby_package` option in managed mode, allowing `except` and `override`,
  in the same style as `objc_class_prefix`. Leaving `ruby_package` unspecified has
  the same effect as having mananged mode enabled in previous versions.

## [v1.11.0] - 2022-12-19
- `buf generate` now batches remote plugin generation calls for improved performance.
- Update `optimize_for` option in managed mode, allowing a `default` value for `optimize_for`
  for all files, `except` and `override`, which both behave similarly to other `except`
  and `override` options. Specifying an `optimize_for` value in the earlier versions is
  equivalent to having a `optimize_for` with that value as default.

## [v1.10.0] - 2022-12-07

- When using managed mode, setting `enabled: false` now no longer fails `buf generate`
  and instead prints a warning log and ignores managed mode options.
- Add `csharp_namespace` option to managed mode, allowing `except`, which excludes
  modules from managed mode, and `override`, which specifies `csharp_namespace` values
  per module, overriding the default value. By default, when managed mode is enabled,
  `csharp_namespace` is set to the package name with each package sub-name capitalized.
- Promote `buf convert` to stable, keep `buf beta convert` aliased in the beta command.
- Add `Types` filter to `buf generate` command to specify types (message, enum,
  service) that should be included in the image. When specified, the resulting
  image will only include descriptors to describe the requested types.

## [v1.9.0] - 2022-10-19

- New compiler that is faster and uses less memory than the outgoing one.
  - When generating source code info, the new compiler is 20% faster, and allocates
    13% less memory.
  - If _not_ generating source code info, the new compiler is 50% faster and
    allocates 35% less memory.
  - In addition to allocating less memory through the course of a compilation, the
    new compiler releases some memory much earlier, allowing it to be garbage
    collected much sooner. This means that by the end of a very large compilation
    process, less than half as much memory is live/pinned to the heap, decreasing
    overall memory pressure.

  The new compiler also addresses a few bugs where Buf would accept proto sources
  that protoc would reject:
  - In proto3 files, field and enum names undergo a validation that they are
    sufficiently different so that there will be no conflicts in JSON names.
  - Fully-qualified names of elements (like a message, enum, or service) may not
    conflict with package names.
  - A oneof or extend block may not contain empty statements.
  - Package names may not be >= 512 characters in length or contain > 100 dots.
  - Nesting depth of messages may not be > 32.
  - Field types and method input/output types may not refer to synthetic
    map entry messages.
- Push lint and breaking configuration to the registry.
- Include `LICENSE` file in the module on `buf push`.
- Formatter better edits/preserves whitespace around inline comments.
- Formatter correctly indents multi-line block (C-style) comments.
- Formatter now indents trailing comments at the end of an indented block body
  (including contents of message and array literals and elements in compact options)
  the same as the rest of the body (instead of out one level, like the closing
  punctuation).
- Formatter uses a compact, single-line representation for array and message literals
  in option values that are sufficiently simple (single scalar element or field).
- `buf beta convert` flags have changed from `--input` to `--from` and `--output`/`-o` to `--to`
- fully qualified type names now must be parsed to the `input` argument and `--type` flag separately

## [v1.8.0] - 2022-09-14

- Change default for `--origin` flag of `buf beta studio-agent` to `https://studio.buf.build`
- Change default for `--timeout` flag of `buf beta studio-agent` to `0` (no timeout). Before it was
  `2m` (the default for all the other `buf` commands).
- Add support for experimental code generation with the `plugin:` key in `buf.gen.yaml`.
- Preserve single quotes with `buf format`.
- Support `junit` format errors with `--error-format`.

## [v1.7.0] - 2022-06-27

- Support protocol and encoding client options based on content-type in Studio Agent.
- Add `--draft` flag to `buf push`.
- Add `buf beta registry draft {list,delete}` commands.

## [v1.6.0] - 2022-06-21

- Fix issue where `// buf:lint:ignore` comment ignores did not work for the
  `ENUM_FIRST_VALUE_ZERO` rule.
- Add `buf beta studio-agent` command to support the upcoming Buf Studio.

## [v1.5.0] - 2022-05-30

- Upgrade to `protoc` 3.20.1 support.
- Fix an issue where `buf` would fail if two or more roots contained
  a file with the same name, but with different file types (i.e. a
  regular file vs. a directory).
- Fix check for `PACKAGE_SERVICE_NO_DELETE` to detect deleted services.
- Remove `buf beta registry track`.
- Remove `buf beta registry branch`.

## [v1.4.0] - 2022-04-21

- Fix issue where duplicate synthetic oneofs (such as with proto3 maps or
  optional fields) did not result in a properly formed error.
- Add `buf beta registry repository update` command which supports updating
  repository visibility (public vs private). As with all beta commands, this
  is likely to change in the future.

## [v1.3.1] - 2022-03-30

- Allow `--config` flag to be set when targeting a module within a workspace.
- Update `buf format`'s file option order so that default file options are
  sorted before custom options.
- Update `buf format` to write adjacent string literals across multiple lines.
- Fix `buf format` so that the output directory (if any) is created if and only
  if the input is successfully formatted.

## [v1.3.0] - 2022-03-25

- Add `--exit-code` flag to `buf format` to exit with a non-zero exit code if
  the files were not already formatted.

## [v1.2.1] - 2022-03-24

- Fix a few formatting edge cases.

## [v1.2.0] - 2022-03-24

- Add `buf format` command to format `.proto` files.
- Fix build scripts to avoid using the `command-line-arguments` pseudo-package
  when building binaries and re-introduce checking for proper usage of private
  packages.

## [v1.1.1] - 2022-03-21

- Remove check for proper usage of private packages due to a breaking change made in the Golang standard library in 1.18.

## [v1.1.0] - 2022-03-01
- Add `--type` flag to the `build` command to create filtered images containing
  only the specified types and their required dependencies.
- Trim spaces and new lines from user-supplied token for `buf registry login`.
- Add support for conversion between JSON and binary serialized message for `buf beta convert`.

## [v1.0.0] - 2022-02-17

- Check that the user provided a valid token when running `buf registry login`.
- Add `buf mod open` that opens a module's homepage in a browser.
- Add `buf completion` command to generate auto-completion scripts in commonly used shells.
- Add `--disable-symlinks` flag to the `breaking, build, export, generate, lint, ls-files, push`
  commands. By default, the CLI will follow symlinks except on Windows, and this disables following
  symlinks.
- Add `--include-wkt` flag to `buf generate`. When this flag is specified alongside
  `--include-imports`, this will result in the [Well-Known Types](https://github.com/bufbuild/wellknowntypes/tree/11ea259bf71c4d386131c1986ffe103cb1edb3d6/v3.19.4/google/protobuf)
  being generated as well. Most language runtimes have the Well-Known Types included as part
  of the core library, making generating the Well-Known Types separately undesirable.
- Remove `buf protoc`. This was a pre-v1.0 demonstration to show that `buf` compilation
  produces equivalent results to mainline `protoc`, however `buf` is working on building
  a better Protobuf future that provides easier mechanics than our former `protoc`-based
  world. `buf protoc` itself added no benefit over mainline `protoc` beyond being considerably
  faster and allowing parallel compilation. If `protoc` is required, move back to mainline `protoc`
  until you can upgrade to `buf`. See [#915](https://github.com/bufbuild/buf/pull/915) for more
  details.
- Context modifier no longer overrides an existing token on the context. This allows `buf registry login`
  to properly check the user provided token without the token being overridden by the CLI interceptor.
- Removed the `buf config init` command in favor of `buf mod init`.
- Removed the `buf config ls-breaking-rules` command in favor of `buf mod ls-breaking-rules`.
- Removed the `buf config ls-lint-rules` command in favor of `buf mod ls-lint-rules`.
- Removed the `buf config migrate-v1beta1` command in favor of `buf beta migrate-v1beta1`.
- Add `buf beta decode` command to decode message with provided image source and message type.
- Disable `--config` flag for workspaces.
- Move default config version from `v1beta1` to `v1`.

## [v1.0.0-rc12] - 2022-02-01

- Add `default`, `except` and `override` to `java_package_prefix`.
- Add dependency commits as a part of the `b3` digest.
- Upgrade to `protoc` 3.19.4 support.
- Remove `branch` field from `buf.lock`.

## [v1.0.0-rc11] - 2022-01-18

- Upgrade to `protoc` 3.19.3 support.
- Add `PACKAGE_NO_IMPORT_CYCLE` lint rule to detect package import cycles.
- Add `buf beta registry {plugin,template} {deprecate,undeprecate}`.
- Add warning when using enterprise dependencies without specifying a enterprise
  remote in the module's identity.
- Remove `digest`, and `created_at` fields from the `buf.lock`. This will temporarily create a new commit
  when pushing the same contents to an existing repository, since the `ModulePin` has been reduced down.
- Add `--track` flag to `buf push`
- Update `buf beta registry commit list` to allow a track to be specified.
- Add `buf beta registry track {list,delete}` commands.
- Add manpages for `buf`.

## [v1.0.0-rc10] - 2021-12-16

- Fix issue where remote references were not correctly cached.

## [v1.0.0-rc9] - 2021-12-15

- Always set `compiler_version` parameter in the `CodeGeneratorRequest` to "(unknown)".
- Fix issue where `buf mod update` was unable to resolve dependencies from different remotes.
- Display the user-provided Buf Schema Registry remote, if specified, instead of the default within the `buf login` message.
- Fix issue where `buf generate` fails when the same plugin was specified more than once in a single invocation.
- Update the digest algorithm so that it encodes the `name`, `lint`, and `breaking` configuration encoded in the `buf.yaml`.
  When this change is deployed, users will observe the following:
  - Users on `v0.43.0` or before will notice mismatched digest errors similar to the one described in https://github.com/bufbuild/buf/issues/661.
  - Users on `v0.44.0` or after will have their module cache invalidated, but it will repair itself automatically.
  - The `buf.lock` (across all versions) will reflect the new `b3-` digest values for new commits.

## [v1.0.0-rc8] - 2021-11-10

- Add new endpoints to the recommendation service to make it configurable.
- Add `--exclude-path` flag to `buf breaking`, `buf build`, `buf export`, `buf generate`, and `buf lint` commands. This allows users to exclude specific paths when running commands.
- Change `GetModulePackages` endpoint to return a repeated `ModulePackage` message that now includes package description with the package name.
- Add `Oneof` to the `Message` structure for documentation.

## [v1.0.0-rc7] - 2021-11-08

- Upgrade to `protoc` 3.19.1 support.
- Fix issue with `buf generate` where multiple insertion points are defined in the same file.

## [v1.0.0-rc6] - 2021-10-20

- Fix issue with `buf ls-files` when given an image as an input, imports were being printed,
  even without the `--include-imports` flag.
- Add the ability for users to provide individual protobuf files as inputs to CLI commands. This allows users to run `buf` commands against and file input based on their current working directory, for example, `buf lint foo/bar.proto`, where `foo/bar.proto` is a path to protobuf file on disk.

## [v1.0.0-rc5] - 2021-10-12

- Add `buf beta registry repository deprecate` and `buf beta registry repository undeprecate`.
- Support `--include-imports` for remote plugins.
- Fix issue where `buf config migrate-v1beta1 fails` when files cannot be renamed.
- Fix issue where `buf registry login` panics when an existing .netrc entry exists.

## [v1.0.0-rc4] - 2021-10-07

- Fix issue where `buf generate` could fail when used with large numbers of plugins and files on
  systems with low file limits.
- Add `buf protoc --version` flag back. This was accidentally removed.
- Upgrade to `protoc` 3.18.1 support.

## [v1.0.0-rc3] - 2021-10-04

- Add `--as-import-paths` flag to `ls-files` that strips local directory paths and prints file
  paths as they are imported.
- Fix issue where groups used in custom options did not result in the same behavior as `protoc`.
- Fix issue where insertion points were not applied with respect to the configured output directory.

## [v1.0.0-rc2] - 2021-09-23

- Add `--include-imports` flag to `ls-files`.
- Upgrade to `protoc` 3.18.0 support.
- Fix regression with git inputs using `recurse_submodules=true`.

## [v1.0.0-rc1] - 2021-09-15

This is our first v1.0 release candidate. This release largely concentrates on erroring for
already-deprecated commands and flags.

At Buf, we take compatibility very seriously. When we say v1.0, we mean it - we hope `buf` will be
stable on v1 for the next decade, and if there is something we want to change, it is our responsibility to
make sure that we don't break you, not your responsibility to change because of us. We have learned
a lot about `buf` usage in the last two years of our beta, and have deprecated flags and commands as
we go, but for v1.0, we are removing the deprecated items to make sure we have a clean setup going forward.

All commands and flags have been printing warnings for a long time, and have an easy migration path.
Simply update the command or flag, and you'll be good to go:

- Removed the `buf login` command in favor of `buf registry login`.
- Removed the `buf logout` command in favor of `buf registry logout`.
- Removed the `buf mod init` command in favor of `buf config init`.
- Removed the `--name` and `--dep` flags in `buf config init`.
- Removed the `--log-level` global flag.
- Moved the output of `--version` from stderr to stdout.
- Moved the output of `--help` and `help` from stderr to stdout.
- [From v0.55.0](https://github.com/bufbuild/buf/releases/tag/v0.55.0): The version key in all configuration files (`buf.yaml`, `buf.gen.yaml`, `buf.work.yaml`) is now required.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta config init` command in favor of `buf config init`.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta mod export` command in favor of `buf export`.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta mod init` command in favor of `buf config init`.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta mod update` command in favor of `buf mod update`.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta mod clear-cache` command in favor of `buf mod clear-cache`.
- [From v0.45.0](https://github.com/bufbuild/buf/releases/tag/v0.45.0): Removed the `buf beta push` command in favor of `buf push`.
- [From v0.34.0](https://github.com/bufbuild/buf/releases/tag/v0.34.0): Removed the `buf check breaking` command in favor of `buf breaking`.
- [From v0.34.0](https://github.com/bufbuild/buf/releases/tag/v0.34.0): Removed the `buf check lint` command in favor of `buf lint`.
- [From v0.34.0](https://github.com/bufbuild/buf/releases/tag/v0.34.0): Removed the `buf check ls-lint-checkers` command in favor of `buf config ls-lint-rules`.
- [From v0.34.0](https://github.com/bufbuild/buf/releases/tag/v0.34.0): Removed the `buf check ls-breaking-checkers` command in favor of `buf config ls-breaking-rules`.
- [From v0.31.0](https://github.com/bufbuild/buf/releases/tag/v0.31.0): Removed the `--file` flag on `buf build` in favor of the `--path` flag.
- [From v0.31.0](https://github.com/bufbuild/buf/releases/tag/v0.31.0): Removed the `--file` flag on `buf lint` in favor of the `--path` flag.
- [From v0.31.0](https://github.com/bufbuild/buf/releases/tag/v0.31.0): Removed the `--file` flag on `buf breaking` in favor of the `--path` flag.
- [From v0.31.0](https://github.com/bufbuild/buf/releases/tag/v0.31.0): Removed the `--file` flag on `buf generate` in favor of the `--path` flag.
- [From v0.31.0](https://github.com/bufbuild/buf/releases/tag/v0.31.0): Removed the `--file` flag on `buf export` in favor of the `--path` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--source` flag on `buf build` in favor of the first positional parameter.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--source-config` flag on `buf build` in favor of the `--config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input` flag on `buf lint` in favor of the first positional parameter.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input-config` flag on `buf lint` in favor of the `--config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input` flag on `buf breaking` in favor of the first positional parameter.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input-config` flag on `buf breaking` in favor of the `--config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--against-input` flag on `buf breaking` in favor of the `--against` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--against-input-config` flag on `buf breaking` in favor of the `--against-config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input` flag on `buf generate` in favor of the first positional parameter.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input-config` flag on `buf generate` in favor of the `--config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input` flag on `buf ls-files` in favor of the first positional parameter.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `--input-config` flag on `buf ls-files` in favor of the `--config` flag.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `buf image build` command in favor of `buf build`.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `buf image convert` command.
- [From v0.29.0](https://github.com/bufbuild/buf/releases/tag/v0.29.0): Removed the `buf beta image convert` command.
- [From v0.23.0](https://github.com/bufbuild/buf/releases/tag/v0.23.0): Removed the `buf experimental image convert` command.
- [From v0.52.0](https://github.com/bufbuild/buf/releases/tag/v0.52.0) [and v0.34.0](https://github.com/bufbuild/buf/releases/tag/v0.34.0): Complete deletion `protoc-gen-buf-check-breaking` and `protoc-gen-buf-check-lint`, which have been moved to `protoc-gen-buf-breaking` and `protoc-gen-buf-lint`.

In January 2021 (v0.34.0), `protoc-gen-buf-check-breaking` and `protoc-gen-buf-check-lint` were deprecated and scheduled for removal for v1.0. In August 2021 (v0.52.0), we began returning error for every invocation of `protoc-gen-buf-check-breaking` and `protoc-gen-buf-check-lint`. This release completes the deletion process.

The only migration necessary is to change your installation and invocation from `protoc-gen-buf-check-breaking` to `protoc-gen-buf-breaking` and `protoc-gen-buf-check-lint` to `protoc-gen-buf-lint`. These can be installed in the exact same manner, whether from GitHub Releases, Homebrew, AUR, or direct Go installation:

```
# instead of go get github.com/bufbuild/buf/cmd/protoc-gen-buf-check-breaking
go get github.com/bufbuild/buf/cmd/protoc-gen-buf-breaking
# instead of curl -sSL https://github.com/bufbuild/buf/releases/download/v0.57.0/protoc-gen-buf-check-breaking-Linux-x86_64
curl -sSL https://github.com/bufbuild/buf/releases/download/v0.57.0/protoc-gen-buf-breaking-Linux-x86_64
```

## [v0.56.0] - 2021-09-08

- Cascade `ENUM_ZERO_VALUE_SUFFIX` comment ignores from the enum level.
- Fix issue where `buf generate --output` was not being respected in 0.55.0.

## [v0.55.0] - 2021-09-07

- Error if `version:` is not set in `buf.yaml`. This is one of the few breaking changes we must make before v1.0 to guarantee stability for the future. If you do not have a version set, simply add `version: v1beta1` to the top of your `buf.yaml`.
- Support `BUF_TOKEN` for authentication. `buf` will now look for a token in the `BUF_TOKEN` environment variable, falling back to `.netrc` as set via `buf login`.
- Add support for using remote plugins with local source files.
- Add per-file overrides for managed mode.
- Fix issue with the module cache where multiple simultaneous downloads would result in a temporarily-corrupted cache.
- Hide verbose messaing behind the `--verbose` (`-v`) flag.
- Add `--debug` flag to print out debug logging.

## [v0.54.1] - 2021-08-30

- Fix docker build.

## [v0.54.0] - 2021-08-30

- Add windows support.
- Add `java_package_prefix` support to managed mode.
- Fix issue with C# namespaces in managed mode.
- Fix issue where `:main` was appended for errors containing references to modules.

## [v0.53.0] - 2021-08-25

- Fix issue where `buf generate --include-imports` would end up generating files for certain imports twice.
- Error when both a `buf.mod` and `buf.yaml` are present. `buf.mod` was briefly used as the new default name for `buf.yaml`, but we've reverted back to `buf.yaml`.

## [v0.52.0] - 2021-08-19

Return error for all invocations of `protoc-gen-buf-check-breaking` and `protoc-gen-buf-check-lint`.

As one of the few changes buf will ever make, `protoc-gen-buf-check-breaking` and `protoc-gen-buf-check-lint` were deprecated and scheduled for removal for v1.0 in January 2021. In preparation for v1.0, instead of just printing out a message notifying users of this, these commands now return an error for every invocation and will be completely removed when v1.0 is released.

The only migration necessary is to change your installation and invocation from `protoc-gen-buf-check-breaking` to `protoc-gen-buf-breaking` and `protoc-gen-buf-check-lint` to `protoc-gen-buf-lint`. These can be installed in the exact same manner, whether from GitHub Releases, Homebrew, AUR, or direct Go installation:

```
# instead of go get github.com/bufbuild/buf/cmd/protoc-gen-buf-check-breaking
go get github.com/bufbuild/buf/cmd/protoc-gen-buf-breaking
# instead of curl -sSL https://github.com/bufbuild/buf/releases/download/v0.52.0/protoc-gen-buf-check-breaking-Linux-x86_64
curl -sSL https://github.com/bufbuild/buf/releases/download/v0.52.0/protoc-gen-buf-breaking-Linux-x86_64
```

There is no change in functionality.

## [v0.51.1] - 2021-08-16

- Fix issue with git LFS where a remote must be set for fetch.

## [v0.51.0] - 2021-08-13

- Accept packages of the form `v\d+alpha` and `v\d+beta` as packages with valid versions. These will be considered unstable packages for the purposes of linting and breaking change detection if `ignore_unstable_packages` is set.
- Fix issue with git clones that occurred when using a previous reference of the current branch.

## [v0.50.0] - 2021-08-12

- Add `buf generate --include-imports` that also generates all imports except for the Well-Known Types.
- Fix issue where a deleted file within an unstable package that contained messages, enums, or services resulted in a breaking change failure if the `PACKAGE` category was used and `ignore_unstable_packages` was set.

## [v0.49.0] - 2021-08-10

- Split `FIELD_SAME_TYPE` breaking change rule into `FIELD_SAME_TYPE, FIELD_WIRE_COMPATIBLE_TYPE, FIELD_WIRE_JSON_COMPATIBLE_TYPE` in `v1`. See https://github.com/bufbuild/buf/pull/400 for details.
- Only export imported dependencies from `buf export`.

## [v0.48.2] - 2021-07-30

- Fix git args for http auth with git lfs.

## [v0.48.1] - 2021-07-30

- Fix: use `-c` on `git` parent command instead of `--config` on `git fetch`.
- Add `ruby_package` to managed mode.

## [v0.48.0] - 2021-07-29

- Add `buf export`. `buf export` will export the files from the specified input (default `"."`) to the given directory in a manner that is buildable by `protoc` without any `-I` flags. It also has options `--exclude-imports`, which excludes imports (and won't result in a buildable set of files), and `--path`, which filters to the specific paths.

## [v0.47.0] - 2021-07-29

- Rewrite the git cloner to use `git init && git fetch` rather than `git clone`. `git clone` is limited to local branches on the remote, whereas `git fetch` we can fetch any references on the remote including remote branches.
- Add `php_namespace` managed mode handling.
- Add `java_string_check_utf8` managed mode handling.

## [v0.46.0] - 2021-07-27

- Add `buf login` and `buf logout` to login and logout from the Buf Schema Registry.
- Fix cache, configuration, and data environment variables for Windows. Note that while Windows is still not officially supported, `buf` largely works on Windows.

## [v0.45.0] - 2021-07-26

- Revert default configuration file location back from `buf.mod` to `buf.yaml`. Note that both continue to work.
- Move default workspace configuration file location from `buf.work` to `buf.work.yaml`. Note that both continue to work.
- Move `buf beta push` to `buf push`. Note that `buf beta push` continues to work.
- Move most `buf beta mod` commands to `buf mod`. Note that all `buf beta mod` commands continue to work.
- Add `--only` flag to `buf mod update`.
- Warn if `buf.yaml` contains dependencies that are not represented in the `buf.lock` file.
- Add `--version` flag to `buf config ls-{breaking,lint}-rules`.
- Add `SYNTAX_SPECIFIED` lint rule to `BASIC, DEFAULT` categories for v1 configuration.
- Add `IMPORT_USED` lint rule to `BASIC, DEFAULT` categories for v1 configuration.
- Bring v1 configuration out of beta.
- Add managed mode for `objc_class_prefix`, `csharp_namespace`.

## [v0.44.0] - 2021-07-08

- Fix issue where C++ scoping rules were not properly enforced.
- Add support for splitting directory paths passed to `buf protoc -I` by a directory separator.
- Fix Windows support for builtin `protoc` plugins when using `buf generate` or `buf protoc`. Note that Windows remains officially unsupported as we have not set up testing, but largely works.
- Upgrade to `protoc` 3.17.3 support.
- Change the default module configuration location from `buf.yaml` to `buf.mod`. Note that `buf.yaml` continues to work.
- Continued work on the workspaces beta, including the `v1` configuration specification.
- Continued work on the managed mode beta, including the `v1` configuration specification.
- Add `v1` module configuration specification in beta - please continue to use `v1beta1` until the `v1` configuration specification is rolled out.
- Add `buf config migrate-v1beta1`.

## [v0.43.2] - 2021-05-31

- Fix namespace resolution diff with protoc.

## [v0.43.1] - 2021-05-28

- Revert `protoc` namespace resolution diff change.

## [v0.43.0] - 2021-05-28

- Do not count `buf:lint:ignore` directives as valid comments for the `COMMENT_.*` lint rules.
- Upgrade to `protoc` 3.17.1 support.
- Fix namespace resolution diff with `protoc`.

## [v0.42.1] - 2021-05-20

- Change the architecture suffix of the Linux ARM release assets from `arm64` to `aarch64` to match the output of `uname -m` on Linux.

## [v0.42.0] - 2021-05-20

- Add managed mode in beta. This is a new feature that automatically sets file option values.
- Add workspaces in beta. This is a new feature that allows multiple modules within the same directory structure.
- Add arm64 releases.

## [v0.41.0] - 2021-04-01

* Add `MESSAGE_SAME_REQUIRED_FIELDS` breaking change rule. This checks to make sure no `required` fields are added or deleted from existing messages.
* Support multi-architecture Docker image.
* Exit with code 100 for `FileAnnotation` errors.

## [v0.40.0] - 2021-03-15

* Add `buf beta registry tag {create,list}` commands.
* Add support for creating tags in `push` via `buf beta push -t`.
* Fix an issue where errors were unnecessarily written in `buf lint` and `buf breaking`.

## [v0.39.1] - 2021-03-04

- Fix issue with CLI build process in 0.39.0.

## [v0.39.0] - 2021-03-04

* `buf beta push` doesn't create a new commit if the content of the push is the same as the latest commit on the branch.
* Fix an issue where no error was shown when authentication failed.
* Fix an issue where `buf protoc` would error if a plugin returned an empty error string.

## [v0.38.0] - 2021-02-25

- Update the tested `protoc` version for compatibility to 3.15.2. The `--experimental_allow_proto3_optional` flag is no longer set for versions >=3.15.
- Update the Well-Known Types to 3.15.2. The `go_package` values for the Well-Known Types now point at google.golang.org/protobuf instead of github.com/golang/protobuf.

## [v0.37.1] - 2021-02-23

- Fix bug where authentication headers were not threaded through for certain Buf Schema Registry commands.
- Fix issue where empty errors would incorrectly be wrapped by the CLI interceptor.
- Update Buf module cache location to include remote.

## [v0.37.0] - 2021-02-09

- Add commands for the Buf Schema Registry. Visit our website to add yourself to [the waitlist](https://buf.build/waitlist).

## [v0.36.0] - 2021-01-18

Allows comment ignores of the form `// buf:lint:ignore ID` to be cascaded upwards for specific rules.

- For  `ENUM_VALUE_PREFIX, ENUM_VALUE_UPPER_SNAKE_CASE`, both the enum value and the enum are checked.
- For `FIELD_LOWER_SNAKE_CASE, FIELD_NO_DESCRIPTOR`, both the field and message are checked.
- For `ONEOF_LOWER_SNAKE_CASE`, both the oneof and message are checked.
- For `RPC_NO_CLIENT_STREAMING, RPC_NO_SERVER_STREAMING, RPC_PASCAL_CASE, RPC_REQUEST_RESPONSE_UNIQUE`, both the method and service are checked.
- For `RPC_REQUEST_STANDARD_NAME, RPC_RESPONSE_STANDARD_NAME`, the input/output type, method, and service are checked.

## [v0.35.1] - 2021-01-08

- Fix error when unmarshalling plugin configuration with no options (#236)

## [v0.35.0] - 2021-01-07

- Allow `opt` in `buf.gen.yaml` files to be either a single string, or a list of strings. Both of the following forms are accepted, and result in `foo=bar,baz,bat`:

```yaml
version: v1beta1
plugins:
  - name: foo
    out: out
    opt: foo=bar,baz,bat
```

```yaml
version: v1beta1
plugins:
  - name: foo
    out: out
    opt:
      - foo=bar
      - baz
      - bat
```

## [v0.34.0] - 2021-01-04

- Move `buf check lint` to `buf lint`.
- Move `buf check breaking` to `buf breaking`.
- Move `buf check ls-lint-checkers` to `buf config ls-lint-rules`.
- Move `buf check ls-breaking-checkers` to `buf config ls-breaking-rules`.
- Move `protoc-gen-buf-check-lint` to `protoc-gen-buf-lint`.
- Move `protoc-gen-buf-check-breaking` to `protoc-gen-buf-breaking`.
- Add `buf beta config init`.

All previous commands continue to work in a backwards-compatible manner, and the previous `protoc-gen-buf-check-lint` and `protoc-gen-buf-check-breaking` binaries continue to be available at the same paths, however deprecation messages are printed.

## [v0.33.0] - 2020-12-12

- Add `strategy` option to `buf.gen.yaml` generation configuration. This allows selecting either plugin invocations with files on a per-directory basis, or plugin invocations with all files at once. See the [generation documentation](https://docs.buf.build/generate-usage) for more details.

## [v0.32.1] - 2020-12-10

- Fix issue where `SourceCodeInfo` for map fields within nested messages could be dropped.
- Fix issue where deleted files would cause a panic when `breaking.ignore_unstable_packages = true`.

## [v0.32.0] - 2020-11-24

- Add symlink support for directory inputs. Symlinks will now be followed within your local directories when running `buf` commands.
- Add the `breaking.ignore_unstable_packages` option to allow ignoring of unstable packages when running `buf check breaking`. See [the documentation](https://docs.buf.build/breaking-configuration#ignore_unstable_packages) for more details.
- Enums that use the `allow_alias` option that add new aliases to a given number will no longer be considered breaking by `ENUM_VALUE_SAME_NAME`. See [the documentation](https://docs.buf.build/breaking-checkers#enum_value_same_name) for more details.

## [v0.31.1] - 2020-11-17

- Fix issue where `--experimental_allow_proto3_optional` was not set when proxying to `protoc` for the builtin plugins via `buf generate` or `buf protoc`. This flag is now set for `protoc` versions >= 3.12.

## [v0.31.0] - 2020-11-16

- Change the `--file` flag to `--path` and allow `--path` to take both files and directories, instead of just files with the old `--file`. This flag is used to filter the actual Protobuf files built under an input for most commands. You can now do for example `buf generate --path proto/foo` to only generate stubs for the files under `proto/foo`. Note that the `--file` flag continues to work, but prints a deprecation message.

## [v0.30.1] - 2020-11-12

- Relax validation of response file names from protoc plugins, so that when possible, plugins that are not compliant with the plugin specification are still usable with `buf generate`.

## [v0.30.0] - 2020-11-03

- Add `git://` protocol handling.

## [v0.29.0] - 2020-10-30

As we work towards v1.0, we are cleaning up the CLI UX. As part of this, we made the following changes:

- `buf image build` has been moved to `buf build` and now accepts images as inputs.
- `buf beta image convert` has been deleted, as `buf build` now covers this functionality.
- The `-o` flag is no longer required for `buf build`, instead defaulting to the OS equivalent of `/dev/null`.
- The `--source` flag on `buf build` has been deprecated in favor of passing the input as the first argument.
- The `--source-config` flag on `buf build` has been moved to `--config`.
- The `--input` flag on `buf check lint` has been deprecated in favor of passing the input as the first argument.
- The `--input-config` flag on `buf check lint` has been moved to `--config`.
- The `--input` flag on `buf check breaking` has been deprecated in favor of passing the input as the first argument.
- The `--input-config` flag on `buf check breaking` has been moved to `--config`.
- The `--against-input` flag on `buf check breaking` has been moved to `--against`.
- The `--against-input-config` flag on `buf check breaking` has been moved to `--against-config`.
- The `--input` flag on `buf generate` has been deprecated in favor of passing the input as the first argument.
- The `--input-config` flag on `buf generate` has been moved to `--config`.
- The `--input` flag on `buf ls-files` has been deprecated in favor of passing the input as the first argument.
- The `--input-config` flag on `buf ls-files` has been moved to `--config`.

We feel these changes make using `buf` more natural. Examples:

```
# compile the files in the current directory
buf build
# equivalent to the default no-arg invocation
buf build .
# build the repository at https://github.com/foo/bar.git
buf build https://github.com/foo/bar.git
# lint the files in the proto directory
buf check lint proto
# check the files in the current directory against the files on the master branch for breaking changes
buf check breaking --against .git#branch=master
# check the files in the proto directory against the files in the proto directory on the master branch
buf check breaking proto --against .git#branch=master,subdir=proto
```

**Note that existing commands and flags continue to work.** While the deprecation messages will be printed, and we recommend migrating to the new invocations, your existing invocations have no change in functionality.

## [v0.28.0] - 2020-10-21

- Add `subdir` option for archive and git [Inputs](https://buf.build/docs/inputs). This allows placement of the `buf.yaml` configuration file in directories other than the base of your repository. You then can check against this subdirectory using, for example, `buf check breaking --against-input https://github.com/foo/bar.git#subdir=proto`.

## [v0.27.1] - 2020-10-16

- Fix minor typo in `buf help generate` documentation.

## [v0.27.0] - 2020-10-16

- Move `buf beta generate` out of beta to `buf generate`. This command now uses a template of configured plugins to generate stubs. See `buf help generate` for more details.

## [v0.26.0] - 2020-10-13

- Add jar and zip support to `buf protoc` and `buf beta generate`.

## [v0.25.0] - 2020-10-09

- Add the concept of configuration file version. The only currently-available version is `v1beta1`. See [buf.build/docs/faq](https://buf.build/docs/faq) for more details.

## [v0.24.0] - 2020-09-21

- Add fish completion to releases.
- Update the `protoc` version for `buf protoc` to be `3.13.0`.

## [v0.23.0] - 2020-09-11

- Move the `experimental` parent command to `beta`. The command `buf experimental image convert` continues to work, but is deprecated in favor of `buf beta image convert`.
- Add `buf beta generate`.

## [v0.22.0] - 2020-09-09

- Add [insertion point](https://github.com/protocolbuffers/protobuf/blob/cdf5022ada7159f0c82888bebee026cbbf4ac697/src/google/protobuf/compiler/plugin.proto#L135) support to `buf protoc`.

## [v0.21.0] - 2020-09-02

- Fix issue where `optional` fields in proto3 would cause the `ONEOF_LOWER_SNAKE_CASE` lint checker to fail.

## [v0.20.5] - 2020-07-24

- Fix issue where parser would fail on files starting with [byte order marks](https://en.wikipedia.org/wiki/Byte_order_mark#UTF-8).

## [v0.20.4] - 2020-07-21

- Fix issue where custom message options that had an unset map field could cause a parser failure.

## [v0.20.3] - 2020-07-18

- Fix issue where parameters passed with `--.*_opt` to `buf protoc` for builtin plugins were not properly propagated.

## [v0.20.2] - 2020-07-17

- Fix issue where roots containing non-proto files with the same path would cause an error.

## [v0.20.1] - 2020-07-14

- Fix issue where Zsh completion would fail due to some flags having brackets in their description.
- Fix issue where non-builtin protoc plugin invocations would not have errors properly propagated.
- Fix issue where multiple `--.*_opt` flags, `--.*_opt` flags with commas, or `--.*_out` flags with options that contained commas, would not be properly added.

## [v0.20.0] - 2020-07-13

- Add `--by-dir` flag to `buf protoc` that parallelizes generation per directory, resulting in a 25-75% reduction in the time taken to generate stubs for medium to large file sets.
- Properly clean up temporary files and commands on interrupts.
- Fix issue where certain files that started with invalid Protobuf would cause the parser to crash.

## [v0.19.1] - 2020-07-10

- Fix issue where stderr was not being propagated for protoc plugins in CLI mode.

## [v0.19.0] - 2020-07-10

- Add `protoc` command. This is a substitute for `protoc` that uses Buf's internal compiler.
- Add `ENUM_FIRST_VALUE_ZERO` lint checker to the `OTHER` category.
- Add support for the Visual Studio error format.

## [v0.18.1] - 2020-06-25

- Fix issue where linking errors for custom options that had a message type were not properly reported (#93)

## [v0.18.0] - 2020-06-22

- Handle custom options when marshalling JSON images (#87).
- Add `buf experimental image convert` command to convert to/from binary/JSON images (#87).

## [v0.17.0] - 2020-06-17

- Add git ref support to allow specifying arbitrary git references as inputs (https://github.com/bufbuild/buf/issues/48). This allows you to do i.e. `buf check lint --input https://github.com/bufbuild/buf.git#ref=fa74aa9c4161304dfa83db4abc4a0effe886d253`.
- Add `depth` input option when specifying git inputs with `ref`. This allows the user to configure the depth at which to clone the repository when looking for the `ref`. If specifying a `ref`, this defaults to 50. Otherwise, this defaults to 1.
- Remove requirement for git branch or tag in inputs. This allows you to do i.e. `buf check lint --input https://github.com/bufbuild/buf.git` and it will automatically choose the default branch as an input.

## [v0.16.0] - 2020-06-02

- Add [proto3 optional](https://github.com/protocolbuffers/protobuf/blob/7cb5597013f0c4b978f02bce4330849f118aa853/docs/field_presence.md#how-to-enable-explicit-presence-in-proto3) support.

## [v0.15.0] - 2020-05-31

- Add opt-in comment-driven lint ignores via the `allow_comment_ignores` lint configuration option and `buf:lint:ignore ID` leading comment annotation (#73).

## [v0.14.0] - 2020-05-30

- Add `--file` flag to `buf image build` to only add specific files and their imports to outputted images. To exclude imports, use `--exclude-imports`.
- Add `zip` as a source format. Buf can now read `zip` files, either locally or remotely, for image building, linting, and breaking change detection.
- Add `zstd` as a compression format. Buf can now read and write Image files that are compressed using zstandard, and can read tarballs compressed with zstandard.
- Deprecated: The formats `bingz, jsongz, targz` are now deprecated. Instead, use `format=bin,compression=gzip`, `format=json,compression=gzip`, or `format=tar,compression=gzip`. The formats `bingz, jsongz, targz` will continue to work forever and will not be broken, but will print a deprecation warning and we recommend updating. Automatic file extension parsing continues to work the same as well.

## [v0.13.0] - 2020-05-17

- Use the `git` binary instead of go-git for internal clones. This also enables using your system git credential management for git repositories cloned using https or ssh. See https://buf.build/docs/inputs#authentication for more details.

## [v0.12.1] - 2020-05-11

- Fix issue where roots were detected as overlapping if one root's name was a prefix of the other.

## [v0.12.0] - 2020-05-11

- Add netrc support for inputs.
- Fix issue where filenames that contained `..` resulted in an error.
- Internal: migrate to golang/protobuf v2.

## [v0.11.0] - 2020-04-09

- Add experimental flag `--experimental-git-clone` to use the `git` binary for git clones.

## [v0.10.0] - 2020-04-06

- Add `recurse_submodules` option for git inputs.
  Example: `https://github.com/foo/bar.git#branch=master,recurse_submodules=true`

## [v0.9.0] - 2020-03-25

- Fix issue where the option value ordering on an outputted `Image` was non-deterministic.
- Fix issue where the `SourceCodeInfo` for the Well-Known Types was not included on an outputted `Image` when requested.

## [v0.8.0] - 2020-03-11

- Update dependencies.

## [v0.7.1] - 2020-03-05

- Tie HTTP download timeout to the `--timeout` flag.

## [v0.7.0] - 2020-01-31

- Add `tag` option for git inputs.

## [v0.6.0] - 2020-01-17

- Add `git` to the Docker container for local filesystem clones.
- Update the JSON error format to use `path` as the file path key instead of `filename`.

## [v0.5.0] - 2020-01-01

- Allow basic authentication for remote tarballs, git repositories, and image files served from HTTPS endpoints. See https://buf.build/docs/inputs#https for more details.
- Allow public key authentication for remote git repositories served from SSH endpoints. See https://buf.build/docs/inputs#ssh for more details.

## [v0.4.1] - 2019-12-30

- Fix issue where comparing enum values for enums that have `allow_alias` set and duplicate enum values present resulted in a system error.

## [v0.4.0] - 2019-12-05

- Change the breaking change detector to compare enum values on number instead of name. This also results in the `ENUM_VALUE_SAME_NUMBER` checker being replaced with the `ENUM_VALUE_SAME_NAME` checker, except this new checker is not in the `WIRE` category.

## [v0.3.0] - 2019-11-05

- Fix issue where multiple timeout errors were printed.
- Add `buf check lint --error-format=config-ignore-yaml` to print out current lint errors in a format that can be copied into a configuration file.

## [v0.2.0] - 2019-10-28

- Add a Docker image for the `buf` binary.

## v0.1.0 - 2019-10-18

Initial beta release.

[Unreleased]: https://github.com/bufbuild/buf/compare/v1.66.1...HEAD
[v1.66.1]: https://github.com/bufbuild/buf/compare/v1.66.0...v1.66.1
[v1.66.0]: https://github.com/bufbuild/buf/compare/v1.65.0...v1.66.0
[v1.65.0]: https://github.com/bufbuild/buf/compare/v1.64.0...v1.65.0
[v1.64.0]: https://github.com/bufbuild/buf/compare/v1.63.0...v1.64.0
[v1.63.0]: https://github.com/bufbuild/buf/compare/v1.62.1...v1.63.0
[v1.62.1]: https://github.com/bufbuild/buf/compare/v1.62.0...v1.62.1
[v1.62.0]: https://github.com/bufbuild/buf/compare/v1.61.0...v1.62.0
[v1.61.0]: https://github.com/bufbuild/buf/compare/v1.60.0...v1.61.0
[v1.60.0]: https://github.com/bufbuild/buf/compare/v1.59.0...v1.60.0
[v1.59.0]: https://github.com/bufbuild/buf/compare/v1.58.0...v1.59.0
[v1.58.0]: https://github.com/bufbuild/buf/compare/v1.57.2...v1.58.0
[v1.57.2]: https://github.com/bufbuild/buf/compare/v1.57.1...v1.57.2
[v1.57.1]: https://github.com/bufbuild/buf/compare/v1.57.0...v1.57.1
[v1.57.0]: https://github.com/bufbuild/buf/compare/v1.56.0...v1.57.0
[v1.56.0]: https://github.com/bufbuild/buf/compare/v1.55.1...v1.56.0
[v1.55.1]: https://github.com/bufbuild/buf/compare/v1.55.0...v1.55.1
[v1.55.0]: https://github.com/bufbuild/buf/compare/v1.54.0...v1.55.0
[v1.54.0]: https://github.com/bufbuild/buf/compare/v1.53.0...v1.54.0
[v1.53.0]: https://github.com/bufbuild/buf/compare/v1.52.1...v1.53.0
[v1.52.1]: https://github.com/bufbuild/buf/compare/v1.52.0...v1.52.1
[v1.52.0]: https://github.com/bufbuild/buf/compare/v1.51.0...v1.52.0
[v1.51.0]: https://github.com/bufbuild/buf/compare/v1.50.1...v1.51.0
[v1.50.1]: https://github.com/bufbuild/buf/compare/v1.50.0...v1.50.1
[v1.50.0]: https://github.com/bufbuild/buf/compare/v1.49.0...v1.50.0
[v1.49.0]: https://github.com/bufbuild/buf/compare/v1.48.0...v1.49.0
[v1.48.0]: https://github.com/bufbuild/buf/compare/v1.47.2...v1.48.0
[v1.47.2]: https://github.com/bufbuild/buf/compare/v1.47.1...v1.47.2
[v1.47.1]: https://github.com/bufbuild/buf/compare/v1.47.0...v1.47.1
[v1.47.0]: https://github.com/bufbuild/buf/compare/v1.46.0...v1.47.0
[v1.46.0]: https://github.com/bufbuild/buf/compare/v1.45.0...v1.46.0
[v1.45.0]: https://github.com/bufbuild/buf/compare/v1.44.0...v1.45.0
[v1.44.0]: https://github.com/bufbuild/buf/compare/v1.43.0...v1.44.0
[v1.43.0]: https://github.com/bufbuild/buf/compare/v1.42.0...v1.43.0
[v1.42.0]: https://github.com/bufbuild/buf/compare/v1.41.0...v1.42.0
[v1.41.0]: https://github.com/bufbuild/buf/compare/v1.40.1...v1.41.0
[v1.40.1]: https://github.com/bufbuild/buf/compare/v1.40.0...v1.40.1
[v1.40.0]: https://github.com/bufbuild/buf/compare/v1.39.0...v1.40.0
[v1.39.0]: https://github.com/bufbuild/buf/compare/v1.38.0...v1.39.0
[v1.38.0]: https://github.com/bufbuild/buf/compare/v1.37.0...v1.38.0
[v1.37.0]: https://github.com/bufbuild/buf/compare/v1.36.0...v1.37.0
[v1.36.0]: https://github.com/bufbuild/buf/compare/v1.35.1...v1.36.0
[v1.35.1]: https://github.com/bufbuild/buf/compare/v1.35.0...v1.35.1
[v1.35.0]: https://github.com/bufbuild/buf/compare/v1.34.0...v1.35.0
[v1.34.0]: https://github.com/bufbuild/buf/compare/v1.33.0...v1.34.0
[v1.33.0]: https://github.com/bufbuild/buf/compare/v1.32.2...v1.33.0
[v1.32.2]: https://github.com/bufbuild/buf/compare/v1.32.1...v1.32.2
[v1.32.1]: https://github.com/bufbuild/buf/compare/v1.32.0...v1.32.1
[v1.32.0]: https://github.com/bufbuild/buf/compare/v1.32.0-beta.1...v1.32.0
[v1.32.0-beta.1]: https://github.com/bufbuild/buf/compare/v1.31.0...v1.32.0-beta.1
[v1.31.0]: https://github.com/bufbuild/buf/compare/v1.30.1...v1.31.0
[v1.30.1]: https://github.com/bufbuild/buf/compare/v1.30.0...v1.30.1
[v1.30.0]: https://github.com/bufbuild/buf/compare/v1.29.0...v1.30.0
[v1.29.0]: https://github.com/bufbuild/buf/compare/v1.28.1...v1.29.0
[v1.28.1]: https://github.com/bufbuild/buf/compare/v1.28.0...v1.28.1
[v1.28.0]: https://github.com/bufbuild/buf/compare/v1.27.2...v1.28.0
[v1.27.2]: https://github.com/bufbuild/buf/compare/v1.27.1...v1.27.2
[v1.27.1]: https://github.com/bufbuild/buf/compare/v1.27.0...v1.27.1
[v1.27.0]: https://github.com/bufbuild/buf/compare/v1.26.1...v1.27.0
[v1.26.1]: https://github.com/bufbuild/buf/compare/v1.26.0...v1.26.1
[v1.26.0]: https://github.com/bufbuild/buf/compare/v1.25.1...v1.26.0
[v1.25.1]: https://github.com/bufbuild/buf/compare/v1.25.0...v1.25.1
[v1.25.0]: https://github.com/bufbuild/buf/compare/v1.24.0...v1.25.0
[v1.24.0]: https://github.com/bufbuild/buf/compare/v1.23.1...v1.24.0
[v1.23.1]: https://github.com/bufbuild/buf/compare/v1.23.0...v1.23.1
[v1.23.0]: https://github.com/bufbuild/buf/compare/v1.22.0...v1.23.0
[v1.22.0]: https://github.com/bufbuild/buf/compare/v1.21.0...v1.22.0
[v1.21.0]: https://github.com/bufbuild/buf/compare/v1.20.0...v1.21.0
[v1.20.0]: https://github.com/bufbuild/buf/compare/v1.19.0...v1.20.0
[v1.19.0]: https://github.com/bufbuild/buf/compare/v1.18.0...v1.19.0
[v1.18.0]: https://github.com/bufbuild/buf/compare/v1.17.0...v1.18.0
[v1.17.0]: https://github.com/bufbuild/buf/compare/v1.16.0...v1.17.0
[v1.16.0]: https://github.com/bufbuild/buf/compare/v1.15.1...v1.16.0
[v1.15.1]: https://github.com/bufbuild/buf/compare/v1.15.0...v1.15.1
[v1.15.0]: https://github.com/bufbuild/buf/compare/v1.14.0...v1.15.0
[v1.14.0]: https://github.com/bufbuild/buf/compare/v1.13.1...v1.14.0
[v1.13.1]: https://github.com/bufbuild/buf/compare/v1.13.0...v1.13.1
[v1.13.0]: https://github.com/bufbuild/buf/compare/v1.12.0...v1.13.0
[v1.12.0]: https://github.com/bufbuild/buf/compare/v1.11.0...v1.12.0
[v1.11.0]: https://github.com/bufbuild/buf/compare/v1.10.0...v1.11.0
[v1.10.0]: https://github.com/bufbuild/buf/compare/v1.9.0...v1.10.0
[v1.9.0]: https://github.com/bufbuild/buf/compare/v1.8.0...v1.9.0
[v1.8.0]: https://github.com/bufbuild/buf/compare/v1.7.0...v1.8.0
[v1.7.0]: https://github.com/bufbuild/buf/compare/v1.6.0...v1.7.0
[v1.6.0]: https://github.com/bufbuild/buf/compare/v1.5.0...v1.6.0
[v1.5.0]: https://github.com/bufbuild/buf/compare/v1.4.0...v1.5.0
[v1.4.0]: https://github.com/bufbuild/buf/compare/v1.3.1...v1.4.0
[v1.3.1]: https://github.com/bufbuild/buf/compare/v1.3.0...v1.3.1
[v1.3.0]: https://github.com/bufbuild/buf/compare/v1.2.1...1.3.0
[v1.2.1]: https://github.com/bufbuild/buf/compare/v1.2.0...v1.2.1
[v1.2.0]: https://github.com/bufbuild/buf/compare/v1.1.1...v1.2.0
[v1.1.1]: https://github.com/bufbuild/buf/compare/v1.1.0...v1.1.1
[v1.1.0]: https://github.com/bufbuild/buf/compare/v1.0.0...v1.1.0
[v1.0.0]: https://github.com/bufbuild/buf/compare/v1.0.0-rc12...v1.0.0
[v1.0.0-rc12]: https://github.com/bufbuild/buf/compare/v1.0.0-rc11...v1.0.0-rc12
[v1.0.0-rc11]: https://github.com/bufbuild/buf/compare/v1.0.0-rc10...v1.0.0-rc11
[v1.0.0-rc10]: https://github.com/bufbuild/buf/compare/v1.0.0-rc9...v1.0.0-rc10
[v1.0.0-rc9]: https://github.com/bufbuild/buf/compare/v1.0.0-rc8...v1.0.0-rc9
[v1.0.0-rc8]: https://github.com/bufbuild/buf/compare/v1.0.0-rc7...v1.0.0-rc8
[v1.0.0-rc7]: https://github.com/bufbuild/buf/compare/v1.0.0-rc6...v1.0.0-rc7
[v1.0.0-rc6]: https://github.com/bufbuild/buf/compare/v1.0.0-rc5...v1.0.0-rc6
[v1.0.0-rc5]: https://github.com/bufbuild/buf/compare/v1.0.0-rc4...v1.0.0-rc5
[v1.0.0-rc4]: https://github.com/bufbuild/buf/compare/v1.0.0-rc3...v1.0.0-rc4
[v1.0.0-rc3]: https://github.com/bufbuild/buf/compare/v1.0.0-rc2...v1.0.0-rc3
[v1.0.0-rc2]: https://github.com/bufbuild/buf/compare/v1.0.0-rc1...v1.0.0-rc2
[v1.0.0-rc1]: https://github.com/bufbuild/buf/compare/v0.56.0...v1.0.0-rc1
[v0.56.0]: https://github.com/bufbuild/buf/compare/v0.55.0...v0.56.0
[v0.55.0]: https://github.com/bufbuild/buf/compare/v0.54.1...v0.55.0
[v0.54.1]: https://github.com/bufbuild/buf/compare/v0.54.0...v0.54.1
[v0.54.0]: https://github.com/bufbuild/buf/compare/v0.53.0...v0.54.0
[v0.53.0]: https://github.com/bufbuild/buf/compare/v0.52.0...v0.53.0
[v0.52.0]: https://github.com/bufbuild/buf/compare/v0.51.1...v0.52.0
[v0.51.1]: https://github.com/bufbuild/buf/compare/v0.51.0...v0.51.1
[v0.51.0]: https://github.com/bufbuild/buf/compare/v0.50.0...v0.51.0
[v0.50.0]: https://github.com/bufbuild/buf/compare/v0.49.0...v0.50.0
[v0.49.0]: https://github.com/bufbuild/buf/compare/v0.48.2...v0.49.0
[v0.48.2]: https://github.com/bufbuild/buf/compare/v0.48.1...v0.48.2
[v0.48.1]: https://github.com/bufbuild/buf/compare/v0.48.0...v0.48.1
[v0.48.0]: https://github.com/bufbuild/buf/compare/v0.47.0...v0.48.0
[v0.47.0]: https://github.com/bufbuild/buf/compare/v0.46.0...v0.47.0
[v0.46.0]: https://github.com/bufbuild/buf/compare/v0.45.0...v0.46.0
[v0.45.0]: https://github.com/bufbuild/buf/compare/v0.44.0...v0.45.0
[v0.44.0]: https://github.com/bufbuild/buf/compare/v0.43.2...v0.44.0
[v0.43.2]: https://github.com/bufbuild/buf/compare/v0.43.1...v0.43.2
[v0.43.1]: https://github.com/bufbuild/buf/compare/v0.43.0...v0.43.1
[v0.43.0]: https://github.com/bufbuild/buf/compare/v0.42.1...v0.43.0
[v0.42.1]: https://github.com/bufbuild/buf/compare/v0.42.0...v0.42.1
[v0.42.0]: https://github.com/bufbuild/buf/compare/v0.41.0...v0.42.0
[v0.41.0]: https://github.com/bufbuild/buf/compare/v0.40.0...v0.41.0
[v0.40.0]: https://github.com/bufbuild/buf/compare/v0.39.1...v0.40.0
[v0.39.1]: https://github.com/bufbuild/buf/compare/v0.39.0...v0.39.1
[v0.39.0]: https://github.com/bufbuild/buf/compare/v0.38.0...v0.39.0
[v0.38.0]: https://github.com/bufbuild/buf/compare/v0.37.1...v0.38.0
[v0.37.1]: https://github.com/bufbuild/buf/compare/v0.37.0...v0.37.1
[v0.37.0]: https://github.com/bufbuild/buf/compare/v0.36.0...v0.37.0
[v0.36.0]: https://github.com/bufbuild/buf/compare/v0.35.1...v0.36.0
[v0.35.1]: https://github.com/bufbuild/buf/compare/v0.35.0...v0.35.1
[v0.35.0]: https://github.com/bufbuild/buf/compare/v0.34.0...v0.35.0
[v0.34.0]: https://github.com/bufbuild/buf/compare/v0.33.0...v0.34.0
[v0.33.0]: https://github.com/bufbuild/buf/compare/v0.32.1...v0.33.0
[v0.32.1]: https://github.com/bufbuild/buf/compare/v0.32.0...v0.32.1
[v0.32.0]: https://github.com/bufbuild/buf/compare/v0.31.1...v0.32.0
[v0.31.1]: https://github.com/bufbuild/buf/compare/v0.31.0...v0.31.1
[v0.31.0]: https://github.com/bufbuild/buf/compare/v0.30.1...v0.31.0
[v0.30.1]: https://github.com/bufbuild/buf/compare/v0.30.0...v0.30.1
[v0.30.0]: https://github.com/bufbuild/buf/compare/v0.29.0...v0.30.0
[v0.29.0]: https://github.com/bufbuild/buf/compare/v0.28.0...v0.29.0
[v0.28.0]: https://github.com/bufbuild/buf/compare/v0.27.1...v0.28.0
[v0.27.1]: https://github.com/bufbuild/buf/compare/v0.27.0...v0.27.1
[v0.27.0]: https://github.com/bufbuild/buf/compare/v0.26.0...v0.27.0
[v0.26.0]: https://github.com/bufbuild/buf/compare/v0.25.0...v0.26.0
[v0.25.0]: https://github.com/bufbuild/buf/compare/v0.24.0...v0.25.0
[v0.24.0]: https://github.com/bufbuild/buf/compare/v0.23.0...v0.24.0
[v0.23.0]: https://github.com/bufbuild/buf/compare/v0.22.0...v0.23.0
[v0.22.0]: https://github.com/bufbuild/buf/compare/v0.21.0...v0.22.0
[v0.21.0]: https://github.com/bufbuild/buf/compare/v0.20.5...v0.21.0
[v0.20.5]: https://github.com/bufbuild/buf/compare/v0.20.4...v0.20.5
[v0.20.4]: https://github.com/bufbuild/buf/compare/v0.20.3...v0.20.4
[v0.20.3]: https://github.com/bufbuild/buf/compare/v0.20.2...v0.20.3
[v0.20.2]: https://github.com/bufbuild/buf/compare/v0.20.1...v0.20.2
[v0.20.1]: https://github.com/bufbuild/buf/compare/v0.20.0...v0.20.1
[v0.20.0]: https://github.com/bufbuild/buf/compare/v0.19.1...v0.20.0
[v0.19.1]: https://github.com/bufbuild/buf/compare/v0.19.0...v0.19.1
[v0.19.0]: https://github.com/bufbuild/buf/compare/v0.18.1...v0.19.0
[v0.18.1]: https://github.com/bufbuild/buf/compare/v0.18.0...v0.18.1
[v0.18.0]: https://github.com/bufbuild/buf/compare/v0.17.0...v0.18.0
[v0.17.0]: https://github.com/bufbuild/buf/compare/v0.16.0...v0.17.0
[v0.16.0]: https://github.com/bufbuild/buf/compare/v0.15.0...v0.16.0
[v0.15.0]: https://github.com/bufbuild/buf/compare/v0.14.0...v0.15.0
[v0.14.0]: https://github.com/bufbuild/buf/compare/v0.13.0...v0.14.0
[v0.13.0]: https://github.com/bufbuild/buf/compare/v0.12.1...v0.13.0
[v0.12.1]: https://github.com/bufbuild/buf/compare/v0.12.0...v0.12.1
[v0.12.0]: https://github.com/bufbuild/buf/compare/v0.11.0...v0.12.0
[v0.11.0]: https://github.com/bufbuild/buf/compare/v0.10.0...v0.11.0
[v0.10.0]: https://github.com/bufbuild/buf/compare/v0.9.0...v0.10.0
[v0.9.0]: https://github.com/bufbuild/buf/compare/v0.8.0...v0.9.0
[v0.8.0]: https://github.com/bufbuild/buf/compare/v0.7.1...v0.8.0
[v0.7.1]: https://github.com/bufbuild/buf/compare/v0.7.0...v0.7.1
[v0.7.0]: https://github.com/bufbuild/buf/compare/v0.6.0...v0.7.0
[v0.6.0]: https://github.com/bufbuild/buf/compare/v0.5.0...v0.6.0
[v0.5.0]: https://github.com/bufbuild/buf/compare/v0.4.1...v0.5.0
[v0.4.1]: https://github.com/bufbuild/buf/compare/v0.4.0...v0.4.1
[v0.4.0]: https://github.com/bufbuild/buf/compare/v0.3.0...v0.4.0
[v0.3.0]: https://github.com/bufbuild/buf/compare/v0.2.0...v0.3.0
[v0.2.0]: https://github.com/bufbuild/buf/compare/v0.1.0...v0.2.0


================================================
FILE: Dockerfile.buf
================================================
FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder

WORKDIR /workspace

COPY go.mod go.sum /workspace/
RUN go mod download

COPY cmd /workspace/cmd
COPY private /workspace/private

ARG TARGETOS
ARG TARGETARCH
RUN CGO_ENABLED=0 GOOS=${TARGETOS} GOARCH=${TARGETARCH} \
  go build -ldflags "-s -w" -trimpath -buildvcs=false -o /go/bin/buf ./cmd/buf

FROM alpine:3.23.3

RUN apk add --update --no-cache \
    ca-certificates \
    git \
    openssh-client && \
  rm -rf /var/cache/apk/*

COPY --from=builder /go/bin/buf /usr/local/bin/buf

ENTRYPOINT ["/usr/local/bin/buf"]


================================================
FILE: LICENSE
================================================
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2020-2026 Buf Technologies, Inc.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: Makefile
================================================
MAKEGO := make/go
MAKEGO_REMOTE := https://github.com/bufbuild/makego.git
PROJECT := buf
GO_MODULE := github.com/bufbuild/buf
DOCKER_ORG := bufbuild
DOCKER_PROJECT := buf

include make/buf/all.mk


================================================
FILE: README.md
================================================
![The Buf logo](./.github/buf-logo.svg)

# Buf

[![License](https://img.shields.io/github/license/bufbuild/buf?color=blue)](https://github.com/bufbuild/buf/blob/main/LICENSE)
[![Release](https://img.shields.io/github/v/release/bufbuild/buf?include_prereleases)](https://github.com/bufbuild/buf/releases)
[![CI](https://github.com/bufbuild/buf/workflows/ci/badge.svg)](https://github.com/bufbuild/buf/actions?workflow=ci)
[![Docker](https://img.shields.io/docker/pulls/bufbuild/buf)](https://hub.docker.com/r/bufbuild/buf)
[![Homebrew](https://img.shields.io/homebrew/v/buf)](https://github.com/bufbuild/homebrew-buf)
[![Slack](https://img.shields.io/badge/slack-buf-%23e01563)][badges_slack]

<a name="features"></a>
The [`buf`][buf] CLI is the best tool for working with [Protocol Buffers][protobuf]. It provides:

- A [linter][lint_usage] that enforces good API design choices and structure.
- A [breaking change detector][breaking_tutorial] that enforces compatibility at the source code or wire level.
- A [generator][generate_usage] that invokes your plugins based on [configuration files][templates].
- A [formatter][format_usage] that formats your Protobuf files in accordance with industry standards.
- Integration with the [Buf Schema Registry][bsr], including full dependency management.

## Installation

### Homebrew

You can install `buf` using [Homebrew][brew] (macOS or Linux):

```sh
brew install bufbuild/buf/buf
```

This installs:

- The `buf`, [`protoc-gen-buf-breaking`][breaking], and [`protoc-gen-buf-lint`][lint] binaries
- Shell completion scripts for [Bash], [Fish], [Powershell], and [zsh]

### Other methods

For other installation methods, see our [official documentation][install], which covers:

- Installing `buf` via [npm]
- Installing `buf` on [Windows]
- Using `buf` as a [Docker image][docker]
- Installing as a [binary], from a [tarball], and from [source] through [GitHub Releases][releases]
- [Verifying] releases using a [minisign] public key


## Usage

Buf's help interface provides summaries for commands and flags:

```sh
buf --help
```

For more comprehensive usage information, consult Buf's [documentation][docs], especially these guides:

* [`buf breaking`][breaking_tutorial]
* [`buf build`][build_usage]
* [`buf generate`][generate_usage]
* [`buf lint`][lint_usage]
* [`buf format`][format_usage]
* [`buf registry`][bsr_quickstart] (for using the [BSR])

## CLI breaking change policy

We will never make breaking changes within a given major version of the CLI. After `buf` reached v1.0, you can expect no breaking changes until v2.0. But as we have no plans to ever release a v2.0, we will likely never break the `buf` CLI.

> This breaking change policy does _not_ apply to commands behind the `buf beta` gate, and you should expect breaking changes to commands like `buf beta registry`. The policy does go into effect, however, when those commands or flags are elevated out of beta.

## Our goals for Protobuf

[Buf]'s goal is to replace the current paradigm of API development, centered around REST/JSON, with a **schema-driven** paradigm. Defining APIs using an [IDL] provides numerous benefits over REST/JSON, and [Protobuf] is by far the most stable and widely adopted IDL in the industry. We've chosen to build on this widely trusted foundation rather than creating a new IDL from scratch.

But despite its technical merits, actually _using_ Protobuf has long been more challenging than it needs to be. The Buf CLI and the [BSR](#the-buf-schema-registry) are the cornerstones of our effort to change that for good and to make Protobuf reliable and easy to use for service owners and clients alike—in other words, to create a **modern Protobuf ecosystem**.

While we intend to incrementally improve on the `buf` CLI and the [BSR](#the-buf-schema-registry), we're confident that the basic groundwork for such an ecosystem is _already_ in place.

## The Buf Schema Registry

The [Buf Schema Registry][bsr] (BSR) is a SaaS platform for managing your Protobuf APIs. It provides a centralized registry and a single source of truth for all of your Protobuf assets, including not just your `.proto` files but also [remote plugins][bsr_plugins]. Although the BSR provides an intuitive browser UI, `buf` enables you to perform most BSR-related tasks from the command line, such as [pushing] Protobuf sources to the registry and managing [users] and [repositories]. 

> The BSR is not required to use `buf`. We've made the core [features] of the `buf` CLI available to _all_ Protobuf users.

## More advanced CLI features

While `buf`'s [core features][features] should cover most use cases, we've included some more advanced features to cover edge cases:

* **Automatic file discovery**. Buf walks your file tree and builds your `.proto` files in accordance with your supplied [build configuration][build_config], which means that you no longer need to manually specify `--proto_paths`. You can still, however, specify `.proto` files manually through CLI flags in cases where file discovery needs to be disabled.
* **Fine-grained rule configuration** for [linting][lint_rules] and [breaking changes][breaking_rules]. While we do have recommended defaults, you can always select the exact set of rules that your use case requires, with [40 lint rules][lint_rules] and [53 breaking change rules][breaking_rules] available.
* **Configurable error formats** for CLI output. `buf` outputs information in `file:line:column:message` form by default for each lint error and breaking change it encounters, but you can also select JSON, MSVS, JUnit, and Github Actions output.
* **Editor integration** driven by `buf`'s granular error output. We currently provide linting integrations for both [Vim and Visual Studio Code][ide] and [JetBrains IDEs][jetbrains] like IntelliJ and GoLand, but we plan to support other editors such as Emacs in the future.
* **Universal Input targeting**. Buf enables you to perform actions like linting and breaking change detection not just against local `.proto` files but also against a broad range of other [Inputs], such as tarballs and ZIP files, remote Git repositories, and pre-built [image][images] files.
* **Speed**. Buf's internal Protobuf [compiler] compiles your Protobuf sources using all available cores without compromising deterministic output, which is considerably faster than `protoc`. This allows for near-instantaneous feedback, which is of special importance for features like [editor integration][ide].

## Next steps

Once you've installed `buf`, we recommend completing the [CLI tutorial][cli-tutorial], which provides a broad but hands-on overview of the core functionality of the CLI. The tour takes about 10 minutes to complete.

After completing the tour, check out the remainder of the [docs] for your specific areas of interest.

## Builds

The following is a breakdown of the binaries by CPU architecture and operating system available through our [releases]:

|  | Linux | MacOS | Windows |
| --- | --- | --- | --- |
| x86 (64-bit) | ✅ | ✅ | ✅ |
| ARM (64-bit) | ✅ | ✅ | ✅ |
| ARMv7 (32-bit) | ✅ | ❌ | ❌ |
| RISC-V (64-bit) | ✅ | ❌ | ❌ |
| ppc64le | ✅ | ❌ | ❌ |
| s390x | ✅ | ❌ | ❌ |

## Community

For help and discussion around Protobuf, best practices, and more, join us on [Slack][badges_slack].

For updates on the Buf CLI, [follow this repo on GitHub][repo].

For feature requests, bugs, or technical questions, email us at [dev@buf.build][email_dev]. For general inquiries or inclusion in our upcoming feature betas, email us at [info@buf.build][email_info].

[badges_slack]: https://buf.build/links/slack
[bash]: https://www.gnu.org/software/bash
[binary]: https://buf.build/docs/cli/installation/#source
[breaking]: https://buf.build/docs/breaking/overview/
[breaking_rules]: https://buf.build/docs/breaking/rules/
[breaking_tutorial]: https://buf.build/docs/breaking/tutorial/
[brew]: https://brew.sh
[bsr]: https://buf.build/docs/bsr/
[bsr_plugins]: https://buf.build/plugins
[bsr_quickstart]: https://buf.build/docs/bsr/quickstart/
[buf]: https://buf.build
[build_config]: https://buf.build/docs/build/usage/#key-concepts
[build_usage]: https://buf.build/docs/build/usage
[cli-tutorial]: https://buf.build/docs/cli/quickstart/
[compiler]: https://buf.build/docs/reference/internal-compiler/
[docker]: https://buf.build/docs/cli/installation/#docker
[docs]: https://buf.build/docs
[email_dev]: mailto:dev@buf.build
[email_info]: mailto:info@buf.build
[features]: #features
[fish]: https://fishshell.com
[format_usage]: https://buf.build/docs/format/style/
[generate_usage]: https://buf.build/docs/generate/tutorial/
[ide]: https://buf.build/docs/cli/editor-integration/
[idl]: https://en.wikipedia.org/wiki/Interface_description_language
[images]: https://buf.build/docs/reference/images/
[inputs]: https://buf.build/docs/reference/inputs/
[install]: https://buf.build/docs/cli/installation/
[jetbrains]: https://buf.build/docs/cli/editor-integration/#jetbrains-ides
[lint]: https://buf.build/docs/lint/overview/
[lint_rules]: https://buf.build/docs/lint/rules/
[lint_usage]: https://buf.build/docs/lint/tutorial/
[npm]: https://buf.build/docs/cli/installation/#npm
[minisign]: https://github.com/jedisct1/minisign
[powershell]: https://docs.microsoft.com/en-us/powershell
[protobuf]: https://protobuf.dev
[pushing]: https://buf.build/docs/bsr/module/publish/
[releases]: https://buf.build/docs/cli/installation/#github
[repo]: https://github.com/bufbuild/buf/
[repositories]: https://buf.build/docs/concepts/repositories/
[source]: https://buf.build/docs/cli/installation/#source
[tarball]: https://buf.build/docs/cli/installation/#github
[templates]: https://buf.build/docs/configuration/v2/buf-gen-yaml/
[users]: https://buf.build/docs/admin/manage-members/
[verifying]: https://buf.build/docs/cli/installation/#github
[windows]: https://buf.build/docs/cli/installation/#windows
[zsh]: https://zsh.org


================================================
FILE: buf.yaml
================================================
version: v2
modules:
  - path: proto
    name: buf.build/bufbuild/buf
lint:
  use:
    - STANDARD
    - UNARY_RPC
  disallow_comment_ignores: true
breaking:
  use:
    - WIRE_JSON
  ignore_unstable_packages: true


================================================
FILE: cmd/buf/buf.go
================================================
// Copyright 2020-2026 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//      http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

package main

import (
	"context"
	"crypto/tls"
	"errors"
	"fmt"
	"net"
	"net/http"

	"buf.build/go/app"
	"buf.build/go/app/appcmd"
	"buf.build/go/app/appext"
	"connectrpc.com/connect"
	"github.com/bufbuild/buf/cmd/buf/internal/command/alpha/protoc"
	"github.com/bufbuild/buf/cmd/buf/internal/command/alpha/registry/token/tokendelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/alpha/registry/token/tokenget"
	"github.com/bufbuild/buf/cmd/buf/internal/command/alpha/registry/token/tokenlist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/bufpluginv1"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/bufpluginv1beta1"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/bufpluginv2"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/price"
	betaplugindelete "github.com/bufbuild/buf/cmd/buf/internal/command/beta/registry/plugin/plugindelete"
	betapluginpush "github.com/bufbuild/buf/cmd/buf/internal/command/beta/registry/plugin/pluginpush"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/registry/webhook/webhookcreate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/registry/webhook/webhookdelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/registry/webhook/webhooklist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/beta/studioagent"
	"github.com/bufbuild/buf/cmd/buf/internal/command/breaking"
	"github.com/bufbuild/buf/cmd/buf/internal/command/build"
	"github.com/bufbuild/buf/cmd/buf/internal/command/config/configinit"
	"github.com/bufbuild/buf/cmd/buf/internal/command/config/configlsbreakingrules"
	"github.com/bufbuild/buf/cmd/buf/internal/command/config/configlslintrules"
	"github.com/bufbuild/buf/cmd/buf/internal/command/config/configlsmodules"
	"github.com/bufbuild/buf/cmd/buf/internal/command/config/configmigrate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/convert"
	"github.com/bufbuild/buf/cmd/buf/internal/command/curl"
	"github.com/bufbuild/buf/cmd/buf/internal/command/dep/depgraph"
	"github.com/bufbuild/buf/cmd/buf/internal/command/dep/depprune"
	"github.com/bufbuild/buf/cmd/buf/internal/command/dep/depupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/export"
	"github.com/bufbuild/buf/cmd/buf/internal/command/format"
	"github.com/bufbuild/buf/cmd/buf/internal/command/generate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/lint"
	"github.com/bufbuild/buf/cmd/buf/internal/command/lsfiles"
	"github.com/bufbuild/buf/cmd/buf/internal/command/lsp/lspserve"
	"github.com/bufbuild/buf/cmd/buf/internal/command/mod/modlsbreakingrules"
	"github.com/bufbuild/buf/cmd/buf/internal/command/mod/modlslintrules"
	"github.com/bufbuild/buf/cmd/buf/internal/command/mod/modopen"
	"github.com/bufbuild/buf/cmd/buf/internal/command/plugin/pluginprune"
	"github.com/bufbuild/buf/cmd/buf/internal/command/plugin/pluginpush"
	"github.com/bufbuild/buf/cmd/buf/internal/command/plugin/pluginupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/policy/policyprune"
	"github.com/bufbuild/buf/cmd/buf/internal/command/policy/policypush"
	"github.com/bufbuild/buf/cmd/buf/internal/command/policy/policyupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/push"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulecommit/modulecommitaddlabel"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulecommit/modulecommitinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulecommit/modulecommitlist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulecommit/modulecommitresolve"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulecreate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/moduledelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/moduledeprecate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/moduleinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulelabel/modulelabelarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulelabel/modulelabelinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulelabel/modulelabellist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulelabel/modulelabelunarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/modulesettings/modulesettingsupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/module/moduleundeprecate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/organization/organizationcreate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/organization/organizationdelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/organization/organizationinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/organization/organizationupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitaddlabel"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitlist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitresolve"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugincreate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugindelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/plugininfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabellist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelunarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/plugin/pluginsettings/pluginsettingsupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policycommit/policycommitaddlabel"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policycommit/policycommitinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policycommit/policycommitlist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policycommit/policycommitresolve"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policycreate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policydelete"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policyinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policylabel/policylabelarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policylabel/policylabelinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policylabel/policylabellist"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policylabel/policylabelunarchive"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/policy/policysettings/policysettingsupdate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/registrycc"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/registrylogin"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/registrylogout"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/sdk/sdkinfo"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/sdk/version"
	"github.com/bufbuild/buf/cmd/buf/internal/command/registry/whoami"
	"github.com/bufbuild/buf/cmd/buf/internal/command/source/sourceedit/sourceeditdeprecate"
	"github.com/bufbuild/buf/cmd/buf/internal/command/stats"
	"github.com/bufbuild/buf/private/buf/bufcli"
	"github.com/bufbuild/buf/private/buf/bufctl"
	"github.com/bufbuild/buf/private/bufpkg/bufcobra"
	"github.com/bufbuild/buf/private/bufpkg/bufconnect"
	"github.com/bufbuild/buf/private/bufpkg/bufmodule"
	"github.com/bufbuild/buf/private/pkg/slogapp"
	"github.com/bufbuild/buf/private/pkg/syserror"
	"github.com/spf13/cobra"
)

func main() {
	appcmd.Main(context.Background(), newRootCommand("buf"))
}

func newRootCommand(name string) *appcmd.Command {
	builder := appext.NewBuilder(
		name,
		appext.BuilderWithTimeout(0),
		appext.BuilderWithInterceptor(newErrorInterceptor()),
		appext.BuilderWithLoggerProvider(slogapp.LoggerProvider),
	)
	return &appcmd.Command{
		Use:                 name,
		Short:               "The Buf CLI",
		Long:                "A tool for working with Protocol Buffers and managing resources on the Buf Schema Registry (BSR)",
		Version:             bufcli.Version,
		BindPersistentFlags: builder.BindRoot,
		SubCommands: []*appcmd.Command{
			build.NewCommand("build", builder),
			export.NewCommand("export", builder),
			format.NewCommand("format", builder),
			lint.NewCommand("lint", builder),
			breaking.NewCommand("breaking", builder),
			generate.NewCommand("generate", builder),
			lsfiles.NewCommand("ls-files", builder),
			stats.NewCommand("stats", builder),
			push.NewCommand("push", builder),
			convert.NewCommand("convert", builder),
			curl.NewCommand("curl", builder),
			{
				Use:   "dep",
				Short: "Work with dependencies",
				SubCommands: []*appcmd.Command{
					depgraph.NewCommand("graph", builder),
					depprune.NewCommand("prune", builder, ``, false),
					depupdate.NewCommand("update", builder, ``, false),
				},
			},
			{
				Use:   "config",
				Short: "Work with configuration files",
				SubCommands: []*appcmd.Command{
					configinit.NewCommand("init", builder, ``, false, false),
					configmigrate.NewCommand("migrate", builder),
					configlslintrules.NewCommand("ls-lint-rules", builder),
					configlsbreakingrules.NewCommand("ls-breaking-rules", builder),
					configlsmodules.NewCommand("ls-modules", builder),
				},
			},
			{
				Use:   "source",
				Short: "Work with Protobuf source files",
				SubCommands: []*appcmd.Command{
					{
						Use:   "edit",
						Short: "Edit Protobuf source files",
						SubCommands: []*appcmd.Command{
							sourceeditdeprecate.NewCommand("deprecate", builder),
						},
					},
				},
			},
			{
				Use:   "lsp",
				Short: "Work with Buf Language Server",
				SubCommands: []*appcmd.Command{
					lspserve.NewCommand("serve", builder, ``, false, false),
				},
			},
			{
				Use:        "mod",
				Short:      `Manage Buf modules, all commands are deprecated and have moved to the "buf config", "buf dep", or "buf registry" subcommands.`,
				Deprecated: `all commands are deprecated and have moved to the "buf config", "buf dep", or "buf registry" subcommands.`,
				Hidden:     true,
				SubCommands: []*appcmd.Command{
					// Deprecated and hidden.
					configinit.NewCommand("init", builder, deprecatedMessage("buf config init", "buf mod init"), true, true),
					// Deprecated and hidden.
					depprune.NewCommand("prune", builder, deprecatedMessage("buf dep prune", "buf mod update"), true),
					// Deprecated and hidden.
					depupdate.NewCommand("update", builder, deprecatedMessage("buf dep update", "buf mod update"), true),
					// Deprecated and hidden.
					modopen.NewCommand("open", builder),
					// Deprecated and hidden.
					registrycc.NewCommand("clear-cache", builder, deprecatedMessage("buf registry cc", "buf mod clear-cache"), true, "cc"),
					// Deprecated and hidden.
					modlslintrules.NewCommand("ls-lint-rules", builder),
					// Deprecated and hidden.
					modlsbreakingrules.NewCommand("ls-breaking-rules", builder),
				},
			},
			{
				Use:   "plugin",
				Short: "Work with check plugins",
				SubCommands: []*appcmd.Command{
					pluginpush.NewCommand("push", builder),
					pluginupdate.NewCommand("update", builder),
					pluginprune.NewCommand("prune", builder),
				},
			},
			{
				Use:    "policy",
				Short:  "Work with policies",
				Hidden: true,
				SubCommands: []*appcmd.Command{
					policypush.NewCommand("push", builder),
					policyupdate.NewCommand("update", builder),
					policyprune.NewCommand("prune", builder),
				},
			},
			{
				Use:   "registry",
				Short: "Manage assets on the Buf Schema Registry",
				SubCommands: []*appcmd.Command{
					registrylogin.NewCommand("login", builder),
					registrylogout.NewCommand("logout", builder),
					whoami.NewCommand("whoami", builder),
					registrycc.NewCommand("cc", builder, ``, false),
					{
						Use:        "commit",
						Short:      `Manage a module's commits, all commands are deprecated and have moved to the "buf registry module commit" subcommands`,
						Deprecated: `all commands are deprecated and have moved to the "buf registry module commit" subcommands.`,
						Hidden:     true,
						SubCommands: []*appcmd.Command{
							modulecommitaddlabel.NewCommand("add-label", builder, deprecatedMessage("buf registry module commit add-label", "buf registry commit add-label")),
							modulecommitinfo.NewCommand("info", builder, deprecatedMessage("buf registry module commit info", "buf registry commit info")),
							modulecommitlist.NewCommand("list", builder, deprecatedMessage("buf registry module commit list", "buf registry commit list")),
							modulecommitresolve.NewCommand("resolve", builder, deprecatedMessage("buf registry module commit resolve", "buf registry commit resolve")),
						},
					},
					{
						Use:   "sdk",
						Short: "Manage Generated SDKs",
						SubCommands: []*appcmd.Command{
							version.NewCommand("version", builder),
							sdkinfo.NewCommand("info", builder),
						},
					},
					{
						Use:        "label",
						Short:      `Manage a module's labels, all commands are deprecated and have moved to the "buf registry module label" subcommands`,
						Deprecated: `all commands are deprecated and have moved to the "buf registry module label" subcommands.`,
						Hidden:     true,
						SubCommands: []*appcmd.Command{
							modulelabelarchive.NewCommand("archive", builder, deprecatedMessage("buf registry module label archive", "buf registry label archive")),
							modulelabelinfo.NewCommand("info", builder, deprecatedMessage("buf registry module label info", "buf registry label info")),
							modulelabellist.NewCommand("list", builder, deprecatedMessage("buf registry module label list", "buf registry label list")),
							modulelabelunarchive.NewCommand("unarchive", builder, deprecatedMessage("buf registry module label unarchive", "buf registry label unarchive")),
						},
					},
					{
						Use:   "organization",
						Short: "Manage organizations",
						SubCommands: []*appcmd.Command{
							organizationcreate.NewCommand("create", builder),
							organizationdelete.NewCommand("delete", builder),
							organizationinfo.NewCommand("info", builder),
							organizationupdate.NewCommand("update", builder),
						},
					},
					{
						Use:   "module",
						Short: "Manage BSR modules",
						SubCommands: []*appcmd.Command{
							{
								Use:   "commit",
								Short: "Manage a module's commits",
								SubCommands: []*appcmd.Command{
									modulecommitaddlabel.NewCommand("add-label", builder, ""),
									modulecommitinfo.NewCommand("info", builder, ""),
									modulecommitlist.NewCommand("list", builder, ""),
									modulecommitresolve.NewCommand("resolve", builder, ""),
								},
							},
							{
								Use:   "label",
								Short: "Manage a module's labels",
								SubCommands: []*appcmd.Command{
									modulelabelarchive.NewCommand("archive", builder, ""),
									modulelabelinfo.NewCommand("info", builder, ""),
									modulelabellist.NewCommand("list", builder, ""),
									modulelabelunarchive.NewCommand("unarchive", builder, ""),
								},
							},
							{
								Use:   "settings",
								Short: "Manage a module's settings",
								SubCommands: []*appcmd.Command{
									modulesettingsupdate.NewCommand("update", builder, ""),
								},
							},
							modulecreate.NewCommand("create", builder),
							moduleinfo.NewCommand("info", builder),
							moduledelete.NewCommand("delete", builder),
							moduledeprecate.NewCommand("deprecate", builder),
							modulesettingsupdate.NewCommand("update", builder, deprecatedMessage("buf registry module settings update", "buf registry update")),
							moduleundeprecate.NewCommand("undeprecate", builder),
						},
					},
					{
						Use:   "plugin",
						Short: "Manage BSR plugins",
						SubCommands: []*appcmd.Command{
							{
								Use:   "commit",
								Short: "Manage a plugin's commits",
								SubCommands: []*appcmd.Command{
									plugincommitaddlabel.NewCommand("add-label", builder, ""),
									plugincommitinfo.NewCommand("info", builder, ""),
									plugincommitlist.NewCommand("list", builder, ""),
									plugincommitresolve.NewCommand("resolve", builder, ""),
								},
							},
							{
								Use:   "label",
								Short: "Manage a plugin's labels",
								SubCommands: []*appcmd.Command{
									pluginlabelarchive.NewCommand("archive", builder, ""),
									pluginlabelinfo.NewCommand("info", builder, ""),
									pluginlabellist.NewCommand("list", builder, ""),
									pluginlabelunarchive.NewCommand("unarchive", builder, ""),
								},
							},
							{
								Use:   "settings",
								Short: "Manage a plugin's settings",
								SubCommands: []*appcmd.Command{
									pluginsettingsupdate.NewCommand("update", builder),
								},
							},
							plugincreate.NewCommand("create", builder),
							plugininfo.NewCommand("info", builder),
							plugindelete.NewCommand("delete", builder),
						},
					},
					{
						Use:   "policy",
						Short: "Manage BSR policies",
						SubCommands: []*appcmd.Command{
							{
								Use:   "commit",
								Short: "Manage a policy's commits",
								SubCommands: []*appcmd.Command{
									policycommitaddlabel.NewCommand("add-label", builder, ""),
									policycommitinfo.NewCommand("info", builder, ""),
									policycommitlist.NewCommand("list", builder, ""),
									policycommitresolve.NewCommand("resolve", builder, ""),
								},
							},
							{
								Use:   "label",
								Short: "Manage a policy's labels",
								SubCommands: []*appcmd.Command{
									policylabelarchive.NewCommand("archive", builder, ""),
									policylabelinfo.NewCommand("info", builder, ""),
									policylabellist.NewCommand("list", builder, ""),
									policylabelunarchive.NewCommand("unarchive", builder, ""),
								},
							},
							{
								Use:   "settings",
								Short: "Manage a policy's settings",
								SubCommands: []*appcmd.Command{
									policysettingsupdate.NewCommand("update", builder),
								},
							},
							policycreate.NewCommand("create", builder),
							policyinfo.NewCommand("info", builder),
							policydelete.NewCommand("delete", builder),
						},
					},
				},
			},
			{
				Use:   "beta",
				Short: "Beta commands. Unstable and likely to change",
				SubCommands: []*appcmd.Command{
					lspserve.NewCommand("lsp", builder, deprecatedMessage("buf lsp serve", "buf beta lsp"), true, true),
					price.NewCommand("price", builder),
					bufpluginv1beta1.NewCommand("buf-plugin-v1beta1", builder),
					bufpluginv1.NewCommand("buf-plugin-v1", builder),
					bufpluginv2.NewCommand("buf-plugin-v2", builder),
					studioagent.NewCommand("studio-agent", builder),
					{
						Use:   "registry",
						Short: "Manage assets on the Buf Schema Registry",
						SubCommands: []*appcmd.Command{
							{
								Use:   "webhook",
								Short: "Manage webhooks for a repository on the Buf Schema Registry",
								SubCommands: []*appcmd.Command{
									webhookcreate.NewCommand("create", builder),
									webhookdelete.NewCommand("delete", builder),
									webhooklist.NewCommand("list", builder),
								},
							},
							{
								Use:   "plugin",
								Short: "Manage plugins on the Buf Schema Registry",
								SubCommands: []*appcmd.Command{
									betapluginpush.NewCommand("push", builder),
									betaplugindelete.NewCommand("delete", builder),
								},
							},
						},
					},
				},
			},
			{
				Use:    "alpha",
				Short:  "Alpha commands. Unstable and recommended only for experimentation. These may be deleted",
				Hidden: true,
				SubCommands: []*appcmd.Command{
					protoc.NewCommand("protoc", builder),
					{
						Use:   "registry",
						Short: "Manage assets on the Buf Schema Registry",
						SubCommands: []*appcmd.Command{
							{
								Use:   "token",
								Short: "Manage user tokens",
								SubCommands: []*appcmd.Command{
									tokenget.NewCommand("get", builder),
									tokenlist.NewCommand("list", builder),
									tokendelete.NewCommand("delete", builder),
								},
							},
						},
					},
				},
			},
		},
		ModifyCobra: func(cobraCommand *cobra.Command) error {
			cobraCommand.AddCommand(bufcobra.NewWebpagesCommand("webpages", cobraCommand))
			return nil
		},
	}
}

// newErrorInterceptor returns a CLI interceptor that wraps Buf CLI errors.
func newErrorInterceptor() appext.Interceptor {
	return func(next func(context.Context, appext.Container) error) func(context.Context, appext.Container) error {
		return func(ctx context.Context, container appext.Container) error {
			return wrapError(next(ctx, container))
		}
	}
}

// wrapError is used when a CLI command fails, regardless of its error code.
// Note that this function will wrap the error so that the underlying error
// can be recovered via 'errors.Is'.
func wrapError(err error) error {
	if err == nil {
		return nil
	}

	var connectErr *connect.Error
	isConnectError := errors.As(err, &connectErr)
	// If error is empty and not a system error or Connect error, we return it as-is.
	if !isConnectError && err.Error() == "" {
		return err
	}
	if isConnectError {
		var augmentedConnectError *bufconnect.AugmentedConnectError
		isAugmentedConnectErr := errors.As(err, &augmentedConnectError)
		if isPossibleNewCLIOldBSRError(connectErr) && isAugmentedConnectErr {
			return fmt.Errorf("Failure: %[1]s for https://%[2]s%[3]s\n"+
				"This version of the buf CLI may require APIs that have not yet been deployed to https://%[2]s\n"+
				"To resolve this failure, you can either:\n"+
				"- Try using an older version of the buf CLI\n"+
				"- Contact the site admin for https://%[2]s to upgrade the instance",
				connectErr,
				augmentedConnectError.Addr(),
				augmentedConnectError.Procedure(),
			)
		}
		connectCode := connectErr.Code()
		switch {
		case connectCode == connect.CodeUnauthenticated, isEmptyUnknownError(err):
			loginCommand := "buf registry login"
			authErr, ok := bufconnect.AsAuthError(err)
			if !ok {
				// This code should be unreachable.
				return fmt.Errorf("Failure: you are not authenticated. "+
					"Set the %[1]s environment variable or run %q, using a Buf API token as the password. "+
					"If you have set the %[1]s or run the login command, "+
					"your token may have expired. "+
					"For details, visit https://buf.build/docs/bsr/authentication",
					bufconnect.TokenEnvKey,
					loginCommand,
				)
			}
			// Invalid token found in env var.
Download .txt
gitextract_uewxy4kd/

├── .bufstyle.yaml
├── .dockerignore
├── .envrc
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE/
│   │   ├── 1-bug-report.yml
│   │   ├── 2-feature-request.yml
│   │   └── 3-other.yml
│   ├── dependabot.yml
│   └── workflows/
│       ├── add-to-project.yaml
│       ├── back-to-development.yaml
│       ├── buf-binary-size.yaml
│       ├── buf-ci.yaml
│       ├── build-and-draft-release.yaml
│       ├── ci.yaml
│       ├── codeql.yaml
│       ├── create-release-pr.yaml
│       ├── docker-publish.yaml
│       ├── emergency-review-bypass.yaml
│       ├── make-upgrade.yaml
│       ├── notify-approval-bypass.yaml
│       ├── pr-title.yaml
│       ├── previous.yaml
│       ├── verify-changelog.yaml
│       └── windows.yaml
├── .gitignore
├── .godoclint.yaml
├── .golangci.yml
├── .pre-commit-hooks.yaml
├── CHANGELOG.md
├── Dockerfile.buf
├── LICENSE
├── Makefile
├── README.md
├── buf.yaml
├── cmd/
│   ├── buf/
│   │   ├── buf.go
│   │   ├── buf_test.go
│   │   ├── buf_unix_test.go
│   │   ├── imports_test.go
│   │   ├── internal/
│   │   │   ├── command/
│   │   │   │   ├── alpha/
│   │   │   │   │   ├── protoc/
│   │   │   │   │   │   ├── const_unix.go
│   │   │   │   │   │   ├── const_windows.go
│   │   │   │   │   │   ├── errors.go
│   │   │   │   │   │   ├── flags.go
│   │   │   │   │   │   ├── flags_test.go
│   │   │   │   │   │   ├── flags_unix.go
│   │   │   │   │   │   ├── flags_windows.go
│   │   │   │   │   │   ├── internal/
│   │   │   │   │   │   │   ├── protoc-gen-insertion-point-receiver/
│   │   │   │   │   │   │   │   └── main.go
│   │   │   │   │   │   │   └── protoc-gen-insertion-point-writer/
│   │   │   │   │   │   │       └── main.go
│   │   │   │   │   │   ├── plugin.go
│   │   │   │   │   │   ├── protoc.go
│   │   │   │   │   │   ├── protoc_test.go
│   │   │   │   │   │   └── testdata/
│   │   │   │   │   │       ├── 1/
│   │   │   │   │   │       │   └── flags.txt
│   │   │   │   │   │       ├── 2/
│   │   │   │   │   │       │   ├── flags1.txt
│   │   │   │   │   │       │   └── flags2.txt
│   │   │   │   │   │       ├── 3/
│   │   │   │   │   │       │   ├── flags1.txt
│   │   │   │   │   │       │   └── flags2.txt
│   │   │   │   │   │       ├── insertion/
│   │   │   │   │   │       │   └── test.proto
│   │   │   │   │   │       └── overlap/
│   │   │   │   │   │           ├── a/
│   │   │   │   │   │           │   ├── 1.proto
│   │   │   │   │   │           │   └── 1.txt
│   │   │   │   │   │           └── b/
│   │   │   │   │   │               ├── 1.txt
│   │   │   │   │   │               └── 2.proto
│   │   │   │   │   └── registry/
│   │   │   │   │       └── token/
│   │   │   │   │           ├── tokendelete/
│   │   │   │   │           │   └── tokendelete.go
│   │   │   │   │           ├── tokenget/
│   │   │   │   │           │   └── tokenget.go
│   │   │   │   │           └── tokenlist/
│   │   │   │   │               └── tokenlist.go
│   │   │   │   ├── beta/
│   │   │   │   │   ├── bufpluginv1/
│   │   │   │   │   │   └── bufpluginv1.go
│   │   │   │   │   ├── bufpluginv1beta1/
│   │   │   │   │   │   └── bufpluginv1beta1.go
│   │   │   │   │   ├── bufpluginv2/
│   │   │   │   │   │   └── bufpluginv2.go
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── internal.go
│   │   │   │   │   ├── price/
│   │   │   │   │   │   └── price.go
│   │   │   │   │   ├── registry/
│   │   │   │   │   │   ├── plugin/
│   │   │   │   │   │   │   ├── plugindelete/
│   │   │   │   │   │   │   │   └── plugindelete.go
│   │   │   │   │   │   │   └── pluginpush/
│   │   │   │   │   │   │       └── pluginpush.go
│   │   │   │   │   │   └── webhook/
│   │   │   │   │   │       ├── webhookcreate/
│   │   │   │   │   │       │   └── webhookcreate.go
│   │   │   │   │   │       ├── webhookdelete/
│   │   │   │   │   │       │   └── webhookdelete.go
│   │   │   │   │   │       └── webhooklist/
│   │   │   │   │   │           └── webhooklist.go
│   │   │   │   │   └── studioagent/
│   │   │   │   │       └── studioagent.go
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── breaking.go
│   │   │   │   │   ├── breaking_test.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       └── workspace_new_module/
│   │   │   │   │           ├── against/
│   │   │   │   │           │   ├── b/
│   │   │   │   │           │   │   └── b.proto
│   │   │   │   │           │   ├── buf.yaml
│   │   │   │   │           │   └── c/
│   │   │   │   │           │       └── c.proto
│   │   │   │   │           └── head/
│   │   │   │   │               ├── a/
│   │   │   │   │               │   └── a.proto
│   │   │   │   │               ├── b/
│   │   │   │   │               │   └── b.proto
│   │   │   │   │               ├── buf.yaml
│   │   │   │   │               └── c/
│   │   │   │   │                   └── c.proto
│   │   │   │   ├── build/
│   │   │   │   │   └── build.go
│   │   │   │   ├── config/
│   │   │   │   │   ├── configinit/
│   │   │   │   │   │   └── configinit.go
│   │   │   │   │   ├── configlsbreakingrules/
│   │   │   │   │   │   └── configlsbreakingrules.go
│   │   │   │   │   ├── configlslintrules/
│   │   │   │   │   │   └── configlslintrules.go
│   │   │   │   │   ├── configlsmodules/
│   │   │   │   │   │   └── configlsmodules.go
│   │   │   │   │   ├── configmigrate/
│   │   │   │   │   │   ├── configmigrate.go
│   │   │   │   │   │   ├── configmigrate_test.go
│   │   │   │   │   │   └── testdata/
│   │   │   │   │   │       ├── defaultv1/
│   │   │   │   │   │       │   ├── input/
│   │   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │   │       │   └── output/
│   │   │   │   │   │       │       └── buf.yaml
│   │   │   │   │   │       ├── defaultv1beta1/
│   │   │   │   │   │       │   ├── input/
│   │   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │   │       │   └── output/
│   │   │   │   │   │       │       └── buf.yaml
│   │   │   │   │   │       └── unknown/
│   │   │   │   │   │           └── input/
│   │   │   │   │   │               └── buf.yaml
│   │   │   │   │   └── internal/
│   │   │   │   │       └── internal.go
│   │   │   │   ├── convert/
│   │   │   │   │   ├── convert.go
│   │   │   │   │   ├── convert_test.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       └── convert/
│   │   │   │   │           ├── README.md
│   │   │   │   │           ├── bin_json/
│   │   │   │   │           │   ├── api.proto
│   │   │   │   │           │   ├── buf.proto
│   │   │   │   │           │   ├── buf.yaml
│   │   │   │   │           │   ├── duration.binpb
│   │   │   │   │           │   ├── duration.json
│   │   │   │   │           │   ├── duration.txtpb
│   │   │   │   │           │   ├── duration.yaml
│   │   │   │   │           │   ├── image.binpb
│   │   │   │   │           │   ├── image.json
│   │   │   │   │           │   ├── image.txtpb
│   │   │   │   │           │   ├── image.yaml
│   │   │   │   │           │   ├── payload.binpb
│   │   │   │   │           │   ├── payload.json
│   │   │   │   │           │   ├── payload.txtpb
│   │   │   │   │           │   └── payload.yaml
│   │   │   │   │           └── descriptor.plain.binpb
│   │   │   │   ├── curl/
│   │   │   │   │   └── curl.go
│   │   │   │   ├── dep/
│   │   │   │   │   ├── depgraph/
│   │   │   │   │   │   └── depgraph.go
│   │   │   │   │   ├── depprune/
│   │   │   │   │   │   └── depprune.go
│   │   │   │   │   ├── depupdate/
│   │   │   │   │   │   └── depupdate.go
│   │   │   │   │   └── internal/
│   │   │   │   │       └── internal.go
│   │   │   │   ├── export/
│   │   │   │   │   └── export.go
│   │   │   │   ├── format/
│   │   │   │   │   └── format.go
│   │   │   │   ├── generate/
│   │   │   │   │   ├── generate.go
│   │   │   │   │   ├── generate_test.go
│   │   │   │   │   ├── generate_unix_test.go
│   │   │   │   │   ├── generate_windows_test.go
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── protoc-gen-top-level-type-names-yaml/
│   │   │   │   │   │       └── main.go
│   │   │   │   │   └── testdata/
│   │   │   │   │       ├── duplicate_plugins/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   └── buf.gen.yaml
│   │   │   │   │       ├── insertion/
│   │   │   │   │       │   └── test.proto
│   │   │   │   │       ├── insertion_point/
│   │   │   │   │       │   └── test.txt
│   │   │   │   │       ├── nested_insertion_point/
│   │   │   │   │       │   └── gen/
│   │   │   │   │       │       └── proto/
│   │   │   │   │       │           └── insertion/
│   │   │   │   │       │               └── test.txt
│   │   │   │   │       ├── paths/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   └── a.proto
│   │   │   │   │       │   │   ├── v2/
│   │   │   │   │       │   │   │   └── a.proto
│   │   │   │   │       │   │   └── v3/
│   │   │   │   │       │   │       ├── a.proto
│   │   │   │   │       │   │       └── foo/
│   │   │   │   │       │   │           ├── bar.proto
│   │   │   │   │       │   │           └── foo.proto
│   │   │   │   │       │   ├── b/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── b.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── protofileref/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       ├── a.proto
│   │   │   │   │       │   │       └── b.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── simple/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── a.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── types/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── v1/
│   │   │   │   │       │   │       └── a.proto
│   │   │   │   │       │   ├── buf.gen.yaml
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── v2/
│   │   │   │   │       │   ├── duplicate_plugins/
│   │   │   │   │       │   │   ├── a.proto
│   │   │   │   │       │   │   └── buf.gen.yaml
│   │   │   │   │       │   ├── local_plugin/
│   │   │   │   │       │   │   ├── a/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── a.proto
│   │   │   │   │       │   │   ├── b/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── b.proto
│   │   │   │   │       │   │   ├── buf.basic.gen.yaml
│   │   │   │   │       │   │   ├── buf.exclude.paths.gen.yaml
│   │   │   │   │       │   │   ├── buf.paths.gen.yaml
│   │   │   │   │       │   │   ├── buf.types.gen.yaml
│   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │       │   ├── simple/
│   │   │   │   │       │   │   ├── a/
│   │   │   │   │       │   │   │   └── v1/
│   │   │   │   │       │   │   │       └── a.proto
│   │   │   │   │       │   │   ├── buf.gen.yaml
│   │   │   │   │       │   │   └── buf.yaml
│   │   │   │   │       │   └── types/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   └── v1/
│   │   │   │   │       │       │       └── a.proto
│   │   │   │   │       │       ├── b/
│   │   │   │   │       │       │   └── v1/
│   │   │   │   │       │       │       └── b.proto
│   │   │   │   │       │       ├── buf.gen.invalid.yaml
│   │   │   │   │       │       ├── buf.gen.yaml
│   │   │   │   │       │       ├── buf.yaml
│   │   │   │   │       │       └── pkg/
│   │   │   │   │       │           └── v1/
│   │   │   │   │       │               └── options.proto
│   │   │   │   │       └── workspace/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   ├── v1/
│   │   │   │   │           │   │   └── a.proto
│   │   │   │   │           │   ├── v2/
│   │   │   │   │           │   │   └── a.proto
│   │   │   │   │           │   └── v3/
│   │   │   │   │           │       ├── a.proto
│   │   │   │   │           │       └── foo/
│   │   │   │   │           │           ├── bar.proto
│   │   │   │   │           │           └── foo.proto
│   │   │   │   │           ├── b/
│   │   │   │   │           │   └── v1/
│   │   │   │   │           │       ├── b.proto
│   │   │   │   │           │       └── foo.proto
│   │   │   │   │           ├── buf.gen.yaml
│   │   │   │   │           └── buf.work.yaml
│   │   │   │   ├── lint/
│   │   │   │   │   └── lint.go
│   │   │   │   ├── lsfiles/
│   │   │   │   │   └── lsfiles.go
│   │   │   │   ├── lsp/
│   │   │   │   │   └── lspserve/
│   │   │   │   │       └── lspserve.go
│   │   │   │   ├── mod/
│   │   │   │   │   ├── internal/
│   │   │   │   │   │   └── internal.go
│   │   │   │   │   ├── modlsbreakingrules/
│   │   │   │   │   │   └── modlsbreakingrules.go
│   │   │   │   │   ├── modlslintrules/
│   │   │   │   │   │   └── modlslintrules.go
│   │   │   │   │   └── modopen/
│   │   │   │   │       └── modopen.go
│   │   │   │   ├── plugin/
│   │   │   │   │   ├── pluginprune/
│   │   │   │   │   │   └── pluginprune.go
│   │   │   │   │   ├── pluginpush/
│   │   │   │   │   │   └── pluginpush.go
│   │   │   │   │   └── pluginupdate/
│   │   │   │   │       └── pluginupdate.go
│   │   │   │   ├── policy/
│   │   │   │   │   ├── policyprune/
│   │   │   │   │   │   └── policyprune.go
│   │   │   │   │   ├── policypush/
│   │   │   │   │   │   └── policypush.go
│   │   │   │   │   └── policyupdate/
│   │   │   │   │       └── policyupdate.go
│   │   │   │   ├── push/
│   │   │   │   │   └── push.go
│   │   │   │   ├── registry/
│   │   │   │   │   ├── module/
│   │   │   │   │   │   ├── modulecommit/
│   │   │   │   │   │   │   ├── modulecommitaddlabel/
│   │   │   │   │   │   │   │   └── modulecommitaddlabel.go
│   │   │   │   │   │   │   ├── modulecommitinfo/
│   │   │   │   │   │   │   │   └── modulecommitinfo.go
│   │   │   │   │   │   │   ├── modulecommitlist/
│   │   │   │   │   │   │   │   └── modulecommitlist.go
│   │   │   │   │   │   │   └── modulecommitresolve/
│   │   │   │   │   │   │       └── modulecommitresolve.go
│   │   │   │   │   │   ├── modulecreate/
│   │   │   │   │   │   │   └── modulecreate.go
│   │   │   │   │   │   ├── moduledelete/
│   │   │   │   │   │   │   └── moduledelete.go
│   │   │   │   │   │   ├── moduledeprecate/
│   │   │   │   │   │   │   └── moduledeprecate.go
│   │   │   │   │   │   ├── moduleinfo/
│   │   │   │   │   │   │   └── moduleinfo.go
│   │   │   │   │   │   ├── modulelabel/
│   │   │   │   │   │   │   ├── modulelabelarchive/
│   │   │   │   │   │   │   │   └── modulelabelarchive.go
│   │   │   │   │   │   │   ├── modulelabelinfo/
│   │   │   │   │   │   │   │   └── modulelabelinfo.go
│   │   │   │   │   │   │   ├── modulelabellist/
│   │   │   │   │   │   │   │   └── modulelabellist.go
│   │   │   │   │   │   │   └── modulelabelunarchive/
│   │   │   │   │   │   │       └── modulelabelunarchive.go
│   │   │   │   │   │   ├── modulesettings/
│   │   │   │   │   │   │   └── modulesettingsupdate/
│   │   │   │   │   │   │       └── modulesettingsupdate.go
│   │   │   │   │   │   └── moduleundeprecate/
│   │   │   │   │   │       └── moduleundeprecate.go
│   │   │   │   │   ├── organization/
│   │   │   │   │   │   ├── organizationcreate/
│   │   │   │   │   │   │   └── organizationcreate.go
│   │   │   │   │   │   ├── organizationdelete/
│   │   │   │   │   │   │   └── organizationdelete.go
│   │   │   │   │   │   ├── organizationinfo/
│   │   │   │   │   │   │   └── organizationinfo.go
│   │   │   │   │   │   └── organizationupdate/
│   │   │   │   │   │       └── organizationupdate.go
│   │   │   │   │   ├── plugin/
│   │   │   │   │   │   ├── plugincommit/
│   │   │   │   │   │   │   ├── plugincommitaddlabel/
│   │   │   │   │   │   │   │   └── plugincommitaddlabel.go
│   │   │   │   │   │   │   ├── plugincommitinfo/
│   │   │   │   │   │   │   │   └── plugincommitinfo.go
│   │   │   │   │   │   │   ├── plugincommitlist/
│   │   │   │   │   │   │   │   └── plugincommitlist.go
│   │   │   │   │   │   │   └── plugincommitresolve/
│   │   │   │   │   │   │       └── plugincommitresolve.go
│   │   │   │   │   │   ├── plugincreate/
│   │   │   │   │   │   │   └── plugincreate.go
│   │   │   │   │   │   ├── plugindelete/
│   │   │   │   │   │   │   └── plugindelete.go
│   │   │   │   │   │   ├── plugininfo/
│   │   │   │   │   │   │   └── plugininfo.go
│   │   │   │   │   │   ├── pluginlabel/
│   │   │   │   │   │   │   ├── pluginlabelarchive/
│   │   │   │   │   │   │   │   └── pluginlabelarchive.go
│   │   │   │   │   │   │   ├── pluginlabelinfo/
│   │   │   │   │   │   │   │   └── pluginlabelinfo.go
│   │   │   │   │   │   │   ├── pluginlabellist/
│   │   │   │   │   │   │   │   └── pluginlabellist.go
│   │   │   │   │   │   │   └── pluginlabelunarchive/
│   │   │   │   │   │   │       └── pluginlabelunarchive.go
│   │   │   │   │   │   └── pluginsettings/
│   │   │   │   │   │       └── pluginsettingsupdate/
│   │   │   │   │   │           └── pluginsettingsupdate.go
│   │   │   │   │   ├── policy/
│   │   │   │   │   │   ├── policycommit/
│   │   │   │   │   │   │   ├── policycommitaddlabel/
│   │   │   │   │   │   │   │   └── policycommitaddlabel.go
│   │   │   │   │   │   │   ├── policycommitinfo/
│   │   │   │   │   │   │   │   └── policycommitinfo.go
│   │   │   │   │   │   │   ├── policycommitlist/
│   │   │   │   │   │   │   │   └── policycommitlist.go
│   │   │   │   │   │   │   └── policycommitresolve/
│   │   │   │   │   │   │       └── policycommitresolve.go
│   │   │   │   │   │   ├── policycreate/
│   │   │   │   │   │   │   └── policycreate.go
│   │   │   │   │   │   ├── policydelete/
│   │   │   │   │   │   │   └── policydelete.go
│   │   │   │   │   │   ├── policyinfo/
│   │   │   │   │   │   │   └── policyinfo.go
│   │   │   │   │   │   ├── policylabel/
│   │   │   │   │   │   │   ├── policylabelarchive/
│   │   │   │   │   │   │   │   └── policylabelarchive.go
│   │   │   │   │   │   │   ├── policylabelinfo/
│   │   │   │   │   │   │   │   └── policylabelinfo.go
│   │   │   │   │   │   │   ├── policylabellist/
│   │   │   │   │   │   │   │   └── policylabellist.go
│   │   │   │   │   │   │   └── policylabelunarchive/
│   │   │   │   │   │   │       └── policylabelunarchive.go
│   │   │   │   │   │   └── policysettings/
│   │   │   │   │   │       └── policysettingsupdate/
│   │   │   │   │   │           └── policysettingsupdate.go
│   │   │   │   │   ├── registrycc/
│   │   │   │   │   │   └── registrycc.go
│   │   │   │   │   ├── registrylogin/
│   │   │   │   │   │   ├── client.go
│   │   │   │   │   │   ├── client_darwin.go
│   │   │   │   │   │   └── registrylogin.go
│   │   │   │   │   ├── registrylogout/
│   │   │   │   │   │   └── registrylogout.go
│   │   │   │   │   ├── sdk/
│   │   │   │   │   │   ├── sdkinfo/
│   │   │   │   │   │   │   └── sdkinfo.go
│   │   │   │   │   │   └── version/
│   │   │   │   │   │       └── version.go
│   │   │   │   │   └── whoami/
│   │   │   │   │       └── whoami.go
│   │   │   │   ├── source/
│   │   │   │   │   └── sourceedit/
│   │   │   │   │       └── sourceeditdeprecate/
│   │   │   │   │           └── sourceeditdeprecate.go
│   │   │   │   └── stats/
│   │   │   │       └── stats.go
│   │   │   └── internaltesting/
│   │   │       └── internaltesting.go
│   │   ├── testdata/
│   │   │   ├── check_plugins/
│   │   │   │   ├── current/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── proto/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   └── v1/
│   │   │   │   │   │   │       └── service.proto
│   │   │   │   │   │   └── common/
│   │   │   │   │   │       ├── v1/
│   │   │   │   │   │       │   ├── breaking.proto
│   │   │   │   │   │       │   └── common.proto
│   │   │   │   │   │       └── v1alpha1/
│   │   │   │   │   │           ├── breaking.proto
│   │   │   │   │   │           └── messages.proto
│   │   │   │   │   └── vendor/
│   │   │   │   │       └── protovalidate/
│   │   │   │   │           └── buf/
│   │   │   │   │               └── validate/
│   │   │   │   │                   └── validate.proto
│   │   │   │   └── previous/
│   │   │   │       ├── buf.yaml
│   │   │   │       ├── proto/
│   │   │   │       │   ├── api/
│   │   │   │       │   │   └── v1/
│   │   │   │       │   │       └── service.proto
│   │   │   │       │   └── common/
│   │   │   │       │       ├── v1/
│   │   │   │       │       │   ├── breaking.proto
│   │   │   │       │       │   └── common.proto
│   │   │   │       │       └── v1alpha1/
│   │   │   │       │           ├── breaking.proto
│   │   │   │       │           └── messages.proto
│   │   │   │       └── vendor/
│   │   │   │           └── protovalidate/
│   │   │   │               └── buf/
│   │   │   │                   └── validate/
│   │   │   │                       └── validate.proto
│   │   │   ├── customoptions1/
│   │   │   │   └── a.proto
│   │   │   ├── export/
│   │   │   │   ├── another/
│   │   │   │   │   └── proto/
│   │   │   │   │       ├── README.md
│   │   │   │   │       ├── another.proto
│   │   │   │   │       └── buf.yaml
│   │   │   │   ├── buf.work.yaml
│   │   │   │   ├── other/
│   │   │   │   │   └── proto/
│   │   │   │   │       ├── LICENSE
│   │   │   │   │       ├── buf.yaml
│   │   │   │   │       ├── request.proto
│   │   │   │   │       └── unimported.proto
│   │   │   │   └── proto/
│   │   │   │       ├── LICENSE
│   │   │   │       ├── README.md
│   │   │   │       ├── buf.yaml
│   │   │   │       └── rpc.proto
│   │   │   ├── fail/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── fail2/
│   │   │   │   ├── buf/
│   │   │   │   │   ├── buf.proto
│   │   │   │   │   ├── buf2.proto
│   │   │   │   │   └── buf3.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── fail_buf_mod/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.mod
│   │   │   ├── failarchive/
│   │   │   │   └── fail/
│   │   │   │       ├── buf/
│   │   │   │       │   └── buf.proto
│   │   │   │       └── buf.yaml
│   │   │   ├── format/
│   │   │   │   ├── complex/
│   │   │   │   │   └── complex.proto
│   │   │   │   ├── diff/
│   │   │   │   │   └── diff.proto
│   │   │   │   ├── invalid/
│   │   │   │   │   └── invalid.proto
│   │   │   │   └── simple/
│   │   │   │       └── simple.proto
│   │   │   ├── imports/
│   │   │   │   ├── cache/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       ├── people/
│   │   │   │   │                       │   └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── people/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── people1.proto
│   │   │   │   │                       │       │           └── people2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       ├── school/
│   │   │   │   │                       │   └── f4329b95720e46da93b5b4011a42ae7b/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── school/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── school1.proto
│   │   │   │   │                       │       │           └── school2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       └── students/
│   │   │   │   │                           └── 6c776ed5bee54462b06d31fb7f7c16b8/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── students/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           └── students.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── corrupted_cache_dep/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       ├── people/
│   │   │   │   │                       │   └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                       │       ├── files/
│   │   │   │   │                       │       │   └── people/
│   │   │   │   │                       │       │       └── v1/
│   │   │   │   │                       │       │           ├── people1.proto
│   │   │   │   │                       │       │           └── people2.proto
│   │   │   │   │                       │       ├── module.yaml
│   │   │   │   │                       │       └── v1_buf_yaml/
│   │   │   │   │                       │           └── buf.yaml
│   │   │   │   │                       └── students/
│   │   │   │   │                           └── 6c776ed5bee54462b06d31fb7f7c16b8/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── students/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           └── students.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── corrupted_cache_file/
│   │   │   │   │   ├── README.md
│   │   │   │   │   └── v3/
│   │   │   │   │       └── modules/
│   │   │   │   │           └── b5/
│   │   │   │   │               └── bufbuild.test/
│   │   │   │   │                   └── bufbot/
│   │   │   │   │                       └── people/
│   │   │   │   │                           └── fc7d540124fd42db92511c19a60a1d98/
│   │   │   │   │                               ├── files/
│   │   │   │   │                               │   └── people/
│   │   │   │   │                               │       └── v1/
│   │   │   │   │                               │           ├── people1.proto
│   │   │   │   │                               │           └── people2.proto
│   │   │   │   │                               ├── module.yaml
│   │   │   │   │                               └── v1_buf_yaml/
│   │   │   │   │                                   └── buf.yaml
│   │   │   │   ├── failure/
│   │   │   │   │   ├── people/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── people/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           └── people1.proto
│   │   │   │   │   ├── school/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── school/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           ├── school1.proto
│   │   │   │   │   │           └── school2.proto
│   │   │   │   │   ├── students/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── students/
│   │   │   │   │   │       └── v1/
│   │   │   │   │   │           └── students.proto
│   │   │   │   │   └── workspace/
│   │   │   │   │       └── transitive_imports/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   ├── a.proto
│   │   │   │   │           │   └── buf.yaml
│   │   │   │   │           ├── b/
│   │   │   │   │           │   ├── b.proto
│   │   │   │   │           │   └── buf.yaml
│   │   │   │   │           ├── buf.work.yaml
│   │   │   │   │           └── c/
│   │   │   │   │               ├── buf.yaml
│   │   │   │   │               └── c.proto
│   │   │   │   └── success/
│   │   │   │       ├── people/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── people/
│   │   │   │       │       └── v1/
│   │   │   │       │           ├── people1.proto
│   │   │   │       │           └── people2.proto
│   │   │   │       ├── school/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── school/
│   │   │   │       │       └── v1/
│   │   │   │       │           ├── school1.proto
│   │   │   │       │           └── school2.proto
│   │   │   │       ├── students/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── students/
│   │   │   │       │       └── v1/
│   │   │   │       │           └── students.proto
│   │   │   │       ├── wkt/
│   │   │   │       │   └── a.proto
│   │   │   │       └── workspace/
│   │   │   │           ├── unnamed_local_only_modules/
│   │   │   │           │   ├── a/
│   │   │   │           │   │   └── a.proto
│   │   │   │           │   ├── b/
│   │   │   │           │   │   └── b.proto
│   │   │   │           │   ├── buf.work.yaml
│   │   │   │           │   └── c/
│   │   │   │           │       └── c.proto
│   │   │   │           └── valid_explicit_deps/
│   │   │   │               ├── buf.work.yaml
│   │   │   │               ├── mod-a/
│   │   │   │               │   ├── a/
│   │   │   │               │   │   └── v1/
│   │   │   │               │   │       └── a.proto
│   │   │   │               │   └── buf.yaml
│   │   │   │               └── mod-b/
│   │   │   │                   ├── b/
│   │   │   │                   │   └── v1/
│   │   │   │                   │       └── b.proto
│   │   │   │                   └── buf.yaml
│   │   │   ├── lint_ignore_disabled/
│   │   │   │   ├── buf.yaml
│   │   │   │   ├── proto/
│   │   │   │   │   └── a.proto
│   │   │   │   └── vendor/
│   │   │   │       └── b.proto
│   │   │   ├── lsmodules/
│   │   │   │   ├── extraconfigv1/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── a.proto
│   │   │   │   ├── extraconfigv2/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── a.proto
│   │   │   │   ├── workspaceinvalid/
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   └── proto/
│   │   │   │   │       └── buf.yaml
│   │   │   │   ├── workspacev1/
│   │   │   │   │   ├── a_v1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── b_no_name_v1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   ├── c_v1beta1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── f_no_name_v1beta1/
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   └── not_pointed_by_workspace/
│   │   │   │   │       └── buf.yaml
│   │   │   │   └── workspacev2/
│   │   │   │       └── buf.yaml
│   │   │   ├── paths/
│   │   │   │   ├── a/
│   │   │   │   │   ├── v1/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── v2/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   └── v3/
│   │   │   │   │       ├── a.proto
│   │   │   │   │       └── foo/
│   │   │   │   │           ├── bar.proto
│   │   │   │   │           └── foo.proto
│   │   │   │   ├── b/
│   │   │   │   │   └── v1/
│   │   │   │   │       └── b.proto
│   │   │   │   ├── buf.gen.yaml
│   │   │   │   └── buf.yaml
│   │   │   ├── policy_list_rules/
│   │   │   │   ├── buf.yaml
│   │   │   │   ├── expected_ls_lint_rules_configured_only.txt
│   │   │   │   └── policy.yaml
│   │   │   ├── protofileref/
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── a/
│   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── foo.proto
│   │   │   │   │   └── b/
│   │   │   │   │       ├── bar.proto
│   │   │   │   │       ├── buf.yaml
│   │   │   │   │       └── foo.proto
│   │   │   │   ├── noworkspaceormodule/
│   │   │   │   │   ├── fail/
│   │   │   │   │   │   └── import.proto
│   │   │   │   │   └── success/
│   │   │   │   │       └── simple.proto
│   │   │   │   └── success/
│   │   │   │       ├── buf.proto
│   │   │   │       ├── buf.yaml
│   │   │   │       └── other.proto
│   │   │   ├── small_list_rules/
│   │   │   │   └── buf.yaml
│   │   │   ├── small_list_rules_yml/
│   │   │   │   └── config.yml
│   │   │   ├── success/
│   │   │   │   ├── buf/
│   │   │   │   │   └── buf.proto
│   │   │   │   └── buf.yaml
│   │   │   ├── successnobufyaml/
│   │   │   │   └── buf/
│   │   │   │       └── buf.proto
│   │   │   ├── symlinks/
│   │   │   │   └── a.proto
│   │   │   ├── workspace/
│   │   │   │   ├── fail/
│   │   │   │   │   ├── absolute/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── windows/
│   │   │   │   │   │       └── buf.work.yaml
│   │   │   │   │   ├── breaking/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── other/
│   │   │   │   │   │       └── proto/
│   │   │   │   │   │           ├── buf.yaml
│   │   │   │   │   │           └── request.proto
│   │   │   │   │   ├── diroverlap/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── duplicate/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── other/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       └── foo.proto
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       └── foo.proto
│   │   │   │   │   ├── invalidversion/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── jumpcontext/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── modulebreakingconfig/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       ├── a/
│   │   │   │   │   │   │       │   └── v1/
│   │   │   │   │   │   │       │       └── a.proto
│   │   │   │   │   │   │       └── buf.yaml
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── other/
│   │   │   │   │   │   │   └── proto/
│   │   │   │   │   │   │       ├── buf.yaml
│   │   │   │   │   │   │       └── request.proto
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       ├── buf.yaml
│   │   │   │   │   │       └── rpc.proto
│   │   │   │   │   ├── nodirectories/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── notexist/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── noversion/
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   ├── overlap/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   └── proto/
│   │   │   │   │   │       └── buf/
│   │   │   │   │   │           └── buf.proto
│   │   │   │   │   ├── symlink/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── a.proto
│   │   │   │   │   │   └── buf.work.yaml
│   │   │   │   │   └── v2/
│   │   │   │   │       ├── absolute/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── windows/
│   │   │   │   │       │       └── buf.yaml
│   │   │   │   │       ├── duplicate/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   ├── other/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── v1/
│   │   │   │   │       │   │           ├── foo.proto
│   │   │   │   │       │   │           └── inner/
│   │   │   │   │       │   │               └── bar.proto
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── v1/
│   │   │   │   │       │           ├── foo.proto
│   │   │   │   │       │           └── inner/
│   │   │   │   │       │               └── bar.proto
│   │   │   │   │       ├── jumpcontext/
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── modulebreakingconfig/
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── a/
│   │   │   │   │       │   │           └── v1/
│   │   │   │   │       │   │               └── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   ├── other/
│   │   │   │   │       │   │   └── proto/
│   │   │   │   │       │   │       └── request.proto
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── rpc.proto
│   │   │   │   │       ├── notexist/
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── overlap/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── proto/
│   │   │   │   │       │       └── buf/
│   │   │   │   │       │           └── buf.proto
│   │   │   │   │       └── symlink/
│   │   │   │   │           ├── a/
│   │   │   │   │           │   └── a.proto
│   │   │   │   │           └── buf.yaml
│   │   │   │   └── success/
│   │   │   │       ├── breaking/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── detached/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── diamond/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── private/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── b.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── a.proto
│   │   │   │       │       └── buf.yaml
│   │   │   │       ├── dir/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── dir_buf_work/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a/
│   │   │   │       │   │       │   └── v1/
│   │   │   │       │   │       │       └── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── buf.work
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── duplicate_dir_path/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   ├── proto/
│   │   │   │       │   │   ├── shared/
│   │   │   │       │   │   │   └── prefix/
│   │   │   │       │   │   │       ├── bar/
│   │   │   │       │   │   │       │   └── v1/
│   │   │   │       │   │   │       │       └── bar.proto
│   │   │   │       │   │   │       └── foo/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── foo.proto
│   │   │   │       │   │   └── shared1/
│   │   │   │       │   │       └── prefix/
│   │   │   │       │   │           ├── x/
│   │   │   │       │   │           │   └── x.proto
│   │   │   │       │   │           └── y/
│   │   │   │       │   │               └── y.proto
│   │   │   │       │   └── separate/
│   │   │   │       │       └── v1/
│   │   │   │       │           └── separate.proto
│   │   │   │       ├── duplicate_dir_path_overlapping_include/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       └── foo/
│   │   │   │       │           ├── bar/
│   │   │   │       │           │   ├── baz/
│   │   │   │       │           │   │   ├── v1/
│   │   │   │       │           │   │   │   └── baz.proto
│   │   │   │       │           │   │   └── v2/
│   │   │   │       │           │   │       └── baz.proto
│   │   │   │       │           │   ├── v1/
│   │   │   │       │           │   │   └── bar.proto
│   │   │   │       │           │   └── v2/
│   │   │   │       │           │       └── bar.proto
│   │   │   │       │           ├── v1/
│   │   │   │       │           │   └── foo.proto
│   │   │   │       │           └── v2/
│   │   │   │       │               └── foo.proto
│   │   │   │       ├── lock/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   ├── a.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   ├── b/
│   │   │   │       │   │   ├── b.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   └── buf.work.yaml
│   │   │   │       ├── nested/
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── buf.work.yaml
│   │   │   │       │       ├── external/
│   │   │   │       │       │   ├── buf.yaml
│   │   │   │       │       │   └── external.proto
│   │   │   │       │       └── internal/
│   │   │   │       │           ├── buf.yaml
│   │   │   │       │           └── internal.proto
│   │   │   │       ├── noconfig/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── request.proto
│   │   │   │       │   └── proto/
│   │   │   │       │       └── rpc.proto
│   │   │   │       ├── overlapping_dir_path/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── bar/
│   │   │   │       │       │   ├── bar.proto
│   │   │   │       │       │   └── internal/
│   │   │   │       │       │       └── bar_internal.proto
│   │   │   │       │       └── foo/
│   │   │   │       │           ├── foo.proto
│   │   │   │       │           └── internal/
│   │   │   │       │               └── foo_internal.proto
│   │   │   │       ├── protofileref/
│   │   │   │       │   ├── another/
│   │   │   │       │   │   ├── bar/
│   │   │   │       │   │   │   └── bar.proto
│   │   │   │       │   │   └── foo/
│   │   │   │       │   │       └── foo.proto
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       └── baz.proto
│   │   │   │       ├── roots/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── module1/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── a.proto
│   │   │   │       │   │   └── buf.yaml
│   │   │   │       │   └── module2/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       ├── other.buf.yaml
│   │   │   │       │       ├── root1/
│   │   │   │       │       │   └── b/
│   │   │   │       │       │       └── b.proto
│   │   │   │       │       ├── root2/
│   │   │   │       │       │   └── c/
│   │   │   │       │       │       └── c.proto
│   │   │   │       │       └── root3/
│   │   │   │       │           └── d/
│   │   │   │       │               └── d.proto
│   │   │   │       ├── shared_parent_dir/
│   │   │   │       │   ├── buf.yaml
│   │   │   │       │   ├── parent/
│   │   │   │       │   │   ├── foo/
│   │   │   │       │   │   │   └── foo.proto
│   │   │   │       │   │   └── nextlayer/
│   │   │   │       │   │       ├── bar/
│   │   │   │       │   │       │   └── bar.proto
│   │   │   │       │   │       └── baz/
│   │   │   │       │   │           └── baz.proto
│   │   │   │       │   └── standalone/
│   │   │   │       │       ├── imported.proto
│   │   │   │       │       └── standalone.proto
│   │   │   │       ├── symlink/
│   │   │   │       │   ├── a/
│   │   │   │       │   │   └── a.proto
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   └── c/
│   │   │   │       │       └── c.proto
│   │   │   │       ├── transitive/
│   │   │   │       │   ├── buf.work.yaml
│   │   │   │       │   ├── other/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── private/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── b.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   └── proto/
│   │   │   │       │       ├── a.proto
│   │   │   │       │       └── buf.yaml
│   │   │   │       ├── v2/
│   │   │   │       │   ├── breaking/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── a/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── detached/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── diamond/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── c.proto
│   │   │   │       │   │   ├── private/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── b.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── a.proto
│   │   │   │       │   │       └── buf.yaml
│   │   │   │       │   ├── dir/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── a/
│   │   │   │       │   │   │           └── v1/
│   │   │   │       │   │   │               └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── request.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── export/
│   │   │   │       │   │   ├── another/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       ├── README.md
│   │   │   │       │   │   │       └── another.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       ├── LICENSE
│   │   │   │       │   │   │       ├── request.proto
│   │   │   │       │   │   │       └── unimported.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── LICENSE
│   │   │   │       │   │       ├── README.md
│   │   │   │       │   │       └── rpc.proto
│   │   │   │       │   ├── nested/
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       ├── buf.yaml
│   │   │   │       │   │       ├── external/
│   │   │   │       │   │       │   └── external.proto
│   │   │   │       │   │       └── internal/
│   │   │   │       │   │           └── internal.proto
│   │   │   │       │   ├── symlink/
│   │   │   │       │   │   ├── a/
│   │   │   │       │   │   │   └── a.proto
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   └── c/
│   │   │   │       │   │       └── c.proto
│   │   │   │       │   ├── transitive/
│   │   │   │       │   │   ├── buf.yaml
│   │   │   │       │   │   ├── other/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── c.proto
│   │   │   │       │   │   ├── private/
│   │   │   │       │   │   │   └── proto/
│   │   │   │       │   │   │       └── b.proto
│   │   │   │       │   │   └── proto/
│   │   │   │       │   │       └── a.proto
│   │   │   │       │   └── wkt/
│   │   │   │       │       ├── buf.yaml
│   │   │   │       │       ├── other/
│   │   │   │       │       │   └── proto/
│   │   │   │       │       │       └── c/
│   │   │   │       │       │           └── c.proto
│   │   │   │       │       └── proto/
│   │   │   │       │           ├── a/
│   │   │   │       │           │   └── a.proto
│   │   │   │       │           └── b/
│   │   │   │       │               └── b.proto
│   │   │   │       └── wkt/
│   │   │   │           ├── buf.work.yaml
│   │   │   │           ├── other/
│   │   │   │           │   └── proto/
│   │   │   │           │       └── c/
│   │   │   │           │           └── c.proto
│   │   │   │           └── proto/
│   │   │   │               ├── a/
│   │   │   │               │   └── a.proto
│   │   │   │               └── b/
│   │   │   │                   └── b.proto
│   │   │   └── workspace_subdir/
│   │   │       ├── buf.work.yaml
│   │   │       └── other/
│   │   │           └── proto/
│   │   │               ├── one/
│   │   │               │   ├── a.proto
│   │   │               │   └── b.proto
│   │   │               └── two/
│   │   │                   └── c.proto
│   │   ├── workspace_subdir_test.go
│   │   ├── workspace_test.go
│   │   ├── workspace_unix_test.go
│   │   └── workspace_windows_test.go
│   ├── protoc-gen-buf-breaking/
│   │   └── breaking.go
│   └── protoc-gen-buf-lint/
│       ├── lint.go
│       ├── lint_test.go
│       └── testdata/
│           ├── fail/
│           │   ├── buf/
│           │   │   ├── buf.proto
│           │   │   └── buf_two.proto
│           │   ├── something.yaml
│           │   └── v2.yaml
│           └── unused-imports/
│               └── buf/
│                   └── v1/
│                       ├── a.proto
│                       ├── b.proto
│                       ├── c.proto
│                       ├── d.proto
│                       ├── e.proto
│                       ├── enum_option.proto
│                       ├── enumvalue_option.proto
│                       ├── extrange_option.proto
│                       ├── f.proto
│                       ├── field_option.proto
│                       ├── file_option.proto
│                       ├── g.proto
│                       ├── method_option.proto
│                       ├── msg_option.proto
│                       ├── oneof_option.proto
│                       └── service_option.proto
├── etc/
│   ├── bandeps/
│   │   └── bandeps.yaml
│   ├── template/
│   │   ├── buf.go-client.gen.yaml
│   │   └── buf.go.gen.yaml
│   └── windows/
│       └── test.bash
├── go.mod
├── go.sum
├── make/
│   ├── buf/
│   │   ├── all.mk
│   │   ├── docker/
│   │   │   └── Dockerfile.release
│   │   └── scripts/
│   │       ├── binarysize.bash
│   │       ├── brew.sh
│   │       ├── checkandupdateprecommithooks.bash
│   │       ├── createreleasepr.bash
│   │       ├── draftrelease.bash
│   │       ├── gobacktodevelopment.bash
│   │       ├── newtodos.bash
│   │       ├── release.bash
│   │       └── verifychangelog.bash
│   └── go/
│       ├── base.mk
│       ├── bootstrap.mk
│       ├── buf.mk
│       ├── dep_bandeps.mk
│       ├── dep_buf.mk
│       ├── dep_bufprivateusage.mk
│       ├── dep_bufstyle.mk
│       ├── dep_git_ls_files_unstaged.mk
│       ├── dep_godoclint.mk
│       ├── dep_golangci_lint.mk
│       ├── dep_govulncheck.mk
│       ├── dep_jq.mk
│       ├── dep_license_header.mk
│       ├── dep_minisign.mk
│       ├── dep_protoc.mk
│       ├── dep_protoc_gen_connect_go.mk
│       ├── dep_protoc_gen_go.mk
│       ├── dep_yq.mk
│       ├── docker.mk
│       ├── go.mk
│       ├── license_header.mk
│       └── scripts/
│           ├── checkcmdpackage.bash
│           ├── checknodiffgenerated.bash
│           ├── checknolintlint.bash
│           ├── githubactionmakeupgrade.bash
│           └── pushall.bash
├── private/
│   ├── README.md
│   ├── buf/
│   │   ├── bufapp/
│   │   │   ├── bufapp.go
│   │   │   ├── bufapp_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufcli/
│   │   │   ├── buf_work_yaml_file.go
│   │   │   ├── buf_yaml_file.go
│   │   │   ├── bufcli.go
│   │   │   ├── cache.go
│   │   │   ├── config_ignore_yaml.go
│   │   │   ├── connectclient_config.go
│   │   │   ├── controller.go
│   │   │   ├── env.go
│   │   │   ├── errors.go
│   │   │   ├── flag_args_test.go
│   │   │   ├── flags_args.go
│   │   │   ├── graph_provider.go
│   │   │   ├── module_key_provider.go
│   │   │   ├── module_owner.go
│   │   │   ├── plugin_key_provider.go
│   │   │   ├── policy_key_provider.go
│   │   │   ├── prompt.go
│   │   │   ├── protoc_plugin.go
│   │   │   ├── rules.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufconvert/
│   │   │   ├── bufconvert.go
│   │   │   ├── bufconvert_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufctl/
│   │   │   ├── bufctl.go
│   │   │   ├── controller.go
│   │   │   ├── image_with_config.go
│   │   │   ├── option.go
│   │   │   └── usage.gen.go
│   │   ├── bufcurl/
│   │   │   ├── bufcurl.go
│   │   │   ├── headers.go
│   │   │   ├── invoker.go
│   │   │   ├── invoker_test.go
│   │   │   ├── io.go
│   │   │   ├── reflection_resolver.go
│   │   │   ├── resolver.go
│   │   │   ├── testdata/
│   │   │   │   ├── test.proto
│   │   │   │   └── testdata.txt
│   │   │   ├── tls.go
│   │   │   ├── usage.gen.go
│   │   │   └── verbose_transport.go
│   │   ├── buffetch/
│   │   │   ├── buffetch.go
│   │   │   ├── buffetch_test.go
│   │   │   ├── dir_ref.go
│   │   │   ├── format.go
│   │   │   ├── internal/
│   │   │   │   ├── archive_ref.go
│   │   │   │   ├── dir_ref.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── git_ref.go
│   │   │   │   ├── internal.go
│   │   │   │   ├── module_ref.go
│   │   │   │   ├── proto_file_ref.go
│   │   │   │   ├── proto_file_writer.go
│   │   │   │   ├── read_bucket_closer.go
│   │   │   │   ├── read_write_bucket.go
│   │   │   │   ├── reader.go
│   │   │   │   ├── reader_test.go
│   │   │   │   ├── ref_parser.go
│   │   │   │   ├── ref_parser_test.go
│   │   │   │   ├── single_ref.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── bufyaml/
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── two/
│   │   │   │   │   │           └── three/
│   │   │   │   │   │               ├── buf.work.yaml
│   │   │   │   │   │               └── four/
│   │   │   │   │   │                   └── five/
│   │   │   │   │   │                       ├── buf.yaml
│   │   │   │   │   │                       └── proto/
│   │   │   │   │   │                           └── foo.proto
│   │   │   │   │   ├── direndsinproto.proto/
│   │   │   │   │   │   └── empty
│   │   │   │   │   └── nobufyaml/
│   │   │   │   │       └── one/
│   │   │   │   │           └── two/
│   │   │   │   │               └── three/
│   │   │   │   │                   ├── buf.work.yaml
│   │   │   │   │                   └── four/
│   │   │   │   │                       └── five/
│   │   │   │   │                           └── proto/
│   │   │   │   │                               └── foo.proto
│   │   │   │   ├── usage.gen.go
│   │   │   │   ├── util.go
│   │   │   │   └── writer.go
│   │   │   ├── message_ref.go
│   │   │   ├── module_ref.go
│   │   │   ├── proto_file_ref.go
│   │   │   ├── proto_file_writer.go
│   │   │   ├── reader.go
│   │   │   ├── ref_parser.go
│   │   │   ├── ref_parser_test.go
│   │   │   ├── ref_parser_unix_test.go
│   │   │   ├── source_ref.go
│   │   │   ├── usage.gen.go
│   │   │   └── writer.go
│   │   ├── bufformat/
│   │   │   ├── bufformat.go
│   │   │   ├── deprecate.go
│   │   │   ├── deprecate_test.go
│   │   │   ├── formatter.go
│   │   │   ├── formatter_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── customoptions/
│   │   │   │   │   ├── options.golden
│   │   │   │   │   └── options.proto
│   │   │   │   ├── deprecate/
│   │   │   │   │   ├── already_deprecated.golden
│   │   │   │   │   ├── already_deprecated.proto
│   │   │   │   │   ├── enum_value_deprecation.golden
│   │   │   │   │   ├── enum_value_deprecation.proto
│   │   │   │   │   ├── field_deprecation.golden
│   │   │   │   │   ├── field_deprecation.proto
│   │   │   │   │   ├── nested_types.golden
│   │   │   │   │   └── nested_types.proto
│   │   │   │   ├── editions/
│   │   │   │   │   ├── 2023/
│   │   │   │   │   │   ├── editions.golden
│   │   │   │   │   │   └── editions.proto
│   │   │   │   │   └── 2024/
│   │   │   │   │       └── editions.proto
│   │   │   │   ├── header/
│   │   │   │   │   ├── nopackage.golden
│   │   │   │   │   ├── nopackage.proto
│   │   │   │   │   ├── nosyntax.golden
│   │   │   │   │   └── nosyntax.proto
│   │   │   │   ├── proto2/
│   │   │   │   │   ├── enum/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       ├── empty.proto
│   │   │   │   │   │       ├── enum.golden
│   │   │   │   │   │       ├── enum.proto
│   │   │   │   │   │       ├── enum_trailing_comment.golden
│   │   │   │   │   │       ├── enum_trailing_comment.proto
│   │   │   │   │   │       ├── enum_trailing_newline.golden
│   │   │   │   │   │       ├── enum_trailing_newline.proto
│   │   │   │   │   │       ├── enum_value_trailing_comment.golden
│   │   │   │   │   │       └── enum_value_trailing_comment.proto
│   │   │   │   │   ├── extend/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       └── empty.proto
│   │   │   │   │   ├── field/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       └── option.proto
│   │   │   │   │   ├── group/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       └── empty.proto
│   │   │   │   │   ├── header/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── import.golden
│   │   │   │   │   │       ├── import.proto
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       ├── option.proto
│   │   │   │   │   │       ├── package.golden
│   │   │   │   │   │       └── package.proto
│   │   │   │   │   ├── license/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── enum.golden
│   │   │   │   │   │       ├── enum.proto
│   │   │   │   │   │       ├── message.golden
│   │   │   │   │   │       └── message.proto
│   │   │   │   │   ├── message/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── empty.golden
│   │   │   │   │   │       ├── empty.proto
│   │   │   │   │   │       ├── message.golden
│   │   │   │   │   │       ├── message.proto
│   │   │   │   │   │       ├── message_extensions.golden
│   │   │   │   │   │       ├── message_extensions.proto
│   │   │   │   │   │       ├── message_group.golden
│   │   │   │   │   │       ├── message_group.proto
│   │   │   │   │   │       ├── message_import.golden
│   │   │   │   │   │       ├── message_import.proto
│   │   │   │   │   │       ├── message_options.golden
│   │   │   │   │   │       ├── message_options.proto
│   │   │   │   │   │       ├── multiple_nested.golden
│   │   │   │   │   │       ├── multiple_nested.proto
│   │   │   │   │   │       ├── nested.golden
│   │   │   │   │   │       ├── nested.proto
│   │   │   │   │   │       ├── sparse.golden
│   │   │   │   │   │       └── sparse.proto
│   │   │   │   │   ├── option/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── option.golden
│   │   │   │   │   │       ├── option.proto
│   │   │   │   │   │       ├── option_array.golden
│   │   │   │   │   │       ├── option_array.proto
│   │   │   │   │   │       ├── option_complex_array_literal.golden
│   │   │   │   │   │       ├── option_complex_array_literal.proto
│   │   │   │   │   │       ├── option_compound_name.golden
│   │   │   │   │   │       ├── option_compound_name.proto
│   │   │   │   │   │       ├── option_message_field.golden
│   │   │   │   │   │       ├── option_message_field.proto
│   │   │   │   │   │       ├── option_name.golden
│   │   │   │   │   │       ├── option_name.proto
│   │   │   │   │   │       ├── single_compact_option.golden
│   │   │   │   │   │       └── single_compact_option.proto
│   │   │   │   │   ├── quotes/
│   │   │   │   │   │   └── v1/
│   │   │   │   │   │       ├── quotes.golden
│   │   │   │   │   │       └── quotes.proto
│   │   │   │   │   └── utf8/
│   │   │   │   │       └── v1/
│   │   │   │   │           ├── utf8.golden
│   │   │   │   │           └── utf8.proto
│   │   │   │   └── proto3/
│   │   │   │       ├── all/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── all.golden
│   │   │   │       │       └── all.proto
│   │   │   │       ├── block/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── block.golden
│   │   │   │       │       └── block.proto
│   │   │   │       ├── file/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── empty.golden
│   │   │   │       │       ├── empty.proto
│   │   │   │       │       ├── eof.golden
│   │   │   │       │       ├── eof.proto
│   │   │   │       │       ├── option.golden
│   │   │   │       │       └── option.proto
│   │   │   │       ├── header/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── header-block.golden
│   │   │   │       │       ├── header-block.proto
│   │   │   │       │       ├── header.golden
│   │   │   │       │       ├── header.proto
│   │   │   │       │       ├── unused_import.golden
│   │   │   │       │       └── unused_import.proto
│   │   │   │       ├── literal/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── compound_string.golden
│   │   │   │       │       ├── compound_string.proto
│   │   │   │       │       ├── literal.golden
│   │   │   │       │       ├── literal.proto
│   │   │   │       │       ├── literal_comments.golden
│   │   │   │       │       ├── literal_comments.proto
│   │   │   │       │       ├── special_literal.golden
│   │   │   │       │       └── special_literal.proto
│   │   │   │       ├── oneof/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── multiple.golden
│   │   │   │       │       ├── multiple.proto
│   │   │   │       │       ├── simple.golden
│   │   │   │       │       └── simple.proto
│   │   │   │       ├── range/
│   │   │   │       │   └── v1/
│   │   │   │       │       ├── range.golden
│   │   │   │       │       └── range.proto
│   │   │   │       └── service/
│   │   │   │           └── v1/
│   │   │   │               ├── empty.golden
│   │   │   │               ├── empty.proto
│   │   │   │               ├── empty_rpc.golden
│   │   │   │               ├── empty_rpc.proto
│   │   │   │               ├── service.golden
│   │   │   │               ├── service.proto
│   │   │   │               ├── service_options.golden
│   │   │   │               ├── service_options.proto
│   │   │   │               ├── simple.golden
│   │   │   │               └── simple.proto
│   │   │   └── usage.gen.go
│   │   ├── bufgen/
│   │   │   ├── bufgen.go
│   │   │   ├── features.go
│   │   │   ├── features_test.go
│   │   │   ├── generator.go
│   │   │   ├── testdata/
│   │   │   │   ├── v1/
│   │   │   │   │   ├── buf.gen.yaml
│   │   │   │   │   ├── gen_error1.yaml
│   │   │   │   │   ├── gen_error10.yaml
│   │   │   │   │   ├── gen_error11.yaml
│   │   │   │   │   ├── gen_error12.yaml
│   │   │   │   │   ├── gen_error13.yaml
│   │   │   │   │   ├── gen_error14.yaml
│   │   │   │   │   ├── gen_error2.yaml
│   │   │   │   │   ├── gen_error3.yaml
│   │   │   │   │   ├── gen_error4.yaml
│   │   │   │   │   ├── gen_error5.yaml
│   │   │   │   │   ├── gen_error6.yaml
│   │   │   │   │   ├── gen_error7.yaml
│   │   │   │   │   ├── gen_error8.yaml
│   │   │   │   │   ├── gen_error9.yaml
│   │   │   │   │   ├── gen_success1.json
│   │   │   │   │   ├── gen_success1.yaml
│   │   │   │   │   ├── gen_success2.json
│   │   │   │   │   ├── gen_success2.yaml
│   │   │   │   │   ├── gen_success3.json
│   │   │   │   │   ├── gen_success3.yaml
│   │   │   │   │   ├── gen_success3.yml
│   │   │   │   │   ├── gen_success4.json
│   │   │   │   │   ├── gen_success4.yaml
│   │   │   │   │   ├── gen_success4.yml
│   │   │   │   │   ├── gen_success5.json
│   │   │   │   │   ├── gen_success5.yaml
│   │   │   │   │   ├── gen_success5.yml
│   │   │   │   │   ├── gen_success6.json
│   │   │   │   │   ├── gen_success6.yaml
│   │   │   │   │   ├── gen_success6.yml
│   │   │   │   │   ├── gen_success7.json
│   │   │   │   │   ├── gen_success7.yaml
│   │   │   │   │   ├── gen_success7.yml
│   │   │   │   │   ├── gen_success8.json
│   │   │   │   │   ├── gen_success8.yaml
│   │   │   │   │   ├── gen_success8.yml
│   │   │   │   │   ├── gen_success9.json
│   │   │   │   │   ├── gen_success9.yaml
│   │   │   │   │   ├── gen_success9.yml
│   │   │   │   │   ├── go_gen_error1.yaml
│   │   │   │   │   ├── go_gen_error2.yaml
│   │   │   │   │   ├── go_gen_error3.yaml
│   │   │   │   │   ├── go_gen_error4.yaml
│   │   │   │   │   ├── go_gen_error5.yaml
│   │   │   │   │   ├── go_gen_error6.yaml
│   │   │   │   │   ├── go_gen_success1.json
│   │   │   │   │   └── go_gen_success1.yaml
│   │   │   │   └── v1beta1/
│   │   │   │       ├── buf.gen.yaml
│   │   │   │       ├── gen_error1.yaml
│   │   │   │       ├── gen_error2.yaml
│   │   │   │       ├── gen_error3.yaml
│   │   │   │       ├── gen_success1.json
│   │   │   │       ├── gen_success1.yaml
│   │   │   │       ├── gen_success2.json
│   │   │   │       ├── gen_success2.yaml
│   │   │   │       ├── gen_success3.json
│   │   │   │       ├── gen_success3.yaml
│   │   │   │       ├── gen_success3.yml
│   │   │   │       └── gen_success4_nopath.yaml
│   │   │   └── usage.gen.go
│   │   ├── buflsp/
│   │   │   ├── buflsp.go
│   │   │   ├── buflsp_test.go
│   │   │   ├── builtin.go
│   │   │   ├── cel.go
│   │   │   ├── completion.go
│   │   │   ├── completion_cel.go
│   │   │   ├── completion_cel_test.go
│   │   │   ├── completion_test.go
│   │   │   ├── definition_cel.go
│   │   │   ├── definition_cel_test.go
│   │   │   ├── definition_test.go
│   │   │   ├── deprecate.go
│   │   │   ├── deprecate_test.go
│   │   │   ├── diagnostic.go
│   │   │   ├── diagnostics_test.go
│   │   │   ├── document_highlight_test.go
│   │   │   ├── document_link.go
│   │   │   ├── document_link_test.go
│   │   │   ├── document_symbol_test.go
│   │   │   ├── file.go
│   │   │   ├── file_manager.go
│   │   │   ├── folding_range.go
│   │   │   ├── folding_range_test.go
│   │   │   ├── format_test.go
│   │   │   ├── hover_cel.go
│   │   │   ├── hover_cel_test.go
│   │   │   ├── hover_test.go
│   │   │   ├── image.go
│   │   │   ├── jsonrpc_wrappers.go
│   │   │   ├── lint_ignore.go
│   │   │   ├── lint_ignore_test.go
│   │   │   ├── nyi.go
│   │   │   ├── organize_imports.go
│   │   │   ├── organize_imports_test.go
│   │   │   ├── references_test.go
│   │   │   ├── rename_test.go
│   │   │   ├── semantic_tokens.go
│   │   │   ├── semantic_tokens_cel.go
│   │   │   ├── semantic_tokens_test.go
│   │   │   ├── server.go
│   │   │   ├── symbol.go
│   │   │   ├── symbol_test.go
│   │   │   ├── testdata/
│   │   │   │   ├── completion/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_completion.proto
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── map_test.proto
│   │   │   │   │   ├── options_test.proto
│   │   │   │   │   ├── test.proto
│   │   │   │   │   └── update_test.proto
│   │   │   │   ├── definition/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_definition.proto
│   │   │   │   │   ├── definition.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── deprecate/
│   │   │   │   │   ├── edge_cases_test.proto
│   │   │   │   │   ├── message_test.proto
│   │   │   │   │   └── nested_test.proto
│   │   │   │   ├── diagnostics/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── syntax_error.proto
│   │   │   │   │   ├── unresolved_import.proto
│   │   │   │   │   ├── unused_import.proto
│   │   │   │   │   └── valid.proto
│   │   │   │   ├── document_highlight/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── highlight.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── document_link/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── main.proto
│   │   │   │   │   ├── types.proto
│   │   │   │   │   └── wkt.proto
│   │   │   │   ├── folding_range/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── comments.proto
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── folding.proto
│   │   │   │   │   ├── imports.proto
│   │   │   │   │   ├── minimal.proto
│   │   │   │   │   ├── nested.proto
│   │   │   │   │   └── options.proto
│   │   │   │   ├── format/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── formatted.proto
│   │   │   │   │   └── unformatted.proto
│   │   │   │   ├── hover/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel_comprehensive.proto
│   │   │   │   │   ├── test.proto
│   │   │   │   │   ├── unused_import.proto
│   │   │   │   │   └── unused_import_no_blank_line.proto
│   │   │   │   ├── lint_ignore/
│   │   │   │   │   ├── already_ignored_test.proto
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── different_rule_test.proto
│   │   │   │   │   ├── field_test.proto
│   │   │   │   │   ├── filewide_test.proto
│   │   │   │   │   ├── multiple_test.proto
│   │   │   │   │   ├── nested_test.proto
│   │   │   │   │   ├── syntax_test.proto
│   │   │   │   │   ├── tabs_test.proto
│   │   │   │   │   └── trailing_comment_test.proto
│   │   │   │   ├── organize_imports/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── comments_test.proto
│   │   │   │   │   ├── duplicate_test.proto
│   │   │   │   │   ├── import_test.proto
│   │   │   │   │   ├── modifier_test.proto
│   │   │   │   │   ├── nochanges_test.proto
│   │   │   │   │   ├── noimports_test.proto
│   │   │   │   │   ├── nopackage_test.proto
│   │   │   │   │   ├── options/
│   │   │   │   │   │   └── custom_option.proto
│   │   │   │   │   ├── types/
│   │   │   │   │   │   ├── existing_field.proto
│   │   │   │   │   │   ├── method_input.proto
│   │   │   │   │   │   ├── method_output.proto
│   │   │   │   │   │   ├── modifier_public.proto
│   │   │   │   │   │   ├── modifier_weak.proto
│   │   │   │   │   │   ├── nested_field.proto
│   │   │   │   │   │   ├── notattop_import.proto
│   │   │   │   │   │   └── toplevel_field.proto
│   │   │   │   │   └── unknown_test.proto
│   │   │   │   ├── references/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── references.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── rename/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── extensions.proto
│   │   │   │   │   ├── rename.proto
│   │   │   │   │   ├── subpkg/
│   │   │   │   │   │   └── options.proto
│   │   │   │   │   ├── types.proto
│   │   │   │   │   └── wkt.proto
│   │   │   │   ├── semantic_tokens/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── cel.proto
│   │   │   │   │   ├── cel_advanced.proto
│   │   │   │   │   ├── cel_invalid.proto
│   │   │   │   │   ├── cel_nested.proto
│   │   │   │   │   ├── comprehensive.proto
│   │   │   │   │   ├── edition.proto
│   │   │   │   │   └── proto2.proto
│   │   │   │   ├── symbols/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   └── symbols.proto
│   │   │   │   ├── type_definition/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── type_definition.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── uri@encode/
│   │   │   │   │   ├── buf.yaml
│   │   │   │   │   ├── test.proto
│   │   │   │   │   └── types.proto
│   │   │   │   ├── vendor/
│   │   │   │   │   └── protovalidate/
│   │   │   │   │       └── buf/
│   │   │   │   │           └── validate/
│   │   │   │   │               └── validate.proto
│   │   │   │   └── workspace_symbols/
│   │   │   │       ├── buf.yaml
│   │   │   │       ├── types.proto
│   │   │   │       └── workspace_symbols.proto
│   │   │   ├── type_definition_test.go
│   │   │   ├── uri.go
│   │   │   ├── uri_test.go
│   │   │   ├── usage.gen.go
│   │   │   ├── workspace.go
│   │   │   └── workspace_symbol_test.go
│   │   ├── bufmigrate/
│   │   │   ├── bufmigrate.go
│   │   │   ├── migrate_builder.go
│   │   │   ├── migrator.go
│   │   │   └── usage.gen.go
│   │   ├── bufprint/
│   │   │   ├── bufprint.go
│   │   │   ├── curated_plugin_printer.go
│   │   │   ├── pagination_wrapper.go
│   │   │   ├── sdk_info_printer.go
│   │   │   ├── stats_printer.go
│   │   │   ├── tab_writer.go
│   │   │   ├── token_json_printer.go
│   │   │   ├── token_text_printer.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotoc/
│   │   │   ├── bufprotoc.go
│   │   │   ├── bufprotoc_test.go
│   │   │   ├── testdata/
│   │   │   │   └── basic/
│   │   │   │       ├── bsr/
│   │   │   │       │   └── buf.testing/
│   │   │   │       │       └── acme/
│   │   │   │       │           ├── date/
│   │   │   │       │           │   └── acme/
│   │   │   │       │           │       └── date/
│   │   │   │       │           │           └── v1/
│   │   │   │       │           │               └── date.proto
│   │   │   │       │           └── extension/
│   │   │   │       │               └── acme/
│   │   │   │       │                   └── extension/
│   │   │   │       │                       └── v1/
│   │   │   │       │                           └── extension.proto
│   │   │   │       └── workspacev1/
│   │   │   │           ├── common/
│   │   │   │           │   ├── geo/
│   │   │   │           │   │   └── proto/
│   │   │   │           │   │       └── acme/
│   │   │   │           │   │           └── geo/
│   │   │   │           │   │               └── v1/
│   │   │   │           │   │                   └── country_alpha_3_code.proto
│   │   │   │           │   └── money/
│   │   │   │           │       └── proto/
│   │   │   │           │           └── acme/
│   │   │   │           │               └── money/
│   │   │   │           │                   └── v1/
│   │   │   │           │                       ├── currency_code.proto
│   │   │   │           │                       └── money.proto
│   │   │   │           └── finance/
│   │   │   │               ├── bond/
│   │   │   │               │   └── proto/
│   │   │   │               │       ├── root1/
│   │   │   │               │       │   └── acme/
│   │   │   │               │       │       └── bond/
│   │   │   │               │       │           ├── excluded/
│   │   │   │               │       │           │   └── v1/
│   │   │   │               │       │           │       └── excluded.proto
│   │   │   │               │       │           └── real/
│   │   │   │               │       │               └── v1/
│   │   │   │               │       │                   └── bond.proto
│   │   │   │               │       └── root2/
│   │   │   │               │           └── acme/
│   │   │   │               │               └── bond/
│   │   │   │               │                   └── v2/
│   │   │   │               │                       └── bond.proto
│   │   │   │               └── portfolio/
│   │   │   │                   └── proto/
│   │   │   │                       └── acme/
│   │   │   │                           └── portfolio/
│   │   │   │                               └── v1/
│   │   │   │                                   └── portfolio.proto
│   │   │   └── usage.gen.go
│   │   ├── bufprotopluginexec/
│   │   │   ├── binary_handler.go
│   │   │   ├── bufprotopluginexec.go
│   │   │   ├── generator.go
│   │   │   ├── protoc_gen_swift_stderr_write_closer.go
│   │   │   ├── protoc_proxy_handler.go
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── util_darwin.go
│   │   │   ├── util_undarwin.go
│   │   │   ├── version.go
│   │   │   └── version_test.go
│   │   ├── bufstudioagent/
│   │   │   ├── buffer_codec.go
│   │   │   ├── bufstudioagent.go
│   │   │   ├── bufstudioagent_test.go
│   │   │   ├── plain_post_handler.go
│   │   │   └── usage.gen.go
│   │   ├── buftarget/
│   │   │   ├── bucket_targeting.go
│   │   │   ├── buftarget.go
│   │   │   ├── controlling_workspace.go
│   │   │   ├── terminate.go
│   │   │   └── usage.gen.go
│   │   ├── buftesting/
│   │   │   ├── buftesting.go
│   │   │   └── usage.gen.go
│   │   ├── bufwkt/
│   │   │   ├── bufwktstore/
│   │   │   │   ├── bufwktstore.go
│   │   │   │   ├── store.go
│   │   │   │   └── usage.gen.go
│   │   │   └── cmd/
│   │   │       └── wkt-go-data/
│   │   │           ├── main.go
│   │   │           └── usage.gen.go
│   │   └── bufworkspace/
│   │       ├── bufworkspace.go
│   │       ├── malformed_dep.go
│   │       ├── module_targeting.go
│   │       ├── option.go
│   │       ├── testdata/
│   │       │   └── basic/
│   │       │       ├── README.md
│   │       │       ├── bsr/
│   │       │       │   └── buf.testing/
│   │       │       │       └── acme/
│   │       │       │           ├── date/
│   │       │       │           │   └── acme/
│   │       │       │           │       └── date/
│   │       │       │           │           └── v1/
│   │       │       │           │               └── date.proto
│   │       │       │           └── extension/
│   │       │       │               └── acme/
│   │       │       │                   └── extension/
│   │       │       │                       └── v1/
│   │       │       │                           └── extension.proto
│   │       │       ├── scripts/
│   │       │       │   └── fakebuflock.bash
│   │       │       ├── workspace_undeclared_dep/
│   │       │       │   ├── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       └── bond/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── bond/
│   │       │       │                       └── v2/
│   │       │       │                           └── bond.proto
│   │       │       ├── workspace_unused_dep/
│   │       │       │   ├── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       └── bond/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── bond/
│   │       │       │                       └── v2/
│   │       │       │                           └── bond.proto
│   │       │       ├── workspacev1/
│   │       │       │   ├── LICENSE
│   │       │       │   ├── README.md
│   │       │       │   ├── buf.work.yaml
│   │       │       │   ├── common/
│   │       │       │   │   ├── geo/
│   │       │       │   │   │   └── proto/
│   │       │       │   │   │       ├── LICENSE
│   │       │       │   │   │       ├── acme/
│   │       │       │   │   │       │   └── geo/
│   │       │       │   │   │       │       └── v1/
│   │       │       │   │   │       │           └── country_alpha_3_code.proto
│   │       │       │   │   │       └── buf.yaml
│   │       │       │   │   └── money/
│   │       │       │   │       └── proto/
│   │       │       │   │           ├── acme/
│   │       │       │   │           │   └── money/
│   │       │       │   │           │       └── v1/
│   │       │       │   │           │           ├── currency_code.proto
│   │       │       │   │           │           └── money.proto
│   │       │       │   │           ├── buf.md
│   │       │       │   │           └── buf.yaml
│   │       │       │   └── finance/
│   │       │       │       ├── bond/
│   │       │       │       │   └── proto/
│   │       │       │       │       ├── LICENSE
│   │       │       │       │       ├── README.md
│   │       │       │       │       ├── buf.yaml
│   │       │       │       │       ├── root1/
│   │       │       │       │       │   └── acme/
│   │       │       │       │       │       └── bond/
│   │       │       │       │       │           ├── excluded/
│   │       │       │       │       │           │   └── v1/
│   │       │       │       │       │           │       └── excluded.proto
│   │       │       │       │       │           └── real/
│   │       │       │       │       │               └── v1/
│   │       │       │       │       │                   └── bond.proto
│   │       │       │       │       └── root2/
│   │       │       │       │           └── acme/
│   │       │       │       │               └── bond/
│   │       │       │       │                   └── v2/
│   │       │       │       │                       └── bond.proto
│   │       │       │       └── portfolio/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── portfolio/
│   │       │       │                       └── v1/
│   │       │       │                           └── portfolio.proto
│   │       │       ├── workspacev2/
│   │       │       │   ├── LICENSE
│   │       │       │   ├── README.md
│   │       │       │   ├── buf.yaml
│   │       │       │   ├── common/
│   │       │       │   │   ├── geo/
│   │       │       │   │   │   └── proto/
│   │       │       │   │   │       ├── LICENSE
│   │       │       │   │   │       └── acme/
│   │       │       │   │   │           └── geo/
│   │       │       │   │   │               └── v1/
│   │       │       │   │   │                   └── country_alpha_3_code.proto
│   │       │       │   │   └── money/
│   │       │       │   │       └── proto/
│   │       │       │   │           ├── acme/
│   │       │       │   │           │   └── money/
│   │       │       │   │           │       └── v1/
│   │       │       │   │           │           ├── currency_code.proto
│   │       │       │   │           │           └── money.proto
│   │       │       │   │           └── buf.md
│   │       │       │   └── finance/
│   │       │       │       ├── bond/
│   │       │       │       │   └── proto/
│   │       │       │       │       ├── LICENSE
│   │       │       │       │       ├── README.md
│   │       │       │       │       └── acme/
│   │       │       │       │           └── bond/
│   │       │       │       │               ├── excluded/
│   │       │       │       │               │   └── v1/
│   │       │       │       │               │       └── excluded.proto
│   │       │       │       │               ├── real/
│   │       │       │       │               │   └── v1/
│   │       │       │       │               │       └── bond.proto
│   │       │       │       │               └── v2/
│   │       │       │       │                   └── bond.proto
│   │       │       │       └── portfolio/
│   │       │       │           └── proto/
│   │       │       │               └── acme/
│   │       │       │                   └── portfolio/
│   │       │       │                       └── v1/
│   │       │       │                           └── portfolio.proto
│   │       │       └── workspacev2_duplicate_path/
│   │       │           ├── buf.yaml
│   │       │           ├── proto/
│   │       │           │   ├── shared/
│   │       │           │   │   └── prefix/
│   │       │           │   │       ├── bar/
│   │       │           │   │       │   └── v1/
│   │       │           │   │       │       └── bar.proto
│   │       │           │   │       └── foo/
│   │       │           │   │           └── v1/
│   │       │           │   │               └── foo.proto
│   │       │           │   └── shared1/
│   │       │           │       └── prefix/
│   │       │           │           ├── x/
│   │       │           │           │   └── x.proto
│   │       │           │           └── y/
│   │       │           │               └── y.proto
│   │       │           └── separate/
│   │       │               └── v1/
│   │       │                   └── separate.proto
│   │       ├── usage.gen.go
│   │       ├── workspace.go
│   │       ├── workspace_dep_manager.go
│   │       ├── workspace_dep_manager_provider.go
│   │       ├── workspace_provider.go
│   │       ├── workspace_targeting.go
│   │       └── workspace_test.go
│   ├── bufpkg/
│   │   ├── bufanalysis/
│   │   │   ├── bufanalysis.go
│   │   │   ├── bufanalysistesting/
│   │   │   │   ├── bufanalysistesting.go
│   │   │   │   ├── bufanalysistesting_test.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── file_annotation.go
│   │   │   ├── file_annotation_set.go
│   │   │   ├── print.go
│   │   │   ├── usage.gen.go
│   │   │   └── util.go
│   │   ├── bufcheck/
│   │   │   ├── annotation.go
│   │   │   ├── breaking_test.go
│   │   │   ├── bufcheck.go
│   │   │   ├── bufcheckserver/
│   │   │   │   ├── bufcheckserver.go
│   │   │   │   ├── bufcheckserver_test.go
│   │   │   │   ├── internal/
│   │   │   │   │   ├── bufcheckserverbuild/
│   │   │   │   │   │   ├── bufcheckserverbuild.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   ├── bufcheckserverhandle/
│   │   │   │   │   │   ├── breaking.go
│   │   │   │   │   │   ├── breaking_util.go
│   │   │   │   │   │   ├── bufcheckserverhandle.go
│   │   │   │   │   │   ├── cardinality.go
│   │   │   │   │   │   ├── field_default.go
│   │   │   │   │   │   ├── field_default_test.go
│   │   │   │   │   │   ├── lint.go
│   │   │   │   │   │   ├── lint_util.go
│   │   │   │   │   │   ├── tag_ranges.go
│   │   │   │   │   │   ├── tag_ranges_test.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   ├── bufcheckserverutil/
│   │   │   │   │   │   ├── breaking.go
│   │   │   │   │   │   ├── bufcheckserverutil.go
│   │   │   │   │   │   ├── customfeatures/
│   │   │   │   │   │   │   └── customfeatures/
│   │   │   │   │   │   │       ├── customfeatures.go
│   │   │   │   │   │   │       ├── customfeatures_test.go
│   │   │   │   │   │   │       └── usage.gen.go
│   │   │   │   │   │   ├── input_file.go
│   │   │   │   │   │   ├── lint.go
│   │   │   │   │   │   ├── request.go
│   │   │   │   │   │   ├── response_writer.go
│   │   │   │   │   │   ├── rule_spec_builder.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   └── buflintvalidate/
│   │   │   │   │       ├── adder.go
│   │   │   │   │       ├── buflintvalidate.go
│   │   │   │   │       ├── cel.go
│   │   │   │   │       ├── cel_test.go
│   │   │   │   │       ├── field.go
│   │   │   │   │       ├── numeric.go
│   │   │   │   │       ├── predefined_rules.go
│   │   │   │   │       ├── usage.gen.go
│   │   │   │   │       └── util.go
│   │   │   │   ├── testdata/
│   │   │   │   │   └── lint/
│   │   │   │   │       └── service_pascal_case/
│   │   │   │   │           └── a.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── category.go
│   │   │   ├── check_client_spec.go
│   │   │   ├── client.go
│   │   │   ├── config.go
│   │   │   ├── file_info.go
│   │   │   ├── internal/
│   │   │   │   ├── bufcheckopt/
│   │   │   │   │   ├── bufcheckopt.go
│   │   │   │   │   └── usage.gen.go
│   │   │   │   └── cmd/
│   │   │   │       ├── buf-plugin-duplicate-category/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-duplicate-rule/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-panic/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       ├── buf-plugin-protovalidate-ext/
│   │   │   │       │   ├── handlers.go
│   │   │   │       │   ├── main.go
│   │   │   │       │   ├── usage.gen.go
│   │   │   │       │   └── util.go
│   │   │   │       ├── buf-plugin-rpc-ext/
│   │   │   │       │   ├── main.go
│   │   │   │       │   └── usage.gen.go
│   │   │   │       └── buf-plugin-suffix/
│   │   │   │           ├── handlers.go
│   │   │   │           ├── main.go
│   │   │   │           └── usage.gen.go
│   │   │   ├── lint_test.go
│   │   │   ├── multi_client.go
│   │   │   ├── multi_client_test.go
│   │   │   ├── options_config.go
│   │   │   ├── policy_config.go
│   │   │   ├── print.go
│   │   │   ├── rule.go
│   │   │   ├── rules_config.go
│   │   │   ├── runner_provider.go
│   │   │   ├── testdata/
│   │   │   │   ├── breaking/
│   │   │   │   │   ├── current/
│   │   │   │   │   │   ├── breaking_custom_plugins/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_same_json_format/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_same_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete_unless_name_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_no_delete_unless_number_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_enum_value_same_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_extension_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_extension_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete_unless_name_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_no_delete_unless_number_reserved/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_cpp_string_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── google/
│   │   │   │   │   │   │       └── protobuf/
│   │   │   │   │   │   │           └── cpp_features.proto
│   │   │   │   │   │   ├── breaking_field_same_ctype/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_default/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_java_utf8_validation/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   ├── 5.proto
│   │   │   │   │   │   │   ├── 6.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_json_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_jstype/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_label/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_name/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_oneof/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_type/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_same_utf8_validation/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_compatible_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_compatible_type/
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_json_compatible_cardinality/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_field_wire_json_compatible_type/
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_file_no_delete/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_no_delete_ignores/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_no_delete_unstable/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       └── a.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_file_same_package/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │   │       └── a_b.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   │   └── sub/
│   │   │   │   │   │   │       └── a/
│   │   │   │   │   │   │           └── b/
│   │   │   │   │   │   │               └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_same_syntax/
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── root/
│   │   │   │   │   │   │       ├── a/
│   │   │   │   │   │   │       │   ├── a.proto
│   │   │   │   │   │   │       │   └── b/
│   │   │   │   │   │   │       │       └── a_b.proto
│   │   │   │   │   │   │       ├── no_package.proto
│   │   │   │   │   │   │       └── sub/
│   │   │   │   │   │   │           └── a/
│   │   │   │   │   │   │               └── b/
│   │   │   │   │   │   │                   └── sub_a_b.proto
│   │   │   │   │   │   ├── breaking_file_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_delete_file/
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       └── a.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_false/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │   │   │       └── 2.proto
│   │   │   │   │   │   │   ├── b/
│   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_ignore_unstable_packages_true/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   │   └── v1beta1/
│   │   │   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │   │   │       └── 2.proto
│   │   │   │   │   │   │   ├── b/
│   │   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_int_enum/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_enum/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_int/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_message/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   └── 2.proto
│   │   │   │   │   │   ├── breaking_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_json_format/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_required_fields/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_message_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_oneof_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_extension_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_no_delete/
│   │   │   │   │   │   │   ├── a1.proto
│   │   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   │   ├── b1.proto
│   │   │   │   │   │   │   ├── b2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_package_service_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_policy_disablebuiltin/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── disablebuiltin.policy.yaml
│   │   │   │   │   │   ├── breaking_policy_empty/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   └── empty.policy.yaml
│   │   │   │   │   │   ├── breaking_policy_local/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   │   ├── buf.policy1.yaml
│   │   │   │   │   │   │   ├── buf.policy2.yaml
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_reserved_enum_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_reserved_message_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_rpc_no_delete/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   ├── breaking_rpc_same_values/
│   │   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   │   └── breaking_service_no_delete/
│   │   │   │   │   │       ├── 1.proto
│   │   │   │   │   │       ├── 2.proto
│   │   │   │   │   │       └── buf.yaml
│   │   │   │   │   └── previous/
│   │   │   │   │       ├── breaking_custom_plugins/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── b.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_enum_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_same_json_format/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_enum_same_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete_unless_name_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_no_delete_unless_number_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_enum_value_same_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_extension_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_extension_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete_unless_name_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_no_delete_unless_number_reserved/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_cpp_string_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── google/
│   │   │   │   │       │       └── protobuf/
│   │   │   │   │       │           └── cpp_features.proto
│   │   │   │   │       ├── breaking_field_same_ctype/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_default/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_java_utf8_validation/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   ├── 4.proto
│   │   │   │   │       │   ├── 5.proto
│   │   │   │   │       │   └── 6.proto
│   │   │   │   │       ├── breaking_field_same_json_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_jstype/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_label/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_name/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_oneof/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_same_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_same_utf8_validation/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_field_wire_compatible_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_wire_compatible_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_field_wire_json_compatible_cardinality/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_field_wire_json_compatible_type/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_file_no_delete/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_no_delete_ignores/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   ├── b/
│   │   │   │   │       │       │   │   └── a_b.proto
│   │   │   │   │       │       │   └── c/
│   │   │   │   │       │       │       └── c.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_no_delete_unstable/
│   │   │   │   │       │   └── a/
│   │   │   │   │       │       └── v1beta1/
│   │   │   │   │       │           ├── a.proto
│   │   │   │   │       │           └── b.proto
│   │   │   │   │       ├── breaking_file_same_package/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_same_syntax/
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── root/
│   │   │   │   │       │       ├── a/
│   │   │   │   │       │       │   ├── a.proto
│   │   │   │   │       │       │   └── b/
│   │   │   │   │       │       │       └── a_b.proto
│   │   │   │   │       │       ├── no_package.proto
│   │   │   │   │       │       └── sub/
│   │   │   │   │       │           └── a/
│   │   │   │   │       │               └── b/
│   │   │   │   │       │                   └── sub_a_b.proto
│   │   │   │   │       ├── breaking_file_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_delete_file/
│   │   │   │   │       │   └── a/
│   │   │   │   │       │       └── v1beta1/
│   │   │   │   │       │           ├── a.proto
│   │   │   │   │       │           └── b.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_false/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   ├── 1.proto
│   │   │   │   │       │   │   │   └── 2.proto
│   │   │   │   │       │   │   └── v1beta1/
│   │   │   │   │       │   │       ├── 1.proto
│   │   │   │   │       │   │       └── 2.proto
│   │   │   │   │       │   └── b/
│   │   │   │   │       │       ├── 1.proto
│   │   │   │   │       │       └── 2.proto
│   │   │   │   │       ├── breaking_ignore_unstable_packages_true/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── a/
│   │   │   │   │       │   │   ├── v1/
│   │   │   │   │       │   │   │   ├── 1.proto
│   │   │   │   │       │   │   │   └── 2.proto
│   │   │   │   │       │   │   └── v1beta1/
│   │   │   │   │       │   │       ├── 1.proto
│   │   │   │   │       │   │       └── 2.proto
│   │   │   │   │       │   └── b/
│   │   │   │   │       │       ├── 1.proto
│   │   │   │   │       │       └── 2.proto
│   │   │   │   │       ├── breaking_int_enum/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_enum/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_int/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_message/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_same_json_format/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   ├── 3.proto
│   │   │   │   │       │   └── 4.proto
│   │   │   │   │       ├── breaking_message_same_required_fields/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_message_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_oneof_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_package_extension_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── 3.proto
│   │   │   │   │       ├── breaking_package_no_delete/
│   │   │   │   │       │   ├── a1.proto
│   │   │   │   │       │   ├── b1.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── c.proto
│   │   │   │   │       ├── breaking_package_service_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   ├── 2.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_policy_disablebuiltin/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── disablebuiltin.policy.yaml
│   │   │   │   │       ├── breaking_policy_empty/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── buf.yaml
│   │   │   │   │       │   └── empty.policy.yaml
│   │   │   │   │       ├── breaking_policy_local/
│   │   │   │   │       │   ├── a.proto
│   │   │   │   │       │   ├── b.proto
│   │   │   │   │       │   └── buf.yaml
│   │   │   │   │       ├── breaking_reserved_enum_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_reserved_message_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_rpc_no_delete/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       ├── breaking_rpc_same_values/
│   │   │   │   │       │   ├── 1.proto
│   │   │   │   │       │   └── 2.proto
│   │   │   │   │       └── breaking_service_no_delete/
│   │   │   │   │           ├── 1.proto
│   │   │   │   │           └── 2.proto
│   │   │   │   ├── lint/
│   │   │   │   │   ├── comment_ignores_cascade_off/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_cascade_on/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_multiple_fails/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_off/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_on/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comment_ignores_with_trailing_comment/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── comments/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── custom_plugins/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── custom_wasm_plugins/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── directory_same_package/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       ├── c.proto
│   │   │   │   │   │       └── d.proto
│   │   │   │   │   ├── editions_go_features/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_first_value_zero/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_no_allow_alias/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_value_prefix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_value_upper_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_zero_value_suffix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── enum_zero_value_suffix_custom/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_lower_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_no_descriptor/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── field_not_required/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── file_lower_snake_case/
│   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   ├── B.proto
│   │   │   │   │   │   ├── Foo.proto
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── aBc.proto
│   │   │   │   │   │   ├── aBc.txt
│   │   │   │   │   │   ├── ab.proto
│   │   │   │   │   │   ├── ab_c.proto
│   │   │   │   │   │   ├── ab_c_.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── fooBar.proto
│   │   │   │   │   ├── ignores1/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores2/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores3/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── ignores4/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── import_no_public/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── one/
│   │   │   │   │   │   │   └── one.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── sub1.proto
│   │   │   │   │   │       └── sub2.proto
│   │   │   │   │   ├── import_used/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── one/
│   │   │   │   │   │   │   └── one.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── sub1.proto
│   │   │   │   │   │       └── sub2.proto
│   │   │   │   │   ├── lint_stable_package_import/
│   │   │   │   │   │   ├── api/
│   │   │   │   │   │   │   ├── baz/
│   │   │   │   │   │   │   │   └── baz.proto
│   │   │   │   │   │   │   ├── v1/
│   │   │   │   │   │   │   │   └── foo.proto
│   │   │   │   │   │   │   ├── v1alpha/
│   │   │   │   │   │   │   │   └── bar.proto
│   │   │   │   │   │   │   └── v2/
│   │   │   │   │   │   │       └── foo.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── message_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── oneof_lower_snake_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── package_defined/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   ├── package_directory_match/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   └── b/
│   │   │   │   │   │   │       ├── a_b.proto
│   │   │   │   │   │   │       └── a_c.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       └── a/
│   │   │   │   │   │           └── b/
│   │   │   │   │   │               └── a_b.proto
│   │   │   │   │   ├── package_lower_snake_case/
│   │   │   │   │   │   ├── 1.proto
│   │   │   │   │   │   ├── 2.proto
│   │   │   │   │   │   ├── 3.proto
│   │   │   │   │   │   ├── 4.proto
│   │   │   │   │   │   ├── 5.proto
│   │   │   │   │   │   ├── 6.proto
│   │   │   │   │   │   ├── 7.proto
│   │   │   │   │   │   ├── 8.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── no_package.proto
│   │   │   │   │   ├── package_no_import_cycle/
│   │   │   │   │   │   ├── a1.proto
│   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   ├── b1.proto
│   │   │   │   │   │   ├── b2.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── c1.proto
│   │   │   │   │   │   ├── c2.proto
│   │   │   │   │   │   ├── d1.proto
│   │   │   │   │   │   ├── d2.proto
│   │   │   │   │   │   ├── none1.proto
│   │   │   │   │   │   └── none2.proto
│   │   │   │   │   ├── package_same_directory/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── a.proto
│   │   │   │   │   ├── package_same_directory_no_package/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── one/
│   │   │   │   │   │       └── no_package.proto
│   │   │   │   │   ├── package_same_option_value/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── sub/
│   │   │   │   │   │       ├── a.proto
│   │   │   │   │   │       └── b.proto
│   │   │   │   │   ├── package_version_suffix/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── foo.proto
│   │   │   │   │   │   ├── foo_bar.proto
│   │   │   │   │   │   ├── foo_bar_v0beta1.proto
│   │   │   │   │   │   ├── foo_bar_v1.proto
│   │   │   │   │   │   ├── foo_bar_v1beta1.proto
│   │   │   │   │   │   ├── foo_bar_v1test.proto
│   │   │   │   │   │   ├── foo_bar_v1test_foo.proto
│   │   │   │   │   │   ├── foo_bar_v1testfoo.proto
│   │   │   │   │   │   ├── foo_bar_v2.proto
│   │   │   │   │   │   ├── foo_bar_v2beta0.proto
│   │   │   │   │   │   ├── foo_bar_vv1beta1.proto
│   │   │   │   │   │   ├── no_package.proto
│   │   │   │   │   │   └── v1.proto
│   │   │   │   │   ├── policy_disablebuiltin/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.policydisablebuiltin.yaml
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── policy_empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── empty.policy.yaml
│   │   │   │   │   ├── policy_ignores1/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores2/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores3/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_ignores4/
│   │   │   │   │   │   ├── buf/
│   │   │   │   │   │   │   ├── bar/
│   │   │   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   │   │   └── bar2.proto
│   │   │   │   │   │   │   ├── buf.proto
│   │   │   │   │   │   │   └── foo/
│   │   │   │   │   │   │       ├── bar/
│   │   │   │   │   │   │       │   └── bar.proto
│   │   │   │   │   │   │       ├── baz/
│   │   │   │   │   │   │       │   └── baz.proto
│   │   │   │   │   │   │       └── buf.proto
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   └── policy.yaml
│   │   │   │   │   ├── policy_local/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── buf.policy1.yaml
│   │   │   │   │   │   ├── buf.policy2.yaml
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── protovalidate/
│   │   │   │   │   │   ├── buf.work.yaml
│   │   │   │   │   │   ├── proto/
│   │   │   │   │   │   │   ├── any.proto
│   │   │   │   │   │   │   ├── bool.proto
│   │   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   │   ├── bytes.proto
│   │   │   │   │   │   │   ├── cel_expression.proto
│   │   │   │   │   │   │   ├── cel_field.proto
│   │   │   │   │   │   │   ├── cel_message.proto
│   │   │   │   │   │   │   ├── duration.proto
│   │   │   │   │   │   │   ├── enum.proto
│   │   │   │   │   │   │   ├── extension.proto
│   │   │   │   │   │   │   ├── field.proto
│   │   │   │   │   │   │   ├── field_mask.proto
│   │   │   │   │   │   │   ├── map.proto
│   │   │   │   │   │   │   ├── number.proto
│   │   │   │   │   │   │   ├── oneof.proto
│   │   │   │   │   │   │   ├── repeated.proto
│   │   │   │   │   │   │   ├── string.proto
│   │   │   │   │   │   │   └── timestamp.proto
│   │   │   │   │   │   └── vendor/
│   │   │   │   │   │       └── protovalidate/
│   │   │   │   │   │           └── buf/
│   │   │   │   │   │               └── validate/
│   │   │   │   │   │                   └── validate.proto
│   │   │   │   │   ├── protovalidate_predefined/
│   │   │   │   │   │   ├── buf.yaml
│   │   │   │   │   │   ├── import/
│   │   │   │   │   │   │   └── import.proto
│   │   │   │   │   │   ├── proto/
│   │   │   │   │   │   │   ├── rules.proto
│   │   │   │   │   │   │   └── test.proto
│   │   │   │   │   │   └── vendor/
│   │   │   │   │   │       └── protovalidate/
│   │   │   │   │   │           └── buf/
│   │   │   │   │   │               └── validate/
│   │   │   │   │   │                   └── validate.proto
│   │   │   │   │   ├── rpc_no_streaming/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_requests/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_requests_and_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_empty_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_same/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_request_response_unique_allow_same_and_empty_request_responses/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_standard_name/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── rpc_standard_name_allow_empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_pascal_case/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_suffix/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── service_suffix_custom/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   ├── syntax_specified/
│   │   │   │   │   │   ├── a/
│   │   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   │   ├── a2.proto
│   │   │   │   │   │   │   └── a3.proto
│   │   │   │   │   │   └── buf.yaml
│   │   │   │   │   └── v2/
│   │   │   │   │       └── ignores/
│   │   │   │   │           ├── buf.yaml
│   │   │   │   │           ├── ignores1/
│   │   │   │   │           │   ├── bar1/
│   │   │   │   │           │   │   ├── bar.proto
│   │   │   │   │           │   │   └── bar2.proto
│   │   │   │   │           │   ├── buf1.proto
│   │   │   │   │           │   └── foo1/
│   │   │   │   │           │       ├── bar/
│   │   │   │   │           │       │   └── bar.proto
│   │   │   │   │           │       ├── baz/
│   │   │   │   │           │       │   └── baz.proto
│   │   │   │   │           │       └── buf.proto
│   │   │   │   │           ├── ignores2/
│   │   │   │   │           │   ├── bar2/
│   │   │   │   │           │   │   ├── bar.proto
│   │   │   │   │           │   │   └── bar2.proto
│   │   │   │   │           │   ├── buf2.proto
│   │   │   │   │           │   └── foo2/
│   │   │   │   │           │       ├── bar/
│   │   │   │   │           │       │   └── bar.proto
│   │   │   │   │           │       ├── baz/
│   │   │   │   │           │       │   └── baz.proto
│   │   │   │   │           │       └── buf.proto
│   │   │   │   │           └── ignores3/
│   │   │   │   │               ├── bar3/
│   │   │   │   │               │   ├── bar.proto
│   │   │   │   │               │   └── bar2.proto
│   │   │   │   │               ├── buf3.proto
│   │   │   │   │               └── foo3/
│   │   │   │   │                   ├── bar/
│   │   │   │   │                   │   └── bar.proto
│   │   │   │   │                   ├── baz/
│   │   │   │   │                   │   └── baz.proto
│   │   │   │   │                   └── buf.proto
│   │   │   │   └── multi_client/
│   │   │   │       └── simple/
│   │   │   │           └── simple.proto
│   │   │   ├── usage.gen.go
│   │   │   └── util.go
│   │   ├── bufcobra/
│   │   │   ├── bufcobra.go
│   │   │   ├── config.go
│   │   │   ├── markdown.go
│   │   │   └── usage.gen.go
│   │   ├── bufconfig/
│   │   │   ├── breaking_config.go
│   │   │   ├── buf_gen_yaml_file.go
│   │   │   ├── buf_gen_yaml_file_test.go
│   │   │   ├── buf_lock_file.go
│   │   │   ├── buf_lock_file_test.go
│   │   │   ├── buf_work_yaml_file.go
│   │   │   ├── buf_work_yaml_file_test.go
│   │   │   ├── buf_yaml_file.go
│   │   │   ├── buf_yaml_file_test.go
│   │   │   ├── bufconfig.go
│   │   │   ├── check_config.go
│   │   │   ├── file.go
│   │   │   ├── file_info.go
│   │   │   ├── file_type.go
│   │   │   ├── file_version.go
│   │   │   ├── generate_config.go
│   │   │   ├── generate_config_test.go
│   │   │   ├── generate_managed_config.go
│   │   │   ├── generate_managed_option.go
│   │   │   ├── generate_plugin_config.go
│   │   │   ├── generate_type_config.go
│   │   │   ├── input_config.go
│   │   │   ├── lint_config.go
│   │   │   ├── module_config.go
│   │   │   ├── object_data.go
│   │   │   ├── paths.go
│   │   │   ├── paths_test.go
│   │   │   ├── plugin_config.go
│   │   │   ├── policy_config.go
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── walk.go
│   │   │   └── walk_test.go
│   │   ├── bufconnect/
│   │   │   ├── bufconnect.go
│   │   │   ├── errors.go
│   │   │   ├── errors_test.go
│   │   │   ├── interceptors.go
│   │   │   ├── interceptors_test.go
│   │   │   ├── netrc_token_provider.go
│   │   │   ├── static_token_provider.go
│   │   │   ├── static_token_provider_test.go
│   │   │   └── usage.gen.go
│   │   ├── bufimage/
│   │   │   ├── bufimage.go
│   │   │   ├── bufimagefuzz/
│   │   │   │   ├── bufimagefuzz.go
│   │   │   │   ├── bufimagefuzz_unix_test.go
│   │   │   │   ├── corpus/
│   │   │   │   │   ├── alloptions.txtar
│   │   │   │   │   ├── ccoptions.txtar
│   │   │   │   │   ├── comment_ignores.txtar
│   │   │   │   │   ├── comment_ignores_cascade.txtar
│   │   │   │   │   ├── comments.txtar
│   │   │   │   │   ├── csharpoptions.txtar
│   │   │   │   │   ├── customoptions1.txtar
│   │   │   │   │   ├── customoptionserror1.txtar
│   │   │   │   │   ├── directory_same_package.txtar
│   │   │   │   │   ├── empty.txtar
│   │   │   │   │   ├── emptyoptions.txtar
│   │   │   │   │   ├── enum_first_value_zero.txtar
│   │   │   │   │   ├── enum_pascal_case.txtar
│   │   │   │   │   ├── enum_value_prefix.txtar
│   │   │   │   │   ├── enum_value_upper_snake_case.txtar
│   │   │   │   │   ├── enum_zero_value_suffix.txtar
│   │   │   │   │   ├── enum_zero_value_suffix_custom.txtar
│   │   │   │   │   ├── ex1.txtar
│   │   │   │   │   ├── ex2.txtar
│   │   │   │   │   ├── ex3.txtar
│   │   │   │   │   ├── field_lower_snake_case.txtar
│   │   │   │   │   ├── field_no_descriptor.txtar
│   │   │   │   │   ├── file_lower_snake_case.txtar
│   │   │   │   │   ├── import_no_public.txtar
│   │   │   │   │   ├── import_no_weak.txtar
│   │   │   │   │   ├── import_used.txtar
│   │   │   │   │   ├── javaoptions.txtar
│   │   │   │   │   ├── jsoptions.txtar
│   │   │   │   │   ├── message_pascal_case.txtar
│   │   │   │   │   ├── objcoptions.txtar
│   │   │   │   │   ├── oneof_lower_snake_case.txtar
│   │   │   │   │   ├── optionpanic.txtar
│   │   │   │   │   ├── package_defined.txtar
│   │   │   │   │   ├── package_directory_match.txtar
│   │   │   │   │   ├── package_lower_snake_case.txtar
│   │   │   │   │   ├── package_same_directory.txtar
│   │   │   │   │   ├── package_same_directory_no_package.txtar
│   │   │   │   │   ├── package_same_option_value.txtar
│   │   │   │   │   ├── package_version_suffix.txtar
│   │   │   │   │   ├── packageversion.txtar
│   │   │   │   │   ├── phpoptions.txtar
│   │   │   │   │   ├── proto3optional1.txtar
│   │   │   │   │   ├── rpc_no_streaming.txtar
│   │   │   │   │   ├── rpc_pascal_case.txtar
│   │   │   │   │   ├── rpc_standard_name.txtar
│   │   │   │   │   ├── rpc_standard_name_allow_empty.txtar
│   │   │   │   │   ├── rubyoptions.txtar
│   │   │   │   │   ├── semicolons.txtar
│   │   │   │   │   ├── service_pascal_case.txtar
│   │   │   │   │   ├── service_suffix.txtar
│   │   │   │   │   ├── service_suffix_custom.txtar
│   │   │   │   │   ├── simple.txtar
│   │   │   │   │   ├── syntax_specified.txtar
│   │   │   │   │   ├── test.txtar
│   │   │   │   │   └── wktimport.txtar
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimagemodify/
│   │   │   │   ├── bufimagemodify.go
│   │   │   │   ├── bufimagemodify_test.go
│   │   │   │   ├── field_option.go
│   │   │   │   ├── file_option.go
│   │   │   │   ├── internal/
│   │   │   │   │   ├── field_options_trie.go
│   │   │   │   │   ├── internal.go
│   │   │   │   │   ├── location_path_dfa.go
│   │   │   │   │   ├── marksweeper.go
│   │   │   │   │   └── usage.gen.go
│   │   │   │   ├── override.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── alloptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── bar/
│   │   │   │   │   │   ├── bar_all/
│   │   │   │   │   │   │   ├── with_package.proto
│   │   │   │   │   │   │   └── without_package.proto
│   │   │   │   │   │   └── bar_empty/
│   │   │   │   │   │       ├── with_package.proto
│   │   │   │   │   │       └── without_package.proto
│   │   │   │   │   ├── ccoptions/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── b.proto
│   │   │   │   │   ├── csharpoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── csharp.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── csharp.proto
│   │   │   │   │   │   │   └── override.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── csharp.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── csharp.proto
│   │   │   │   │   ├── emptyoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── foo/
│   │   │   │   │   │   ├── foo_all/
│   │   │   │   │   │   │   ├── with_package.proto
│   │   │   │   │   │   │   └── without_package.proto
│   │   │   │   │   │   └── foo_empty/
│   │   │   │   │   │       ├── with_package.proto
│   │   │   │   │   │       └── without_package.proto
│   │   │   │   │   ├── javaemptyoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── javaoptions/
│   │   │   │   │   │   ├── java_file.proto
│   │   │   │   │   │   └── override.proto
│   │   │   │   │   ├── jsoptions/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   ├── objcoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   ├── gpb/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── objc.proto
│   │   │   │   │   │   │   └── override.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── objc.proto
│   │   │   │   │   │   └── unversioned/
│   │   │   │   │   │       └── objc.proto
│   │   │   │   │   ├── packageversion/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   └── b.proto
│   │   │   │   │   ├── phpoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── reserved/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── override.proto
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── php.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── php.proto
│   │   │   │   │   ├── rubyoptions/
│   │   │   │   │   │   ├── double/
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   ├── single/
│   │   │   │   │   │   │   ├── override.proto
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   ├── triple/
│   │   │   │   │   │   │   └── ruby.proto
│   │   │   │   │   │   └── underscore/
│   │   │   │   │   │       └── ruby.proto
│   │   │   │   │   └── wktimport/
│   │   │   │   │       └── a.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimagetesting/
│   │   │   │   ├── bufimagetesting.go
│   │   │   │   ├── bufimagetesting_test.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufimageutil/
│   │   │   │   ├── bufimageutil.go
│   │   │   │   ├── bufimageutil_test.go
│   │   │   │   ├── image_filter.go
│   │   │   │   ├── image_index.go
│   │   │   │   ├── source_paths_remap.go
│   │   │   │   ├── source_paths_remap_test.go
│   │   │   │   ├── tags.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── any/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c1.proto
│   │   │   │   │   │   ├── c1.txtar
│   │   │   │   │   │   ├── c2.proto
│   │   │   │   │   │   ├── c2.txtar
│   │   │   │   │   │   ├── c3.proto
│   │   │   │   │   │   ├── c3.txtar
│   │   │   │   │   │   ├── c4.proto
│   │   │   │   │   │   ├── c4.txtar
│   │   │   │   │   │   ├── d.proto
│   │   │   │   │   │   ├── d.txtar
│   │   │   │   │   │   ├── e.proto
│   │   │   │   │   │   └── e.txtar
│   │   │   │   │   ├── deps/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c.proto
│   │   │   │   │   │   ├── old.proto
│   │   │   │   │   │   ├── test.EnumA.txtar
│   │   │   │   │   │   ├── test.FieldA.txtar
│   │   │   │   │   │   ├── test.IncludeWithExcludeExt.txtar
│   │   │   │   │   │   ├── test.PublicOrder.txtar
│   │   │   │   │   │   └── test.proto
│   │   │   │   │   ├── empty/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── c.proto
│   │   │   │   │   │   ├── d.proto
│   │   │   │   │   │   ├── empty.exclude.txtar
│   │   │   │   │   │   └── empty.include.txtar
│   │   │   │   │   ├── exclude_import_deps/
│   │   │   │   │   │   ├── dep.proto
│   │   │   │   │   │   ├── excluded.proto
│   │   │   │   │   │   ├── opt.proto
│   │   │   │   │   │   └── user.proto
│   │   │   │   │   ├── extensions/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── b.proto
│   │   │   │   │   │   ├── extensions-excluded.txtar
│   │   │   │   │   │   └── extensions.txtar
│   │   │   │   │   ├── importmods/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── noimports.txtar
│   │   │   │   │   │   ├── public.proto
│   │   │   │   │   │   ├── regular.proto
│   │   │   │   │   │   ├── regular_public.txtar
│   │   │   │   │   │   ├── regular_weak.txtar
│   │   │   │   │   │   ├── weak.proto
│   │   │   │   │   │   └── weak_public.txtar
│   │   │   │   │   ├── imports/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── bar.txtar
│   │   │   │   │   │   ├── foo.txtar
│   │   │   │   │   │   ├── foo_bar.txtar
│   │   │   │   │   │   └── options.proto
│   │   │   │   │   ├── nesting/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── enum.exclude.txtar
│   │   │   │   │   │   ├── enum.txtar
│   │   │   │   │   │   ├── message.exclude.txtar
│   │   │   │   │   │   ├── message.txtar
│   │   │   │   │   │   ├── mixed.txtar
│   │   │   │   │   │   ├── recursenested.exclude.txtar
│   │   │   │   │   │   ├── recursenested.txtar
│   │   │   │   │   │   ├── usingother.exclude.txtar
│   │   │   │   │   │   └── usingother.txtar
│   │   │   │   │   ├── oneofs/
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── pkg.Foo.exclude-bar.txtar
│   │   │   │   │   │   └── pkg.Foo.exclude-partial.txtar
│   │   │   │   │   ├── options/
│   │   │   │   │   │   ├── Files.txtar
│   │   │   │   │   │   ├── a.proto
│   │   │   │   │   │   ├── all-exclude-options.txtar
│   │   │   │   │   │   ├── all-with-Files.txtar
│   │   │   │   │   │   ├── all.exclude.txtar
│   │   │   │   │   │   ├── all.txtar
│   │   │   │   │   │   ├── options.foo.exclude.txtar
│   │   │   │   │   │   ├── options.foo.include.txtar
│   │   │   │   │   │   ├── options.only_file.txtar
│   │   │   │   │   │   ├── options.proto
│   │   │   │   │   │   ├── pkg.Foo.exclude.txtar
│   │   │   │   │   │   ├── pkg.Foo.txtar
│   │   │   │   │   │   ├── pkg.FooEnum.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooEnum.txtar
│   │   │   │   │   │   ├── pkg.FooService.Do.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooService.Do.txtar
│   │   │   │   │   │   ├── pkg.FooService.exclude-method-types.txtar
│   │   │   │   │   │   ├── pkg.FooService.exclude.txtar
│   │   │   │   │   │   ├── pkg.FooService.mixed.txtar
│   │   │   │   │   │   ├── pkg.FooService.txtar
│   │   │   │   │   │   └── pkg.Pkg.exclude.txtar
│   │   │   │   │   ├── packages/
│   │   │   │   │   │   ├── bar.proto
│   │   │   │   │   │   ├── baz1.proto
│   │   │   │   │   │   ├── baz2.proto
│   │   │   │   │   │   ├── foo.bar.baz.txtar
│   │   │   │   │   │   ├── foo.bar.txtar
│   │   │   │   │   │   ├── foo.proto
│   │   │   │   │   │   ├── foo.txtar
│   │   │   │   │   │   ├── nopackage.proto
│   │   │   │   │   │   ├── options.proto
│   │   │   │   │   │   ├── other.proto
│   │   │   │   │   │   └── root.txtar
│   │   │   │   │   ├── sourcecodeinfo/
│   │   │   │   │   │   ├── Bar.txtar
│   │   │   │   │   │   ├── Baz.txtar
│   │   │   │   │   │   ├── Do.txtar
│   │   │   │   │   │   ├── Foo+Ext.txtar
│   │   │   │   │   │   ├── Foo.txtar
│   │   │   │   │   │   ├── NestedFoo.txtar
│   │   │   │   │   │   ├── Quz.txtar
│   │   │   │   │   │   ├── Svc.txtar
│   │   │   │   │   │   ├── all.txtar
│   │   │   │   │   │   └── test.proto
│   │   │   │   │   └── unuseddeps/
│   │   │   │   │       ├── a.proto
│   │   │   │   │       ├── a.txtar
│   │   │   │   │       ├── ab.txtar
│   │   │   │   │       ├── b.proto
│   │   │   │   │       └── c.proto
│   │   │   │   └── usage.gen.go
│   │   │   ├── build_image.go
│   │   │   ├── build_image_test.go
│   │   │   ├── build_image_unix_test.go
│   │   │   ├── image.go
│   │   │   ├── image_file.go
│   │   │   ├── image_test.go
│   │   │   ├── import_tracker.go
│   │   │   ├── module_image_file_info.go
│   │   │   ├── parser_accessor_handler.go
│   │   │   ├── testdata/
│   │   │   │   ├── customoptions1/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── customoptionserror1/
│   │   │   │   │   ├── a.proto
│   │   │   │   │   └── b.proto
│   │   │   │   ├── cyclicimport/
│   │   │   │   │   ├── a/
│   │   │   │   │   │   └── a.proto
│   │   │   │   │   └── b/
│   │   │   │   │       └── b.proto
│   │   │   │   ├── duplicatesyntheticoneofs/
│   │   │   │   │   ├── a1.proto
│   │   │   │   │   └── a2.proto
│   │   │   │   ├── notamessagetype/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── optionpanic/
│   │   │   │   │   ├── options/
│   │   │   │   │   │   └── option.proto
│   │   │   │   │   └── proto/
│   │   │   │   │       └── test.proto
│   │   │   │   ├── proto3optional1/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── semicolons/
│   │   │   │   │   └── a.proto
│   │   │   │   ├── spacebetweennumberandid/
│   │   │   │   │   └── a.proto
│   │   │   │   └── trailingcomments/
│   │   │   │       └── a.proto
│   │   │   ├── usage.gen.go
│   │   │   ├── util.go
│   │   │   ├── util_test.go
│   │   │   ├── validate.go
│   │   │   └── well_known_type_image_file_info.go
│   │   ├── bufmodule/
│   │   │   ├── added_module.go
│   │   │   ├── bufmodule.go
│   │   │   ├── bufmodule_test.go
│   │   │   ├── bufmoduleapi/
│   │   │   │   ├── bufmoduleapi.go
│   │   │   │   ├── cmd/
│   │   │   │   │   └── buf-legacyfederation-go-data/
│   │   │   │   │       ├── main.go
│   │   │   │   │       └── usage.gen.go
│   │   │   │   ├── commit_provider.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── digest_for_commit_id.go
│   │   │   │   ├── errors.go
│   │   │   │   ├── graph_provider.go
│   │   │   │   ├── module_data_provider.go
│   │   │   │   ├── module_key_for_universal_proto_commit.go
│   │   │   │   ├── module_key_provider.go
│   │   │   │   ├── registry.go
│   │   │   │   ├── universal_proto_commit.go
│   │   │   │   ├── universal_proto_content.go
│   │   │   │   ├── universal_proto_file.go
│   │   │   │   ├── uploader.go
│   │   │   │   ├── usage.gen.go
│   │   │   │   ├── v1_proto_module_provider.go
│   │   │   │   └── v1_proto_owner_provider.go
│   │   │   ├── bufmodulecache/
│   │   │   │   ├── base_provider.go
│   │   │   │   ├── bufmodulecache.go
│   │   │   │   ├── bufmodulecache_test.go
│   │   │   │   ├── commit_provider.go
│   │   │   │   ├── module_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufmoduledebug/
│   │   │   │   ├── bufmoduledebug.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufmodulestore/
│   │   │   │   ├── bufmodulestore.go
│   │   │   │   ├── commit_store.go
│   │   │   │   ├── commit_store_test.go
│   │   │   │   ├── module_data_store.go
│   │   │   │   ├── module_data_store_test.go
│   │   │   │   ├── usage.gen.go
│   │   │   │   └── util.go
│   │   │   ├── bufmoduletesting/
│   │   │   │   ├── bufmoduletesting.go
│   │   │   │   ├── cmd/
│   │   │   │   │   ├── buf-digest/
│   │   │   │   │   │   ├── digest.go
│   │   │   │   │   │   └── usage.gen.go
│   │   │   │   │   └── buf-new-commit-id/
│   │   │   │   │       ├── newcommitid.go
│   │   │   │   │       └── usage.gen.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── commit_key.go
│   │   │   ├── commit_provider.go
│   │   │   ├── digest.go
│   │   │   ├── errors.go
│   │   │   ├── file.go
│   │   │   ├── file_info.go
│   │   │   ├── file_type.go
│   │   │   ├── graph_provider.go
│   │   │   ├── module.go
│   │   │   ├── module_data.go
│   │   │   ├── module_data_provider.go
│   │   │   ├── module_dep.go
│   │   │   ├── module_key.go
│   │   │   ├── module_key_provider.go
│   │   │   ├── module_read_bucket.go
│   │   │   ├── module_set.go
│   │   │   ├── module_set_builder.go
│   │   │   ├── module_visibility.go
│   │   │   ├── object_data.go
│   │   │   ├── paths.go
│   │   │   ├── proto_file_tracker.go
│   │   │   ├── registry_commit_id.go
│   │   │   ├── remote_dep.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufparse/
│   │   │   ├── bufparse.go
│   │   │   ├── errors.go
│   │   │   ├── full_name.go
│   │   │   ├── parse.go
│   │   │   ├── ref.go
│   │   │   └── usage.gen.go
│   │   ├── bufplugin/
│   │   │   ├── bufplugin.go
│   │   │   ├── bufpluginapi/
│   │   │   │   ├── bufpluginapi.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── plugin_data_provider.go
│   │   │   │   ├── plugin_key_provider.go
│   │   │   │   ├── uploader.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufplugincache/
│   │   │   │   ├── bufplugincache.go
│   │   │   │   ├── plugin_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpluginstore/
│   │   │   │   ├── bufpluginstore.go
│   │   │   │   ├── policy_data_store.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── digest.go
│   │   │   ├── errors.go
│   │   │   ├── plugin.go
│   │   │   ├── plugin_data.go
│   │   │   ├── plugin_data_provider.go
│   │   │   ├── plugin_key.go
│   │   │   ├── plugin_key_provider.go
│   │   │   ├── plugin_type.go
│   │   │   ├── plugin_visibility.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufpolicy/
│   │   │   ├── bufpolicy.go
│   │   │   ├── bufpolicyapi/
│   │   │   │   ├── bufpolicyapi.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── policy_data_provider.go
│   │   │   │   ├── policy_key_provider.go
│   │   │   │   ├── uploader.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicycache/
│   │   │   │   ├── bufpolicycache.go
│   │   │   │   ├── policy_data_provider.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicyconfig/
│   │   │   │   ├── buf_policy_yaml_file.go
│   │   │   │   ├── buf_policy_yaml_file_test.go
│   │   │   │   ├── bufpolicyconfig.go
│   │   │   │   ├── convert.go
│   │   │   │   ├── file.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufpolicystore/
│   │   │   │   ├── buf_policy_store.go
│   │   │   │   ├── bufpolicystore.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── commit.go
│   │   │   ├── digest.go
│   │   │   ├── digest_test.go
│   │   │   ├── errors.go
│   │   │   ├── policy.go
│   │   │   ├── policy_config.go
│   │   │   ├── policy_config_test.go
│   │   │   ├── policy_data.go
│   │   │   ├── policy_data_provider.go
│   │   │   ├── policy_key.go
│   │   │   ├── policy_key_provider.go
│   │   │   ├── policy_plugin_data_provider.go
│   │   │   ├── policy_plugin_key_provider.go
│   │   │   ├── policy_visibility.go
│   │   │   ├── uploader.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotocompile/
│   │   │   ├── bufprotocompile.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotoplugin/
│   │   │   ├── bufprotoplugin.go
│   │   │   ├── bufprotoplugin_test.go
│   │   │   ├── bufprotopluginos/
│   │   │   │   ├── bufprotopluginos.go
│   │   │   │   ├── cleaner.go
│   │   │   │   ├── response_writer.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── generator.go
│   │   │   ├── response_writer.go
│   │   │   └── usage.gen.go
│   │   ├── bufprotosource/
│   │   │   ├── bufprotosource.go
│   │   │   ├── bufprotosource_test.go
│   │   │   ├── descriptor.go
│   │   │   ├── enum.go
│   │   │   ├── enum_range.go
│   │   │   ├── enum_value.go
│   │   │   ├── field.go
│   │   │   ├── file.go
│   │   │   ├── file_import.go
│   │   │   ├── files.go
│   │   │   ├── location.go
│   │   │   ├── location_descriptor.go
│   │   │   ├── location_store.go
│   │   │   ├── merge_comment_location.go
│   │   │   ├── message.go
│   │   │   ├── message_range.go
│   │   │   ├── method.go
│   │   │   ├── named_descriptor.go
│   │   │   ├── oneof.go
│   │   │   ├── option_extension_descriptor.go
│   │   │   ├── option_extension_descriptor_test.go
│   │   │   ├── paths.go
│   │   │   ├── reserved_name.go
│   │   │   ├── service.go
│   │   │   ├── tag_range_test.go
│   │   │   ├── testdata/
│   │   │   │   └── nested/
│   │   │   │       └── foo.proto
│   │   │   └── usage.gen.go
│   │   ├── bufreflect/
│   │   │   ├── bufreflect.go
│   │   │   └── usage.gen.go
│   │   ├── bufregistryapi/
│   │   │   ├── bufregistryapimodule/
│   │   │   │   ├── bufregistryapimodule.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufregistryapiowner/
│   │   │   │   ├── bufregistryapiowner.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufregistryapiplugin/
│   │   │   │   ├── bufregistryapiplugin.go
│   │   │   │   └── usage.gen.go
│   │   │   └── bufregistryapipolicy/
│   │   │       ├── bufregistryapipolicy.go
│   │   │       └── usage.gen.go
│   │   ├── bufremoteplugin/
│   │   │   ├── bufremoteplugin.go
│   │   │   ├── bufremoteplugin_test.go
│   │   │   ├── bufremotepluginconfig/
│   │   │   │   ├── bufremotepluginconfig.go
│   │   │   │   ├── bufremotepluginconfig_test.go
│   │   │   │   ├── config.go
│   │   │   │   ├── get.go
│   │   │   │   ├── testdata/
│   │   │   │   │   ├── failure/
│   │   │   │   │   │   ├── invalid-empty-plugin-version.yaml
│   │   │   │   │   │   ├── invalid-empty-version.yaml
│   │   │   │   │   │   ├── invalid-multiple-registries.yaml
│   │   │   │   │   │   └── invalid-plugin-version.yaml
│   │   │   │   │   └── success/
│   │   │   │   │       ├── cargo/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── cmake/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── go/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── go-empty-registry/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── maven/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── npm/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── nuget/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── options/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       ├── python/
│   │   │   │   │       │   └── buf.plugin.yaml
│   │   │   │   │       └── swift/
│   │   │   │   │           └── buf.plugin.yaml
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufremoteplugindocker/
│   │   │   │   ├── bufremoteplugindocker.go
│   │   │   │   ├── docker.go
│   │   │   │   ├── docker_test.go
│   │   │   │   ├── registry_auth_config.go
│   │   │   │   ├── registry_auth_config_test.go
│   │   │   │   ├── testdata/
│   │   │   │   │   └── success/
│   │   │   │   │       └── Dockerfile
│   │   │   │   └── usage.gen.go
│   │   │   ├── bufremotepluginref/
│   │   │   │   ├── bufremotepluginref.go
│   │   │   │   ├── bufremotepluginref_test.go
│   │   │   │   ├── plugin_identity.go
│   │   │   │   ├── plugin_reference.go
│   │   │   │   └── usage.gen.go
│   │   │   ├── dotnet_target_framework.go
│   │   │   ├── dotnet_target_platform_test.go
│   │   │   ├── plugin.go
│   │   │   └── usage.gen.go
│   │   └── buftransport/
│   │       ├── buftransport.go
│   │       └── usage.gen.go
│   ├── gen/
│   │   ├── data/
│   │   │   ├── datalegacyfederation/
│   │   │   │   ├── datalegacyfederation.gen.go
│   │   │   │   └── usage.gen.go
│   │   │   └── datawkt/
│   │   │       ├── datawkt.gen.go
│   │   │       └── usage.gen.go
│   │   └── proto/
│   │       ├── connect/
│   │       │   └── buf/
│   │       │       └── alpha/
│   │       │           ├── audit/
│   │       │           │   └── v1alpha1/
│   │       │           │       └── auditv1alpha1connect/
│   │       │           │           ├── service.connect.go
│   │       │           │           └── usage.gen.go
│   │       │           ├── registry/
│   │       │           │   └── v1alpha1/
│   │       │           │       └── registryv1alpha1connect/
│   │       │           │           ├── admin.connect.go
│   │       │           │           ├── authn.connect.go
│   │       │           │           ├── authz.connect.go
│   │       │           │           ├── convert.connect.go
│   │       │           │           ├── display.connect.go
│   │       │           │           ├── doc.connect.go
│   │       │           │           ├── download.connect.go
│   │       │           │           ├── github.connect.go
│   │       │           │           ├── image.connect.go
│   │       │           │           ├── jsonschema.connect.go
│   │       │           │           ├── organization.connect.go
│   │       │           │           ├── owner.connect.go
│   │       │           │           ├── plugin_curation.connect.go
│   │       │           │           ├── push.connect.go
│   │       │           │           ├── reference.connect.go
│   │       │           │           ├── repository.connect.go
│   │       │           │           ├── repository_branch.connect.go
│   │       │           │           ├── repository_commit.connect.go
│   │       │           │           ├── repository_tag.connect.go
│   │       │           │           ├── resolve.connect.go
│   │       │           │           ├── resource.connect.go
│   │       │           │           ├── schema.connect.go
│   │       │           │           ├── scim_token.connect.go
│   │       │           │           ├── search.connect.go
│   │       │           │           ├── studio.connect.go
│   │       │           │           ├── studio_request.connect.go
│   │       │           │           ├── token.connect.go
│   │       │           │           ├── usage.gen.go
│   │       │           │           ├── user.connect.go
│   │       │           │           └── webhook.connect.go
│   │       │           └── webhook/
│   │       │               └── v1alpha1/
│   │       │                   └── webhookv1alpha1connect/
│   │       │                       ├── event.connect.go
│   │       │                       └── usage.gen.go
│   │       └── go/
│   │           ├── buf/
│   │           │   └── alpha/
│   │           │       ├── audit/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── event.pb.go
│   │           │       │       ├── service.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── breaking/
│   │           │       │   └── v1/
│   │           │       │       ├── config.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── image/
│   │           │       │   └── v1/
│   │           │       │       ├── image.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── lint/
│   │           │       │   └── v1/
│   │           │       │       ├── config.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── module/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── module.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       ├── registry/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── admin.pb.go
│   │           │       │       ├── authn.pb.go
│   │           │       │       ├── authz.pb.go
│   │           │       │       ├── convert.pb.go
│   │           │       │       ├── display.pb.go
│   │           │       │       ├── doc.pb.go
│   │           │       │       ├── download.pb.go
│   │           │       │       ├── git_metadata.pb.go
│   │           │       │       ├── github.pb.go
│   │           │       │       ├── image.pb.go
│   │           │       │       ├── jsonschema.pb.go
│   │           │       │       ├── module.pb.go
│   │           │       │       ├── organization.pb.go
│   │           │       │       ├── owner.pb.go
│   │           │       │       ├── plugin_curation.pb.go
│   │           │       │       ├── push.pb.go
│   │           │       │       ├── reference.pb.go
│   │           │       │       ├── repository.pb.go
│   │           │       │       ├── repository_branch.pb.go
│   │           │       │       ├── repository_commit.pb.go
│   │           │       │       ├── repository_tag.pb.go
│   │           │       │       ├── resolve.pb.go
│   │           │       │       ├── resource.pb.go
│   │           │       │       ├── role.pb.go
│   │           │       │       ├── schema.pb.go
│   │           │       │       ├── scim_token.pb.go
│   │           │       │       ├── search.pb.go
│   │           │       │       ├── studio.pb.go
│   │           │       │       ├── studio_request.pb.go
│   │           │       │       ├── token.pb.go
│   │           │       │       ├── usage.gen.go
│   │           │       │       ├── user.pb.go
│   │           │       │       ├── verification_status.pb.go
│   │           │       │       └── webhook.pb.go
│   │           │       ├── studio/
│   │           │       │   └── v1alpha1/
│   │           │       │       ├── invoke.pb.go
│   │           │       │       └── usage.gen.go
│   │           │       └── webhook/
│   │           │           └── v1alpha1/
│   │           │               ├── event.pb.go
│   │           │               └── usage.gen.go
│   │           ├── google/
│   │           │   └── protobuf/
│   │           │       ├── cpp_features.pb.go
│   │           │       ├── java_features.pb.go
│   │           │       └── usage.gen.go
│   │           └── grpc/
│   │               └── reflection/
│   │                   └── v1/
│   │                       ├── reflection.pb.go
│   │                       └── usage.gen.go
│   └── pkg/
│       ├── bandeps/
│       │   ├── bandeps.go
│       │   ├── checker.go
│       │   ├── cmd/
│       │   │   └── bandeps/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── key_rwlock.go
│       │   ├── state.go
│       │   ├── usage.gen.go
│       │   ├── util.go
│       │   └── violation.go
│       ├── cache/
│       │   ├── cache.go
│       │   └── usage.gen.go
│       ├── cas/
│       │   ├── blob.go
│       │   ├── blob_set.go
│       │   ├── blob_set_test.go
│       │   ├── blob_test.go
│       │   ├── cas.go
│       │   ├── digest.go
│       │   ├── digest_test.go
│       │   ├── errors.go
│       │   ├── file_node.go
│       │   ├── file_set.go
│       │   ├── manifest.go
│       │   ├── manifest_test.go
│       │   ├── storage.go
│       │   └── usage.gen.go
│       ├── cert/
│       │   └── certclient/
│       │       ├── certclient.go
│       │       ├── usage.gen.go
│       │       └── util.go
│       ├── connectclient/
│       │   ├── connectclient.go
│       │   └── usage.gen.go
│       ├── dag/
│       │   ├── comparable_graph.go
│       │   ├── dag.go
│       │   ├── dag_test.go
│       │   ├── dagtest/
│       │   │   ├── dagtest.go
│       │   │   └── usage.gen.go
│       │   ├── errors.go
│       │   ├── graph.go
│       │   └── usage.gen.go
│       ├── diff/
│       │   ├── diff.go
│       │   ├── diffmyers/
│       │   │   ├── diffmyers.go
│       │   │   ├── diffmyers_test.go
│       │   │   ├── testdata/
│       │   │   │   ├── create
│       │   │   │   ├── delete
│       │   │   │   ├── delete-and-insert
│       │   │   │   ├── equal
│       │   │   │   ├── first-line-prefix
│       │   │   │   ├── insert
│       │   │   │   ├── lao-tzu
│       │   │   │   └── remove
│       │   │   └── usage.gen.go
│       │   └── usage.gen.go
│       ├── encoding/
│       │   ├── encoding.go
│       │   ├── encoding_test.go
│       │   └── usage.gen.go
│       ├── filelock/
│       │   ├── filelock.go
│       │   ├── filelock_test.go
│       │   ├── lock.go
│       │   ├── locker.go
│       │   ├── nop_locker.go
│       │   ├── nop_unlocker.go
│       │   └── usage.gen.go
│       ├── git/
│       │   ├── branch.go
│       │   ├── cloner.go
│       │   ├── cmd/
│       │   │   └── git-ls-files-unstaged/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── git.go
│       │   ├── git_test.go
│       │   ├── lister.go
│       │   ├── ref.go
│       │   ├── ref_branch.go
│       │   ├── remote.go
│       │   ├── remote_test.go
│       │   └── usage.gen.go
│       ├── github/
│       │   └── githubtesting/
│       │       ├── archive_reader.go
│       │       ├── githubtesting.go
│       │       └── usage.gen.go
│       ├── httpauth/
│       │   ├── env_authenticator.go
│       │   ├── httpauth.go
│       │   ├── multi_authenticator.go
│       │   ├── netrc_authenticator.go
│       │   ├── nop_authenticator.go
│       │   ├── usage.gen.go
│       │   └── util.go
│       ├── indent/
│       │   ├── indent.go
│       │   └── usage.gen.go
│       ├── iotesting/
│       │   ├── iotesting.go
│       │   └── usage.gen.go
│       ├── licenseheader/
│       │   ├── cmd/
│       │   │   └── license-header/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── licenseheader.go
│       │   ├── licenseheader_test.go
│       │   └── usage.gen.go
│       ├── netext/
│       │   ├── netext.go
│       │   ├── netext_test.go
│       │   └── usage.gen.go
│       ├── netrc/
│       │   ├── machine.go
│       │   ├── netrc.go
│       │   ├── netrc_unix.go
│       │   ├── netrc_unix_test.go
│       │   ├── netrc_windows.go
│       │   ├── testdata/
│       │   │   └── unix/
│       │   │       ├── home1/
│       │   │       │   └── .netrc
│       │   │       ├── home2/
│       │   │       │   └── .netrc
│       │   │       └── home3/
│       │   │           └── .netrcc
│       │   └── usage.gen.go
│       ├── normalpath/
│       │   ├── normalpath.go
│       │   ├── normalpath_test.go
│       │   ├── normalpath_unix.go
│       │   ├── normalpath_unix_test.go
│       │   ├── normalpath_windows.go
│       │   ├── normalpath_windows_test.go
│       │   └── usage.gen.go
│       ├── oauth2/
│       │   ├── client.go
│       │   ├── client_test.go
│       │   ├── device.go
│       │   ├── oauth2.go
│       │   └── usage.gen.go
│       ├── osext/
│       │   ├── osext.go
│       │   └── usage.gen.go
│       ├── pluginrpcutil/
│       │   ├── pluginrpcutil.go
│       │   ├── runner.go
│       │   ├── usage.gen.go
│       │   └── wasm_runner.go
│       ├── protodescriptor/
│       │   ├── protodescriptor.go
│       │   └── usage.gen.go
│       ├── protoencoding/
│       │   ├── detrand.go
│       │   ├── detrand_test.go
│       │   ├── json_marshaler.go
│       │   ├── json_unmarshaler.go
│       │   ├── protoencoding.go
│       │   ├── reparse_extensions.go
│       │   ├── reparse_extensions_test.go
│       │   ├── resolver.go
│       │   ├── strip_legacy_options.go
│       │   ├── strip_legacy_options_test.go
│       │   ├── txtpb_marshaler.go
│       │   ├── txtpb_unmarshaler.go
│       │   ├── usage.gen.go
│       │   ├── wire_marshaler.go
│       │   ├── wire_unmarshaler.go
│       │   ├── yaml_marshaler.go
│       │   └── yaml_unmarshaler.go
│       ├── protogenutil/
│       │   ├── named_helper.go
│       │   ├── protogenutil.go
│       │   └── usage.gen.go
│       ├── protosourcepath/
│       │   ├── README.md
│       │   ├── enum.go
│       │   ├── enumvalue.go
│       │   ├── field.go
│       │   ├── message.go
│       │   ├── method.go
│       │   ├── protosourcepath.go
│       │   ├── protosourcepath_test.go
│       │   ├── service.go
│       │   ├── testdata/
│       │   │   ├── proto2/
│       │   │   │   ├── import.proto
│       │   │   │   └── test.proto
│       │   │   └── proto3/
│       │   │       ├── import.proto
│       │   │       └── test.proto
│       │   └── usage.gen.go
│       ├── protostat/
│       │   ├── protostat.go
│       │   ├── protostat_test.go
│       │   ├── protostatos/
│       │   │   ├── file_walker.go
│       │   │   ├── protostatos.go
│       │   │   └── usage.gen.go
│       │   ├── protostatstorage/
│       │   │   ├── file_walker.go
│       │   │   ├── protostatstorage.go
│       │   │   └── usage.gen.go
│       │   └── usage.gen.go
│       ├── prototesting/
│       │   ├── prototesting.go
│       │   ├── prototesting_unix.go
│       │   ├── prototesting_windows.go
│       │   └── usage.gen.go
│       ├── prototime/
│       │   ├── prototime.go
│       │   └── usage.gen.go
│       ├── protoversion/
│       │   ├── package_version.go
│       │   ├── protoversion.go
│       │   ├── protoversion_test.go
│       │   └── usage.gen.go
│       ├── refcount/
│       │   ├── refcount.go
│       │   ├── refcount_test.go
│       │   └── usage.gen.go
│       ├── shake256/
│       │   ├── shake256.go
│       │   └── usage.gen.go
│       ├── slogapp/
│       │   ├── console.go
│       │   ├── console_test.go
│       │   ├── slogapp.go
│       │   ├── slogapp_test.go
│       │   └── usage.gen.go
│       ├── slogtestext/
│       │   ├── slogtestext.go
│       │   └── usage.gen.go
│       ├── storage/
│       │   ├── bucket.go
│       │   ├── cmd/
│       │   │   ├── ddiff/
│       │   │   │   ├── main.go
│       │   │   │   └── usage.gen.go
│       │   │   └── storage-go-data/
│       │   │       ├── main.go
│       │   │       └── usage.gen.go
│       │   ├── copy.go
│       │   ├── diff.go
│       │   ├── errors.go
│       │   ├── filter.go
│       │   ├── limit.go
│       │   ├── map.go
│       │   ├── mapper.go
│       │   ├── mask.go
│       │   ├── mask_test.go
│       │   ├── matcher.go
│       │   ├── multi.go
│       │   ├── storage.go
│       │   ├── storagearchive/
│       │   │   ├── storagearchive.go
│       │   │   └── usage.gen.go
│       │   ├── storagemem/
│       │   │   ├── bucket.go
│       │   │   ├── internal/
│       │   │   │   ├── internal.go
│       │   │   │   └── usage.gen.go
│       │   │   ├── read_object_closer.go
│       │   │   ├── storagemem.go
│       │   │   ├── storagemem_test.go
│       │   │   ├── usage.gen.go
│       │   │   └── write_object_closer.go
│       │   ├── storageos/
│       │   │   ├── bucket.go
│       │   │   ├── provider.go
│       │   │   ├── storageos.go
│       │   │   ├── storageos_test.go
│       │   │   └── usage.gen.go
│       │   ├── storagetesting/
│       │   │   ├── storagetesting.go
│       │   │   ├── testdata/
│       │   │   │   ├── base/
│       │   │   │   │   ├── 1.proto
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── b/
│       │   │   │   │   │   │   ├── 1.proto
│       │   │   │   │   │   │   ├── 2.proto
│       │   │   │   │   │   │   └── 2.txt
│       │   │   │   │   │   └── bar.yaml
│       │   │   │   │   └── ab/
│       │   │   │   │       ├── 1.proto
│       │   │   │   │       ├── 2.proto
│       │   │   │   │       └── 2.txt
│       │   │   │   ├── diff/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   └── prefix/
│       │   │   │   │   │       ├── 1.txt
│       │   │   │   │   │       └── 2.txt
│       │   │   │   │   └── b/
│       │   │   │   │       └── prefix/
│       │   │   │   │           ├── 1.txt
│       │   │   │   │           └── 3.txt
│       │   │   │   ├── five/
│       │   │   │   │   ├── root1/
│       │   │   │   │   │   └── foo
│       │   │   │   │   └── root2/
│       │   │   │   │       └── foo/
│       │   │   │   │           └── bar.proto
│       │   │   │   ├── four/
│       │   │   │   │   └── root/
│       │   │   │   │       └── a/
│       │   │   │   │           ├── 3.proto
│       │   │   │   │           └── b/
│       │   │   │   │               ├── 1.proto
│       │   │   │   │               └── 2.proto
│       │   │   │   ├── link/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── one/
│       │   │   │   │   └── root/
│       │   │   │   │       ├── 1.proto
│       │   │   │   │       ├── a/
│       │   │   │   │       │   ├── 1.proto
│       │   │   │   │       │   ├── 1.txt
│       │   │   │   │       │   ├── b/
│       │   │   │   │       │   │   ├── 1.proto
│       │   │   │   │       │   │   ├── 2.proto
│       │   │   │   │       │   │   └── 2.txt
│       │   │   │   │       │   └── bar.yaml
│       │   │   │   │       ├── ab/
│       │   │   │   │       │   ├── 1.proto
│       │   │   │   │       │   ├── 2.proto
│       │   │   │   │       │   └── 2.txt
│       │   │   │   │       ├── c/
│       │   │   │   │       │   └── 1.proto
│       │   │   │   │       └── foo.yaml
│       │   │   │   ├── overlay/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── 1
│       │   │   │   │   │   └── 2
│       │   │   │   │   └── b/
│       │   │   │   │       ├── 2
│       │   │   │   │       └── 3
│       │   │   │   ├── symlink_loop/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── symlink_success/
│       │   │   │   │   └── file.proto
│       │   │   │   ├── three/
│       │   │   │   │   ├── a/
│       │   │   │   │   │   ├── one.proto
│       │   │   │   │   │   └── one.txt
│       │   │   │   │   └── b/
│       │   │   │   │       ├── one.txt
│       │   │   │   │       └── two.proto
│       │   │   │   └── two/
│       │   │   │       ├── foo.yaml
│       │   │   │       ├── root1/
│       │   │   │       │   ├── 1.proto
│       │   │   │       │   ├── a/
│       │   │   │       │   │   ├── 1.proto
│       │   │   │       │   │   ├── 1.txt
│       │   │   │       │   │   ├── b/
│       │   │   │       │   │   │   ├── 1.proto
│       │   │   │       │   │   │   ├── 2.proto
│       │   │   │       │   │   │   └── 2.txt
│       │   │   │       │   │   └── bar.yaml
│       │   │   │       │   ├── ab/
│       │   │   │       │   │   ├── 1.proto
│       │   │   │       │   │   ├── 2.proto
│       │   │   │       │   │   └── 2.txt
│       │   │   │       │   ├── c/
│       │   │   │       │   │   └── 1.proto
│       │   │   │       │   └── foo.yaml
│       │   │   │       ├── root2/
│       │   │   │       │   ├── 2.proto
│       │   │   │       │   ├── a/
│       │   │   │       │   │   ├── 2.proto
│       │   │   │       │   │   ├── 2.txt
│       │   │   │       │   │   ├── b/
│       │   │   │       │   │   │   ├── 3.proto
│       │   │   │       │   │   │   ├── 4.proto
│       │   │   │       │   │   │   └── 4.txt
│       │   │   │       │   │   └── bat.yaml
│       │   │   │       │   ├── ab/
│       │   │   │       │   │   ├── 3.proto
│       │   │   │       │   │   ├── 4.proto
│       │   │   │       │   │   └── 4.txt
│       │   │   │       │   ├── baz.yaml
│       │   │   │       │   └── c/
│       │   │   │       │       └── 3.proto
│       │   │   │       └── rootoverlap/
│       │   │   │           ├── 1.proto
│       │   │   │           ├── a/
│       │   │   │           │   ├── 1.proto
│       │   │   │           │   ├── 1.txt
│       │   │   │           │   ├── b/
│       │   │   │           │   │   ├── 1.proto
│       │   │   │           │   │   ├── 2.proto
│       │   │   │           │   │   └── 2.txt
│       │   │   │           │   └── bar.yaml
│       │   │   │           ├── ab/
│       │   │   │           │   ├── 1.proto
│       │   │   │           │   ├── 2.proto
│       │   │   │           │   └── 2.txt
│       │   │   │           ├── c/
│       │   │   │           │   └── 1.proto
│       │   │   │           └── foo.yaml
│       │   │   └── usage.gen.go
│       │   ├── storageutil/
│       │   │   ├── storageutil.go
│       │   │   └── usage.gen.go
│       │   ├── strip.go
│       │   ├── usage.gen.go
│       │   └── util.go
│       ├── stringjson/
│       │   ├── stringjson.go
│       │   └── usage.gen.go
│       ├── syserror/
│       │   ├── syserror.go
│       │   └── usage.gen.go
│       ├── thread/
│       │   ├── thread.go
│       │   ├── thread_test.go
│       │   └── usage.gen.go
│       ├── tmp/
│       │   ├── tmp.go
│       │   ├── tmp_test.go
│       │   └── usage.gen.go
│       ├── transport/
│       │   └── http/
│       │       ├── httpclient/
│       │       │   ├── client.go
│       │       │   ├── httpclient.go
│       │       │   └── usage.gen.go
│       │       └── httpserver/
│       │           ├── httpserver.go
│       │           └── usage.gen.go
│       ├── uuidutil/
│       │   ├── usage.gen.go
│       │   ├── uuidutil.go
│       │   └── uuidutil_test.go
│       ├── verbose/
│       │   ├── usage.gen.go
│       │   └── verbose.go
│       └── wasm/
│           ├── compiled_module.go
│           ├── runtime.go
│           ├── unimplemented_runtime.go
│           ├── usage.gen.go
│           └── wasm.go
└── proto/
    └── buf/
        └── alpha/
            ├── audit/
            │   └── v1alpha1/
            │       ├── event.proto
            │       └── service.proto
            ├── breaking/
            │   └── v1/
            │       └── config.proto
            ├── image/
            │   └── v1/
            │       └── image.proto
            ├── lint/
            │   └── v1/
            │       └── config.proto
            ├── module/
            │   └── v1alpha1/
            │       └── module.proto
            ├── registry/
            │   └── v1alpha1/
            │       ├── admin.proto
            │       ├── authn.proto
            │       ├── authz.proto
            │       ├── convert.proto
            │       ├── display.proto
            │       ├── doc.proto
            │       ├── download.proto
            │       ├── git_metadata.proto
            │       ├── github.proto
            │       ├── image.proto
            │       ├── jsonschema.proto
            │       ├── module.proto
            │       ├── organization.proto
            │       ├── owner.proto
            │       ├── plugin_curation.proto
            │       ├── push.proto
            │       ├── reference.proto
            │       ├── repository.proto
            │       ├── repository_branch.proto
            │       ├── repository_commit.proto
            │       ├── repository_tag.proto
            │       ├── resolve.proto
            │       ├── resource.proto
            │       ├── role.proto
            │       ├── schema.proto
            │       ├── scim_token.proto
            │       ├── search.proto
            │       ├── studio.proto
            │       ├── studio_request.proto
            │       ├── token.proto
            │       ├── user.proto
            │       ├── verification_status.proto
            │       └── webhook.proto
            ├── studio/
            │   └── v1alpha1/
            │       └── invoke.proto
            └── webhook/
                └── v1alpha1/
                    └── event.proto
Download .txt
Showing preview only (1,688K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (17521 symbols across 843 files)

FILE: cmd/buf/buf.go
  function main (line 131) | func main() {
  function newRootCommand (line 135) | func newRootCommand(name string) *appcmd.Command {
  function newErrorInterceptor (line 471) | func newErrorInterceptor() appext.Interceptor {
  function wrapError (line 482) | func wrapError(err error) error {
  function isEmptyUnknownError (line 594) | func isEmptyUnknownError(err error) bool {
  function wrappedTLSError (line 602) | func wrappedTLSError(err error) error {
  function appFailureError (line 609) | func appFailureError(err error) error {
  function isPossibleNewCLIOldBSRError (line 615) | func isPossibleNewCLIOldBSRError(connectErr *connect.Error) bool {
  function deprecatedMessage (line 632) | func deprecatedMessage(newCommand, oldCommand string) string {

FILE: cmd/buf/buf_test.go
  type outputCheckRule (line 169) | type outputCheckRule struct
  function TestSuccess1 (line 179) | func TestSuccess1(t *testing.T) {
  function TestSuccess2 (line 185) | func TestSuccess2(t *testing.T) {
  function TestSuccess3 (line 191) | func TestSuccess3(t *testing.T) {
  function TestSuccess4 (line 197) | func TestSuccess4(t *testing.T) {
  function TestSuccess5 (line 203) | func TestSuccess5(t *testing.T) {
  function TestSuccess6 (line 209) | func TestSuccess6(t *testing.T) {
  function TestSuccessDir (line 216) | func TestSuccessDir(t *testing.T) {
  function TestFail1 (line 244) | func TestFail1(t *testing.T) {
  function TestFail2 (line 265) | func TestFail2(t *testing.T) {
  function TestFail3 (line 288) | func TestFail3(t *testing.T) {
  function TestFail4 (line 311) | func TestFail4(t *testing.T) {
  function TestFail5 (line 336) | func TestFail5(t *testing.T) {
  function TestFail6 (line 367) | func TestFail6(t *testing.T) {
  function TestFail7 (line 405) | func TestFail7(t *testing.T) {
  function TestFail8 (line 455) | func TestFail8(t *testing.T) {
  function TestFail9 (line 468) | func TestFail9(t *testing.T) {
  function TestFail10 (line 482) | func TestFail10(t *testing.T) {
  function TestFail11 (line 504) | func TestFail11(t *testing.T) {
  function TestFail12 (line 537) | func TestFail12(t *testing.T) {
  function TestFail13 (line 557) | func TestFail13(t *testing.T) {
  function TestFailCheckBreaking1 (line 571) | func TestFailCheckBreaking1(t *testing.T) {
  function TestFailCheckBreaking2 (line 593) | func TestFailCheckBreaking2(t *testing.T) {
  function TestFailCheckBreaking3 (line 607) | func TestFailCheckBreaking3(t *testing.T) {
  function TestFailCheckBreaking4 (line 624) | func TestFailCheckBreaking4(t *testing.T) {
  function TestFailCheckBreaking5 (line 641) | func TestFailCheckBreaking5(t *testing.T) {
  function TestCheckLsLintRulesModAll (line 658) | func TestCheckLsLintRulesModAll(t *testing.T) {
  function TestCheckPolicyConfigLsLintRulesConfigured (line 717) | func TestCheckPolicyConfigLsLintRulesConfigured(t *testing.T) {
  function TestCheckLsLintRulesFromConfig (line 734) | func TestCheckLsLintRulesFromConfig(t *testing.T) {
  function TestCheckLsLintRulesV1Beta1 (line 868) | func TestCheckLsLintRulesV1Beta1(t *testing.T) {
  function TestCheckLsLintRulesV2 (line 925) | func TestCheckLsLintRulesV2(t *testing.T) {
  function TestCheckLsBreakingRulesV1 (line 987) | func TestCheckLsBreakingRulesV1(t *testing.T) {
  function TestCheckLsBreakingRulesV1Beta1 (line 1065) | func TestCheckLsBreakingRulesV1Beta1(t *testing.T) {
  function TestCheckLsBreakingRulesV2 (line 1141) | func TestCheckLsBreakingRulesV2(t *testing.T) {
  function TestCheckLsBreakingRulesFromConfig (line 1222) | func TestCheckLsBreakingRulesFromConfig(t *testing.T) {
  function TestCheckLsBreakingRulesFromConfigNotNamedBufYAML (line 1330) | func TestCheckLsBreakingRulesFromConfigNotNamedBufYAML(t *testing.T) {
  function TestCheckLsBreakingRulesFromConfigExceptDeprecated (line 1349) | func TestCheckLsBreakingRulesFromConfigExceptDeprecated(t *testing.T) {
  function TestLsModulesWorkspaceV1 (line 1402) | func TestLsModulesWorkspaceV1(t *testing.T) {
  function TestLsModulesWorkspaceV2 (line 1483) | func TestLsModulesWorkspaceV2(t *testing.T) {
  function TestLsModulesModuleV1 (line 1558) | func TestLsModulesModuleV1(t *testing.T) {
  function TestLsModulesModuleV1Beta1 (line 1656) | func TestLsModulesModuleV1Beta1(t *testing.T) {
  function TestLsModulesNoConfig (line 1752) | func TestLsModulesNoConfig(t *testing.T) {
  function TestLsModulesBothConfig (line 1807) | func TestLsModulesBothConfig(t *testing.T) {
  function TestLsModulesInvalidVersion (line 1840) | func TestLsModulesInvalidVersion(t *testing.T) {
  function TestLsModulesConfigFlag (line 1863) | func TestLsModulesConfigFlag(t *testing.T) {
  function TestLsModulesConfigFlagTakesPrecedence (line 1914) | func TestLsModulesConfigFlagTakesPrecedence(t *testing.T) {
  function TestLsModulesWorkspaceV2DuplicateDirPath (line 1945) | func TestLsModulesWorkspaceV2DuplicateDirPath(t *testing.T) {
  function TestLsBreakingRulesDeprecated (line 2027) | func TestLsBreakingRulesDeprecated(t *testing.T) {
  function TestLsFiles (line 2132) | func TestLsFiles(t *testing.T) {
  function TestLsFilesIncludeImports (line 2173) | func TestLsFilesIncludeImports(t *testing.T) {
  function TestLsFilesIncludeImportsAsImportPaths (line 2209) | func TestLsFilesIncludeImportsAsImportPaths(t *testing.T) {
  function TestLsFilesImage1 (line 2235) | func TestLsFilesImage1(t *testing.T) {
  function TestLsFilesImage1_Yaml (line 2260) | func TestLsFilesImage1_Yaml(t *testing.T) {
  function TestLsFilesImage2 (line 2285) | func TestLsFilesImage2(t *testing.T) {
  function TestLsFilesImage3 (line 2312) | func TestLsFilesImage3(t *testing.T) {
  function TestLsFilesImage4 (line 2338) | func TestLsFilesImage4(t *testing.T) {
  function TestLsFilesImage5 (line 2363) | func TestLsFilesImage5(t *testing.T) {
  function TestBuildFailProtoFileRefWithPathFlag (line 2390) | func TestBuildFailProtoFileRefWithPathFlag(t *testing.T) {
  function TestImageConvertRoundtripBinaryJSONBinary (line 2407) | func TestImageConvertRoundtripBinaryJSONBinary(t *testing.T) {
  function TestImageConvertRoundtripJSONBinaryJSON (line 2454) | func TestImageConvertRoundtripJSONBinaryJSON(t *testing.T) {
  function TestModInitBasic (line 2501) | func TestModInitBasic(t *testing.T) {
  function TestLsFilesOverlappingPaths (line 2519) | func TestLsFilesOverlappingPaths(t *testing.T) {
  function TestBuildOverlappingPaths (line 2539) | func TestBuildOverlappingPaths(t *testing.T) {
  function TestExportProto (line 2560) | func TestExportProto(t *testing.T) {
  function TestExportOtherProto (line 2585) | func TestExportOtherProto(t *testing.T) {
  function TestExportAll (line 2610) | func TestExportAll(t *testing.T) {
  function TestExportExcludeImports (line 2636) | func TestExportExcludeImports(t *testing.T) {
  function TestExportPaths (line 2660) | func TestExportPaths(t *testing.T) {
  function TestExportPathsAndExcludes (line 2685) | func TestExportPathsAndExcludes(t *testing.T) {
  function TestExportProtoFileRef (line 2722) | func TestExportProtoFileRef(t *testing.T) {
  function TestExportProtoFileRefExcludeImports (line 2746) | func TestExportProtoFileRefExcludeImports(t *testing.T) {
  function TestExportProtoFileRefIncludePackageFiles (line 2770) | func TestExportProtoFileRefIncludePackageFiles(t *testing.T) {
  function TestExportProtoFileRefIncludePackageFilesExcludeImports (line 2795) | func TestExportProtoFileRefIncludePackageFilesExcludeImports(t *testing....
  function TestExportProtoFileRefWithPathFlag (line 2820) | func TestExportProtoFileRefWithPathFlag(t *testing.T) {
  function TestExportAllSourceFilesV1Module (line 2838) | func TestExportAllSourceFilesV1Module(t *testing.T) {
  function TestExportAllSourceFilesV1Workspace (line 2865) | func TestExportAllSourceFilesV1Workspace(t *testing.T) {
  function TestExportAllSourceFilesV2Module (line 2896) | func TestExportAllSourceFilesV2Module(t *testing.T) {
  function TestExportAllSourceFilesV2Workspace (line 2923) | func TestExportAllSourceFilesV2Workspace(t *testing.T) {
  function TestBuildWithPaths (line 2954) | func TestBuildWithPaths(t *testing.T) {
  function TestLintWithPaths (line 2974) | func TestLintWithPaths(t *testing.T) {
  function TestLintWithPlugins (line 3006) | func TestLintWithPlugins(t *testing.T) {
  function TestBreakingWithPaths (line 3216) | func TestBreakingWithPaths(t *testing.T) {
  function TestBreakingWithPlugins (line 3266) | func TestBreakingWithPlugins(t *testing.T) {
  function TestBreakingAgainstRegistryFlag (line 3672) | func TestBreakingAgainstRegistryFlag(t *testing.T) {
  function TestVersion (line 3696) | func TestVersion(t *testing.T) {
  function TestConvertWithImage (line 3701) | func TestConvertWithImage(t *testing.T) {
  function TestConvertOutput (line 3800) | func TestConvertOutput(t *testing.T) {
  function TestConvertInvalidTypeName (line 3893) | func TestConvertInvalidTypeName(t *testing.T) {
  function TestConvert (line 3922) | func TestConvert(t *testing.T) {
  function TestFormat (line 4135) | func TestFormat(t *testing.T) {
  function TestFormatSingleFile (line 4156) | func TestFormatSingleFile(t *testing.T) {
  function TestFormatDiff (line 4180) | func TestFormatDiff(t *testing.T) {
  function TestFormatExitCode (line 4217) | func TestFormatExitCode(t *testing.T) {
  function TestFormatEquivalence (line 4246) | func TestFormatEquivalence(t *testing.T) {
  function TestFormatInvalidFlagCombination (line 4288) | func TestFormatInvalidFlagCombination(t *testing.T) {
  function TestFormatInvalidWriteWithModuleReference (line 4306) | func TestFormatInvalidWriteWithModuleReference(t *testing.T) {
  function TestFormatInvalidIncludePackageFiles (line 4321) | func TestFormatInvalidIncludePackageFiles(t *testing.T) {
  function TestFormatInvalidInputDoesNotCreateDirectory (line 4335) | func TestFormatInvalidInputDoesNotCreateDirectory(t *testing.T) {
  function TestConvertRoundTrip (line 4366) | func TestConvertRoundTrip(t *testing.T) {
  function TestProtoFileNoWorkspaceOrModule (line 4477) | func TestProtoFileNoWorkspaceOrModule(t *testing.T) {
  function TestModuleArchiveDir (line 4502) | func TestModuleArchiveDir(t *testing.T) {
  function TestLintDisabledForModuleInWorkspace (line 4521) | func TestLintDisabledForModuleInWorkspace(t *testing.T) {
  function TestLintNoSourceCodeInfoIgnores (line 4533) | func TestLintNoSourceCodeInfoIgnores(t *testing.T) {
  function testBuildLsFilesFormatImport (line 4571) | func testBuildLsFilesFormatImport(t *testing.T, expectedExitCode int, ex...
  function testModInit (line 4586) | func testModInit(t *testing.T, expectedData string, document bool, name ...
  function testRunStdout (line 4602) | func testRunStdout(t *testing.T, stdin io.Reader, expectedExitCode int, ...
  function testRunStderr (line 4614) | func testRunStderr(t *testing.T, stdin io.Reader, expectedExitCode int, ...
  function testRunStdoutStderrNoWarn (line 4626) | func testRunStdoutStderrNoWarn(t *testing.T, stdin io.Reader, expectedEx...
  function testRunStderrContainsNoWarn (line 4645) | func testRunStderrContainsNoWarn(t *testing.T, stdin io.Reader, expected...
  function testRunStdoutFile (line 4663) | func testRunStdoutFile(t *testing.T, stdin io.Reader, expectedExitCode i...
  function testRun (line 4677) | func testRun(
  function getRuleIDsFromLsBreaking (line 4695) | func getRuleIDsFromLsBreaking(t *testing.T, fileVersion string, useIDs [...
  function testLsRuleOutputJSON (line 4736) | func testLsRuleOutputJSON(

FILE: cmd/buf/buf_unix_test.go
  function TestLsFilesSymlinks (line 24) | func TestLsFilesSymlinks(t *testing.T) {
  function TestBuildSymlinks (line 50) | func TestBuildSymlinks(t *testing.T) {

FILE: cmd/buf/imports_test.go
  function TestValidNoImports (line 32) | func TestValidNoImports(t *testing.T) {
  function TestValidImportFromCache (line 42) | func TestValidImportFromCache(t *testing.T) {
  function TestValidImportFromCorruptedCacheFile (line 52) | func TestValidImportFromCorruptedCacheFile(t *testing.T) {
  function TestValidImportFromCorruptedCacheDep (line 90) | func TestValidImportFromCorruptedCacheDep(t *testing.T) {
  function TestValidImportTransitiveFromCache (line 127) | func TestValidImportTransitiveFromCache(t *testing.T) {
  function TestValidImportWKT (line 137) | func TestValidImportWKT(t *testing.T) {
  function TestInvalidNonexistentImport (line 147) | func TestInvalidNonexistentImport(t *testing.T) {
  function TestInvalidNonexistentImportFromDirectDep (line 157) | func TestInvalidNonexistentImportFromDirectDep(t *testing.T) {
  function TestInvalidImportFromTransitive (line 167) | func TestInvalidImportFromTransitive(t *testing.T) {
  function TestInvalidImportFromTransitiveWorkspace (line 183) | func TestInvalidImportFromTransitiveWorkspace(t *testing.T) {
  function TestValidImportFromLocalOnlyWorkspaceUnnamedModules (line 195) | func TestValidImportFromLocalOnlyWorkspaceUnnamedModules(t *testing.T) {
  function TestGraphNoWarningsValidImportFromWorkspaceNamedModules (line 205) | func TestGraphNoWarningsValidImportFromWorkspaceNamedModules(t *testing....
  function testRunStderrWithCache (line 216) | func testRunStderrWithCache(t *testing.T, stdin io.Reader, expectedExitC...
  function testRunStderrContainsWithCache (line 234) | func testRunStderrContainsWithCache(t *testing.T, stdin io.Reader, expec...
  function useEnvVar (line 252) | func useEnvVar(use string, suffix string) string {

FILE: cmd/buf/internal/command/alpha/protoc/const_unix.go
  constant includeDirPathSeparator (line 25) | includeDirPathSeparator = ":"

FILE: cmd/buf/internal/command/alpha/protoc/const_windows.go
  constant includeDirPathSeparator (line 23) | includeDirPathSeparator = ";"

FILE: cmd/buf/internal/command/alpha/protoc/errors.go
  function newCannotSpecifyOptWithoutOutError (line 27) | func newCannotSpecifyOptWithoutOutError(pluginName string) error {
  function newCannotSpecifyPathWithoutOutError (line 31) | func newCannotSpecifyPathWithoutOutError(pluginName string) error {
  function newRecursiveReferenceError (line 35) | func newRecursiveReferenceError(flagFilePath string) error {
  function newDuplicateOutError (line 39) | func newDuplicateOutError(pluginName string) error {
  function newEmptyOptError (line 43) | func newEmptyOptError(pluginName string) error {
  function newPluginPathValueEmptyError (line 47) | func newPluginPathValueEmptyError() error {
  function newPluginPathValueInvalidError (line 51) | func newPluginPathValueInvalidError(pluginPathValue string) error {
  function newPluginPathNameInvalidPrefixError (line 55) | func newPluginPathNameInvalidPrefixError(pluginName string) error {
  function newDuplicatePluginPathError (line 59) | func newDuplicatePluginPathError(pluginName string) error {
  function newEncodeNotSupportedError (line 63) | func newEncodeNotSupportedError() error {
  function newDecodeNotSupportedError (line 73) | func newDecodeNotSupportedError() error {
  function newDecodeRawNotSupportedError (line 83) | func newDecodeRawNotSupportedError() error {
  function newDescriptorSetInNotSupportedError (line 93) | func newDescriptorSetInNotSupportedError() error {

FILE: cmd/buf/internal/command/alpha/protoc/flags.go
  constant includeDirPathsFlagName (line 32) | includeDirPathsFlagName       = "proto_path"
  constant includeImportsFlagName (line 33) | includeImportsFlagName        = "include_imports"
  constant includeSourceInfoFlagName (line 34) | includeSourceInfoFlagName     = "include_source_info"
  constant printFreeFieldNumbersFlagName (line 35) | printFreeFieldNumbersFlagName = "print_free_field_numbers"
  constant outputFlagName (line 36) | outputFlagName                = "descriptor_set_out"
  constant pluginPathValuesFlagName (line 37) | pluginPathValuesFlagName      = "plugin"
  constant errorFormatFlagName (line 38) | errorFormatFlagName           = "error_format"
  constant byDirFlagName (line 39) | byDirFlagName                 = "by-dir"
  constant pluginFakeFlagName (line 41) | pluginFakeFlagName = "protoc_plugin_fake"
  constant encodeFlagName (line 43) | encodeFlagName          = "encode"
  constant decodeFlagName (line 44) | decodeFlagName          = "decode"
  constant decodeRawFlagName (line 45) | decodeRawFlagName       = "decode_raw"
  constant descriptorSetInFlagName (line 46) | descriptorSetInFlagName = "descriptor_set_in"
  type flags (line 54) | type flags struct
  type env (line 64) | type env struct
  type flagsBuilder (line 72) | type flagsBuilder struct
    method Bind (line 92) | func (f *flagsBuilder) Bind(flagSet *pflag.FlagSet) {
    method Normalize (line 196) | func (f *flagsBuilder) Normalize(flagSet *pflag.FlagSet, name string) ...
    method Build (line 208) | func (f *flagsBuilder) Build(args []string) (*env, error) {
    method pluginFakeParse (line 249) | func (f *flagsBuilder) pluginFakeParse(name string, suffix string, isO...
    method buildRec (line 264) | func (f *flagsBuilder) buildRec(
    method merge (line 322) | func (f *flagsBuilder) merge(subFlagsBuilder *flagsBuilder) error {
    method parsePluginNameToPluginInfo (line 356) | func (f *flagsBuilder) parsePluginNameToPluginInfo(pluginNameToPluginI...
    method getPluginNamesSortedByOutIndex (line 439) | func (f *flagsBuilder) getPluginNamesSortedByOutIndex(
    method checkUnsupported (line 479) | func (f *flagsBuilder) checkUnsupported() error {
  function newFlagsBuilder (line 86) | func newFlagsBuilder() *flagsBuilder {
  type pluginValue (line 495) | type pluginValue struct
  function newPluginValue (line 500) | func newPluginValue() *pluginValue {
  function normalizeFunc (line 504) | func normalizeFunc(f func(*pflag.FlagSet, string) string) func(*pflag.Fl...
  function splitIncludeDirPaths (line 515) | func splitIncludeDirPaths(includeDirPaths []string) []string {

FILE: cmd/buf/internal/command/alpha/protoc/flags_test.go
  function TestParseFlags (line 27) | func TestParseFlags(t *testing.T) {
  function testParseFlags (line 622) | func testParseFlags(name string, args []string) (*env, error) {

FILE: cmd/buf/internal/command/alpha/protoc/flags_unix.go
  function isOutNotAFullPath (line 33) | func isOutNotAFullPath(path string) bool {

FILE: cmd/buf/internal/command/alpha/protoc/flags_windows.go
  function isOutNotAFullPath (line 37) | func isOutNotAFullPath(path string) bool {

FILE: cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-receiver/main.go
  function main (line 25) | func main() {
  function handle (line 29) | func handle(

FILE: cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-writer/main.go
  function main (line 25) | func main() {
  function handle (line 29) | func handle(

FILE: cmd/buf/internal/command/alpha/protoc/plugin.go
  type pluginInfo (line 30) | type pluginInfo struct
  function newPluginInfo (line 39) | func newPluginInfo() *pluginInfo {
  function executePlugin (line 43) | func executePlugin(

FILE: cmd/buf/internal/command/alpha/protoc/protoc.go
  function NewCommand (line 42) | func NewCommand(
  function run (line 84) | func run(

FILE: cmd/buf/internal/command/alpha/protoc/protoc_test.go
  type testPluginInfo (line 54) | type testPluginInfo struct
  function TestOverlap (line 59) | func TestOverlap(t *testing.T) {
  function TestComparePrintFreeFieldNumbersGoogleapis (line 84) | func TestComparePrintFreeFieldNumbersGoogleapis(t *testing.T) {
  function TestCompareOutputGoogleapis (line 122) | func TestCompareOutputGoogleapis(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisGo (line 138) | func TestCompareGeneratedStubsGoogleapisGo(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisGoZip (line 151) | func TestCompareGeneratedStubsGoogleapisGoZip(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisGoJar (line 165) | func TestCompareGeneratedStubsGoogleapisGoJar(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisObjc (line 179) | func TestCompareGeneratedStubsGoogleapisObjc(t *testing.T) {
  function TestCompareInsertionPointOutput (line 190) | func TestCompareInsertionPointOutput(t *testing.T) {
  function TestInsertionPointMixedPathsSuccess (line 204) | func TestInsertionPointMixedPathsSuccess(t *testing.T) {
  function testInsertionPointMixedPathsSuccess (line 216) | func testInsertionPointMixedPathsSuccess(t *testing.T, receiverOut strin...
  function testCompareGeneratedStubs (line 266) | func testCompareGeneratedStubs(
  function testCompareGeneratedStubsArchive (line 348) | func testCompareGeneratedStubsArchive(
  function testGetBufProtocFileDescriptorSet (line 445) | func testGetBufProtocFileDescriptorSet(t *testing.T, dirPath string) *de...
  function testGetBufProtocFileDescriptorSetBytes (line 459) | func testGetBufProtocFileDescriptorSetBytes(t *testing.T, dirPath string...

FILE: cmd/buf/internal/command/alpha/registry/token/tokendelete/tokendelete.go
  constant forceFlagName (line 32) | forceFlagName   = "force"
  constant tokenIDFlagName (line 33) | tokenIDFlagName = "token-id"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 55) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 80) | func run(

FILE: cmd/buf/internal/command/alpha/registry/token/tokenget/tokenget.go
  constant formatFlagName (line 35) | formatFlagName  = "format"
  constant tokenIDFlagName (line 36) | tokenIDFlagName = "token-id"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 58) | type flags struct
    method Bind (line 67) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 63) | func newFlags() *flags {
  function run (line 83) | func run(

FILE: cmd/buf/internal/command/alpha/registry/token/tokenlist/tokenlist.go
  constant pageSizeFlagName (line 35) | pageSizeFlagName  = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName   = "reverse"
  constant formatFlagName (line 38) | formatFlagName    = "format"
  function NewCommand (line 42) | func NewCommand(
  type flags (line 60) | type flags struct
    method Bind (line 71) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 67) | func newFlags() *flags {
  function run (line 95) | func run(

FILE: cmd/buf/internal/command/beta/bufpluginv1/bufpluginv1.go
  function NewCommand (line 25) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...

FILE: cmd/buf/internal/command/beta/bufpluginv1beta1/bufpluginv1beta1.go
  function NewCommand (line 25) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...

FILE: cmd/buf/internal/command/beta/bufpluginv2/bufpluginv2.go
  function NewCommand (line 25) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...

FILE: cmd/buf/internal/command/beta/internal/internal.go
  function NewCommand (line 29) | func NewCommand(
  type flags (line 47) | type flags struct
    method Bind (line 57) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 53) | func newFlags() *flags {
  function run (line 63) | func run(

FILE: cmd/buf/internal/command/beta/price/price.go
  constant disableSymlinksFlagName (line 34) | disableSymlinksFlagName = "disable-symlinks"
  constant teamsDollarsPerType (line 35) | teamsDollarsPerType     = float64(0.50)
  constant proDollarsPerType (line 36) | proDollarsPerType       = float64(5)
  constant proDollarsMinimumSpend (line 37) | proDollarsMinimumSpend  = float64(3000)
  constant tmplCopy (line 38) | tmplCopy                = `Current BSR pricing:
  function NewCommand (line 68) | func NewCommand(
  type flags (line 87) | type flags struct
    method Bind (line 98) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 94) | func newFlags() *flags {
  function run (line 103) | func run(
  type tmplData (line 149) | type tmplData struct
  function newTmplData (line 156) | func newTmplData(stats *protostat.Stats) *tmplData {

FILE: cmd/buf/internal/command/beta/registry/plugin/plugindelete/plugindelete.go
  function NewCommand (line 34) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 58) | func (f *flags) Bind(flagSet *pflag.FlagSet) {}
  function newFlags (line 54) | func newFlags() *flags {
  function run (line 60) | func run(

FILE: cmd/buf/internal/command/beta/registry/plugin/pluginpush/pluginpush.go
  constant formatFlagName (line 54) | formatFlagName          = "format"
  constant disableSymlinksFlagName (line 55) | disableSymlinksFlagName = "disable-symlinks"
  constant overrideRemoteFlagName (line 56) | overrideRemoteFlagName  = "override-remote"
  constant imageFlagName (line 57) | imageFlagName           = "image"
  constant visibilityFlagName (line 58) | visibilityFlagName      = "visibility"
  constant publicVisibility (line 60) | publicVisibility  = "public"
  constant privateVisibility (line 61) | privateVisibility = "private"
  function NewCommand (line 70) | func NewCommand(
  type flags (line 89) | type flags struct
    method Bind (line 101) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 97) | func newFlags() *flags {
  function run (line 130) | func run(
  function createCuratedPluginRequest (line 337) | func createCuratedPluginRequest(
  function pushImage (line 371) | func pushImage(
  function findExistingDigestForImageID (line 406) | func findExistingDigestForImageID(
  function getImageIDAndDigestFromReference (line 463) | func getImageIDAndDigestFromReference(
  function unzipPluginToSourceBucket (line 526) | func unzipPluginToSourceBucket(ctx context.Context, pluginZip string, si...
  function loadDockerImage (line 539) | func loadDockerImage(ctx context.Context, bucket storage.ReadBucket) (st...
  function visibilityFlagToVisibility (line 547) | func visibilityFlagToVisibility(visibility string) (registryv1alpha1.Cur...
  function newStorageosProvider (line 558) | func newStorageosProvider(disableSymlinks bool) storageos.Provider {

FILE: cmd/buf/internal/command/beta/registry/webhook/webhookcreate/webhookcreate.go
  constant ownerFlagName (line 33) | ownerFlagName        = "owner"
  constant repositoryFlagName (line 34) | repositoryFlagName   = "repository"
  constant callbackURLFlagName (line 35) | callbackURLFlagName  = "callback-url"
  constant webhookEventFlagName (line 36) | webhookEventFlagName = "event"
  constant remoteFlagName (line 37) | remoteFlagName       = "remote"
  function NewCommand (line 41) | func NewCommand(
  type flags (line 59) | type flags struct
    method Bind (line 71) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 67) | func newFlags() *flags {
  function run (line 109) | func run(

FILE: cmd/buf/internal/command/beta/registry/webhook/webhookdelete/webhookdelete.go
  constant webhookIDFlagName (line 31) | webhookIDFlagName = "id"
  constant remoteFlagName (line 32) | remoteFlagName    = "remote"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 54) | type flags struct
    method Bind (line 63) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 59) | func newFlags() *flags {
  function run (line 80) | func run(

FILE: cmd/buf/internal/command/beta/registry/webhook/webhooklist/webhooklist.go
  constant ownerFlagName (line 32) | ownerFlagName      = "owner"
  constant repositoryFlagName (line 33) | repositoryFlagName = "repository"
  constant remoteFlagName (line 34) | remoteFlagName     = "remote"
  function NewCommand (line 38) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 66) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 62) | func newFlags() *flags {
  function run (line 90) | func run(

FILE: cmd/buf/internal/command/beta/studioagent/studioagent.go
  constant bindFlagName (line 33) | bindFlagName              = "bind"
  constant portFlagName (line 34) | portFlagName              = "port"
  constant originFlagName (line 35) | originFlagName            = "origin"
  constant disallowedHeadersFlagName (line 36) | disallowedHeadersFlagName = "disallowed-header"
  constant forwardHeadersFlagName (line 37) | forwardHeadersFlagName    = "forward-header"
  constant caCertFlagName (line 38) | caCertFlagName            = "ca-cert"
  constant clientCertFlagName (line 39) | clientCertFlagName        = "client-cert"
  constant clientKeyFlagName (line 40) | clientKeyFlagName         = "client-key"
  constant serverCertFlagName (line 41) | serverCertFlagName        = "server-cert"
  constant serverKeyFlagName (line 42) | serverKeyFlagName         = "server-key"
  constant privateNetworkFlagName (line 43) | privateNetworkFlagName    = "private-network"
  function NewCommand (line 47) | func NewCommand(
  type flags (line 65) | type flags struct
    method Bind (line 83) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 79) | func newFlags() *flags {
  function run (line 152) | func run(
  function newTLSConfig (line 207) | func newTLSConfig(baseConfig *tls.Config, certFile, keyFile string) (*tl...

FILE: cmd/buf/internal/command/breaking/breaking.go
  constant errorFormatFlagName (line 45) | errorFormatFlagName       = "error-format"
  constant excludeImportsFlagName (line 46) | excludeImportsFlagName    = "exclude-imports"
  constant pathsFlagName (line 47) | pathsFlagName             = "path"
  constant limitToInputFilesFlagName (line 48) | limitToInputFilesFlagName = "limit-to-input-files"
  constant configFlagName (line 49) | configFlagName            = "config"
  constant againstFlagName (line 50) | againstFlagName           = "against"
  constant againstConfigFlagName (line 51) | againstConfigFlagName     = "against-config"
  constant againstRegistryFlagName (line 52) | againstRegistryFlagName   = "against-registry"
  constant excludePathsFlagName (line 53) | excludePathsFlagName      = "exclude-path"
  constant disableSymlinksFlagName (line 54) | disableSymlinksFlagName   = "disable-symlinks"
  function NewCommand (line 58) | func NewCommand(
  type flags (line 80) | type flags struct
    method Bind (line 99) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 95) | func newFlags() *flags {
  function run (line 164) | func run(
  function getExternalPathsForImages (line 380) | func getExternalPathsForImages[I bufimage.Image, S ~[]I](images S) ([]st...
  function validateFlags (line 390) | func validateFlags(flags *flags) error {
  function hasNoUniqueBreakingConfig (line 403) | func hasNoUniqueBreakingConfig(imageWithConfigs []bufctl.ImageWithConfig...
  function equalBreakingConfig (line 420) | func equalBreakingConfig(breakingConfig1, breakingConfig2 bufconfig.Brea...
  function filterImageWithConfigsNotInAgainstImages (line 447) | func filterImageWithConfigsNotInAgainstImages(
  function newInputAgainstImageCountError (line 483) | func newInputAgainstImageCountError(lenImageWithConfigs, lenAgainstImage...

FILE: cmd/buf/internal/command/breaking/breaking_test.go
  function TestBreakingWorkspaceNewModuleWithImport (line 38) | func TestBreakingWorkspaceNewModuleWithImport(t *testing.T) {
  function testRunStdoutStderr (line 52) | func testRunStdoutStderr(

FILE: cmd/buf/internal/command/build/build.go
  constant asFileDescriptorSetFlagName (line 34) | asFileDescriptorSetFlagName           = "as-file-descriptor-set"
  constant errorFormatFlagName (line 35) | errorFormatFlagName                   = "error-format"
  constant excludeImportsFlagName (line 36) | excludeImportsFlagName                = "exclude-imports"
  constant excludeSourceInfoFlagName (line 37) | excludeSourceInfoFlagName             = "exclude-source-info"
  constant excludeSourceRetentionOptionsFlagName (line 38) | excludeSourceRetentionOptionsFlagName = "exclude-source-retention-options"
  constant pathsFlagName (line 39) | pathsFlagName                         = "path"
  constant outputFlagName (line 40) | outputFlagName                        = "output"
  constant outputFlagShortName (line 41) | outputFlagShortName                   = "o"
  constant configFlagName (line 42) | configFlagName                        = "config"
  constant excludePathsFlagName (line 43) | excludePathsFlagName                  = "exclude-path"
  constant disableSymlinksFlagName (line 44) | disableSymlinksFlagName               = "disable-symlinks"
  constant typeFlagName (line 45) | typeFlagName                          = "type"
  function NewCommand (line 49) | func NewCommand(
  type flags (line 68) | type flags struct
    method Bind (line 88) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 84) | func newFlags() *flags {
  function run (line 135) | func run(

FILE: cmd/buf/internal/command/config/configinit/configinit.go
  constant documentationCommentsFlagName (line 30) | documentationCommentsFlagName = "doc"
  constant outDirPathFlagName (line 31) | outDirPathFlagName            = "output"
  constant outDirPathFlagShortName (line 32) | outDirPathFlagShortName       = "o"
  constant uncommentFlagName (line 33) | uncommentFlagName             = "uncomment"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 65) | type flags struct
    method Bind (line 82) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 76) | func newFlags(bindOldFlags bool) *flags {
  function run (line 110) | func run(

FILE: cmd/buf/internal/command/config/configlsbreakingrules/configlsbreakingrules.go
  function NewCommand (line 25) | func NewCommand(

FILE: cmd/buf/internal/command/config/configlslintrules/configlslintrules.go
  function NewCommand (line 25) | func NewCommand(

FILE: cmd/buf/internal/command/config/configlsmodules/configlsmodules.go
  constant configFlagName (line 38) | configFlagName = "config"
  constant formatFlagName (line 39) | formatFlagName = "format"
  constant formatPath (line 41) | formatPath = "path"
  constant formatName (line 42) | formatName = "name"
  constant formatJSON (line 43) | formatJSON = "json"
  constant defaultFormat (line 45) | defaultFormat = formatPath
  function NewCommand (line 57) | func NewCommand(
  type flags (line 75) | type flags struct
    method Bind (line 84) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 80) | func newFlags() *flags {
  function run (line 102) | func run(
  function getExternalModules (line 114) | func getExternalModules(
  function getExternalModulesForBufWorkYAMLFile (line 168) | func getExternalModulesForBufWorkYAMLFile(
  function getExternalModulesForBufYAMLFile (line 218) | func getExternalModulesForBufYAMLFile(
  function printExternalModules (line 237) | func printExternalModules(
  type externalModule (line 297) | type externalModule struct
  function newExternalModule (line 304) | func newExternalModule(path string, includes []string, excludes []string...

FILE: cmd/buf/internal/command/config/configmigrate/configmigrate.go
  constant workspaceDirectoriesFlagName (line 29) | workspaceDirectoriesFlagName = "workspace"
  constant moduleDirectoriesFlagName (line 30) | moduleDirectoriesFlagName    = "module"
  constant bufGenYAMLFilePathFlagName (line 31) | bufGenYAMLFilePathFlagName   = "buf-gen-yaml"
  constant diffFlagName (line 32) | diffFlagName                 = "diff"
  constant diffFlagShortName (line 33) | diffFlagShortName            = "d"
  function NewCommand (line 46) | func NewCommand(
  type flags (line 67) | type flags struct
    method Bind (line 78) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 74) | func newFlags() *flags {
  function run (line 106) | func run(

FILE: cmd/buf/internal/command/config/configmigrate/configmigrate_test.go
  function TestConfigMigrateV1DefaultConfig (line 33) | func TestConfigMigrateV1DefaultConfig(t *testing.T) {
  function TestConfigMigrateV1BetaV1DefaultConfig (line 38) | func TestConfigMigrateV1BetaV1DefaultConfig(t *testing.T) {
  function TestConfigMigrateUnknownVersion (line 43) | func TestConfigMigrateUnknownVersion(t *testing.T) {
  function testCompareConfigMigrate (line 48) | func testCompareConfigMigrate(t *testing.T, dir string, expectCode int, ...

FILE: cmd/buf/internal/command/config/internal/internal.go
  constant configuredOnlyFlagName (line 38) | configuredOnlyFlagName    = "configured-only"
  constant configFlagName (line 39) | configFlagName            = "config"
  constant includeDeprecatedFlagName (line 40) | includeDeprecatedFlagName = "include-deprecated"
  constant formatFlagName (line 41) | formatFlagName            = "format"
  constant versionFlagName (line 42) | versionFlagName           = "version"
  constant modulePathFlagName (line 43) | modulePathFlagName        = "module-path"
  function NewLSCommand (line 47) | func NewLSCommand(
  type flags (line 72) | type flags struct
    method Bind (line 85) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 81) | func newFlags() *flags {
  function lsRun (line 145) | func lsRun(
  function getModuleConfigForModulePath (line 295) | func getModuleConfigForModulePath(moduleConfigs []bufconfig.ModuleConfig...

FILE: cmd/buf/internal/command/convert/convert.go
  constant errorFormatFlagName (line 39) | errorFormatFlagName     = "error-format"
  constant typeFlagName (line 40) | typeFlagName            = "type"
  constant fromFlagName (line 41) | fromFlagName            = "from"
  constant toFlagName (line 42) | toFlagName              = "to"
  constant validateFlagName (line 43) | validateFlagName        = "validate"
  constant disableSymlinksFlagName (line 44) | disableSymlinksFlagName = "disable-symlinks"
  function NewCommand (line 48) | func NewCommand(
  type flags (line 97) | type flags struct
    method Bind (line 113) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 109) | func newFlags() *flags {
  function run (line 160) | func run(
  function inverseEncoding (line 251) | func inverseEncoding(encoding buffetch.MessageEncoding) (buffetch.Messag...
  function wellKnownTypeImage (line 267) | func wellKnownTypeImage(

FILE: cmd/buf/internal/command/convert/convert_test.go
  function TestConvertDefaultInputBin (line 28) | func TestConvertDefaultInputBin(t *testing.T) {
  function TestConvertDefaultInputBinpb (line 44) | func TestConvertDefaultInputBinpb(t *testing.T) {
  function TestConvertDefaultInputTxtpb (line 60) | func TestConvertDefaultInputTxtpb(t *testing.T) {
  function TestConvertDefaultInputYAML (line 78) | func TestConvertDefaultInputYAML(t *testing.T) {
  function TestConvertFromStdinBin (line 95) | func TestConvertFromStdinBin(t *testing.T) {
  function TestConvertFromStdinBinpb (line 113) | func TestConvertFromStdinBinpb(t *testing.T) {
  function TestConvertFromStdinTxtpbJSON (line 131) | func TestConvertFromStdinTxtpbJSON(t *testing.T) {
  function TestConvertFromStdinTxtpbYAML (line 151) | func TestConvertFromStdinTxtpbYAML(t *testing.T) {
  function TestConvertDiscardedStdin (line 171) | func TestConvertDiscardedStdin(t *testing.T) {
  function TestConvertWKTBin (line 187) | func TestConvertWKTBin(t *testing.T) {
  function TestConvertWKTBinpb (line 202) | func TestConvertWKTBinpb(t *testing.T) {
  function TestConvertWKTTxtpb (line 217) | func TestConvertWKTTxtpb(t *testing.T) {
  function TestConvertWKTYAML (line 234) | func TestConvertWKTYAML(t *testing.T) {
  function TestConvertWKTFormatBin (line 251) | func TestConvertWKTFormatBin(t *testing.T) {
  function TestConvertWKTFormatBinYAML (line 268) | func TestConvertWKTFormatBinYAML(t *testing.T) {
  function TestConvertWKTFormatBinpb (line 285) | func TestConvertWKTFormatBinpb(t *testing.T) {
  function TestConvertWKTFormatBinpbYAML (line 302) | func TestConvertWKTFormatBinpbYAML(t *testing.T) {
  function TestConvertWKTIncorrectInput (line 319) | func TestConvertWKTIncorrectInput(t *testing.T) {
  function TestConvertWKTGoogleFileLocal (line 335) | func TestConvertWKTGoogleFileLocal(t *testing.T) {
  function TestConvertWKTLocalWKTExists (line 351) | func TestConvertWKTLocalWKTExists(t *testing.T) {
  function TestConvertWKTLocalChanged (line 369) | func TestConvertWKTLocalChanged(t *testing.T) {
  function TestConvertWKTLocalChanged2 (line 390) | func TestConvertWKTLocalChanged2(t *testing.T) {
  function TestConvertWKTImport (line 407) | func TestConvertWKTImport(t *testing.T) {
  function testNewCommand (line 426) | func testNewCommand(use string) *appcmd.Command {

FILE: cmd/buf/internal/command/curl/curl.go
  constant schemaFlagName (line 52) | schemaFlagName = "schema"
  constant reflectFlagName (line 55) | reflectFlagName         = "reflect"
  constant reflectHeaderFlagName (line 56) | reflectHeaderFlagName   = "reflect-header"
  constant reflectProtocolFlagName (line 57) | reflectProtocolFlagName = "reflect-protocol"
  constant protocolFlagName (line 60) | protocolFlagName            = "protocol"
  constant unixSocketFlagName (line 61) | unixSocketFlagName          = "unix-socket"
  constant http2PriorKnowledgeFlagName (line 62) | http2PriorKnowledgeFlagName = "http2-prior-knowledge"
  constant http3FlagName (line 63) | http3FlagName               = "http3"
  constant keyFlagName (line 66) | keyFlagName           = "key"
  constant certFlagName (line 67) | certFlagName          = "cert"
  constant certFlagShortName (line 68) | certFlagShortName     = "E"
  constant caCertFlagName (line 69) | caCertFlagName        = "cacert"
  constant serverNameFlagName (line 70) | serverNameFlagName    = "servername"
  constant insecureFlagName (line 71) | insecureFlagName      = "insecure"
  constant insecureFlagShortName (line 72) | insecureFlagShortName = "k"
  constant listServicesFlagName (line 75) | listServicesFlagName = "list-services"
  constant listMethodsFlagName (line 76) | listMethodsFlagName  = "list-methods"
  constant noKeepAliveFlagName (line 79) | noKeepAliveFlagName    = "no-keepalive"
  constant keepAliveFlagName (line 80) | keepAliveFlagName      = "keepalive-time"
  constant connectTimeoutFlagName (line 81) | connectTimeoutFlagName = "connect-timeout"
  constant userAgentFlagName (line 84) | userAgentFlagName      = "user-agent"
  constant userAgentFlagShortName (line 85) | userAgentFlagShortName = "A"
  constant userFlagName (line 86) | userFlagName           = "user"
  constant userFlagShortName (line 87) | userFlagShortName      = "u"
  constant netrcFlagName (line 88) | netrcFlagName          = "netrc"
  constant netrcFlagShortName (line 89) | netrcFlagShortName     = "n"
  constant netrcFileFlagName (line 90) | netrcFileFlagName      = "netrc-file"
  constant headerFlagName (line 91) | headerFlagName         = "header"
  constant headerFlagShortName (line 92) | headerFlagShortName    = "H"
  constant dataFlagName (line 93) | dataFlagName           = "data"
  constant dataFlagShortName (line 94) | dataFlagShortName      = "d"
  constant outputFlagName (line 97) | outputFlagName       = "output"
  constant outputFlagShortName (line 98) | outputFlagShortName  = "o"
  constant emitDefaultsFlagName (line 99) | emitDefaultsFlagName = "emit-defaults"
  constant verboseFlagName (line 101) | verboseFlagName      = "verbose"
  constant verboseFlagShortName (line 102) | verboseFlagShortName = "v"
  function NewCommand (line 106) | func NewCommand(
  type flags (line 201) | type flags struct
    method Bind (line 253) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
    method validate (line 535) | func (f *flags) validate(hasURL, isSecure bool) error {
    method determineCredentials (line 660) | func (f *flags) determineCredentials(
    method getTLSConfig (line 725) | func (f *flags) getTLSConfig(authority string, printer verbose.Printer...
  function newFlags (line 249) | func newFlags() *flags {
  function promptForPassword (line 737) | func promptForPassword(ctx context.Context, container app.Container, pro...
  function basicAuth (line 780) | func basicAuth(username, password string) string {
  function validateHeaders (line 788) | func validateHeaders(flags []string, flagName string, schemaIsStdin bool...
  function verifyEndpointURL (line 827) | func verifyEndpointURL(urlArg string) (host string, isSecure bool, err e...
  function parseEndpointURL (line 838) | func parseEndpointURL(urlArg string) (service, method, baseURL string, e...
  function run (line 855) | func run(ctx context.Context, container appext.Container, f *flags) (err...
  function makeHTTPRoundTripper (line 1082) | func makeHTTPRoundTripper(f *flags, isSecure bool, authority string, pri...
  function makeHTTP3RoundTripper (line 1147) | func makeHTTP3RoundTripper(f *flags, authority string, printer verbose.P...
  function secondsToDuration (line 1193) | func secondsToDuration(secs float64) time.Duration {

FILE: cmd/buf/internal/command/dep/depgraph/depgraph.go
  constant errorFormatFlagName (line 38) | errorFormatFlagName     = "error-format"
  constant disableSymlinksFlagName (line 39) | disableSymlinksFlagName = "disable-symlinks"
  constant formatFlagName (line 40) | formatFlagName          = "format"
  constant dotFormatString (line 42) | dotFormatString  = "dot"
  constant jsonFormatString (line 43) | jsonFormatString = "json"
  function NewCommand (line 54) | func NewCommand(
  type flags (line 96) | type flags struct
    method Bind (line 108) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 104) | func newFlags() *flags {
  function run (line 131) | func run(
  function moduleToString (line 206) | func moduleToString(module bufmodule.Module) string {
  function moduleFullNameOrOpaqueID (line 219) | func moduleFullNameOrOpaqueID(module bufmodule.Module) string {
  function dashlessCommitIDStringForModule (line 228) | func dashlessCommitIDStringForModule(module bufmodule.Module) string {
  type externalModule (line 235) | type externalModule struct
    method addDeps (line 245) | func (e *externalModule) addDeps(
  function externalModuleNoDepsForModule (line 283) | func externalModuleNoDepsForModule(module bufmodule.Module) (externalMod...
  function sortExternalModules (line 298) | func sortExternalModules(externalModules []externalModule) {

FILE: cmd/buf/internal/command/dep/depprune/depprune.go
  function NewCommand (line 27) | func NewCommand(
  function run (line 49) | func run(

FILE: cmd/buf/internal/command/dep/depupdate/depupdate.go
  constant onlyFlagName (line 35) | onlyFlagName = "only"
  function NewCommand (line 39) | func NewCommand(
  type flags (line 66) | type flags struct
    method Bind (line 74) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 70) | func newFlags() *flags {
  function run (line 86) | func run(

FILE: cmd/buf/internal/command/dep/internal/internal.go
  function ModuleKeysAndTransitiveDepModuleKeysForModuleRefs (line 34) | func ModuleKeysAndTransitiveDepModuleKeysForModuleRefs(
  function Prune (line 58) | func Prune(
  function LogUnusedConfiguredDepsForWorkspace (line 126) | func LogUnusedConfiguredDepsForWorkspace(
  function moduleKeysAndTransitiveDepModuleKeysForModuleKeys (line 150) | func moduleKeysAndTransitiveDepModuleKeysForModuleKeys(
  function validateModuleKeysContains (line 181) | func validateModuleKeysContains(containingModuleKeys []bufmodule.ModuleK...
  function getFullNameStringToModuleKey (line 203) | func getFullNameStringToModuleKey(moduleKeys []bufmodule.ModuleKey) (map...

FILE: cmd/buf/internal/command/export/export.go
  constant excludeImportsFlagName (line 39) | excludeImportsFlagName  = "exclude-imports"
  constant pathsFlagName (line 40) | pathsFlagName           = "path"
  constant outputFlagName (line 41) | outputFlagName          = "output"
  constant outputFlagShortName (line 42) | outputFlagShortName     = "o"
  constant configFlagName (line 43) | configFlagName          = "config"
  constant excludePathsFlagName (line 44) | excludePathsFlagName    = "exclude-path"
  constant disableSymlinksFlagName (line 45) | disableSymlinksFlagName = "disable-symlinks"
  constant allFlagName (line 46) | allFlagName             = "all"
  function NewCommand (line 50) | func NewCommand(
  type flags (line 92) | type flags struct
    method Bind (line 109) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 105) | func newFlags() *flags {
  function run (line 137) | func run(
  function getNonProtoFilePath (line 302) | func getNonProtoFilePath(

FILE: cmd/buf/internal/command/format/format.go
  constant configFlagName (line 42) | configFlagName          = "config"
  constant diffFlagName (line 43) | diffFlagName            = "diff"
  constant diffFlagShortName (line 44) | diffFlagShortName       = "d"
  constant disableSymlinksFlagName (line 45) | disableSymlinksFlagName = "disable-symlinks"
  constant errorFormatFlagName (line 46) | errorFormatFlagName     = "error-format"
  constant excludePathsFlagName (line 47) | excludePathsFlagName    = "exclude-path"
  constant exitCodeFlagName (line 48) | exitCodeFlagName        = "exit-code"
  constant outputFlagName (line 49) | outputFlagName          = "output"
  constant outputFlagShortName (line 50) | outputFlagShortName     = "o"
  constant pathsFlagName (line 51) | pathsFlagName           = "path"
  constant writeFlagName (line 52) | writeFlagName           = "write"
  constant writeFlagShortName (line 53) | writeFlagShortName      = "w"
  function NewCommand (line 57) | func NewCommand(
  type flags (line 171) | type flags struct
    method Bind (line 189) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 185) | func newFlags() *flags {
  function run (line 241) | func run(
  function writeToDir (line 398) | func writeToDir(
  function writeToProtoFile (line 424) | func writeToProtoFile(
  function createDirIfNotExists (line 458) | func createDirIfNotExists(dirPath string) error {
  function getDirOrProtoFileRef (line 474) | func getDirOrProtoFileRef(
  function validateNoIncludePackageFiles (line 484) | func validateNoIncludePackageFiles(dirOrProtoFileRef buffetch.DirOrProto...
  function newStorageosProvider (line 499) | func newStorageosProvider(disableSymlinks bool) storageos.Provider {

FILE: cmd/buf/internal/command/generate/generate.go
  constant templateFlagName (line 40) | templateFlagName            = "template"
  constant baseOutDirPathFlagName (line 41) | baseOutDirPathFlagName      = "output"
  constant baseOutDirPathFlagShortName (line 42) | baseOutDirPathFlagShortName = "o"
  constant deleteOutsFlagName (line 43) | deleteOutsFlagName          = "clean"
  constant errorFormatFlagName (line 44) | errorFormatFlagName         = "error-format"
  constant configFlagName (line 45) | configFlagName              = "config"
  constant pathsFlagName (line 46) | pathsFlagName               = "path"
  constant includeImportsFlagName (line 47) | includeImportsFlagName      = "include-imports"
  constant includeWKTFlagName (line 48) | includeWKTFlagName          = "include-wkt"
  constant excludePathsFlagName (line 49) | excludePathsFlagName        = "exclude-path"
  constant disableSymlinksFlagName (line 50) | disableSymlinksFlagName     = "disable-symlinks"
  constant typeFlagName (line 51) | typeFlagName                = "type"
  constant typeDeprecatedFlagName (line 52) | typeDeprecatedFlagName      = "include-types"
  constant excludeTypeFlagName (line 53) | excludeTypeFlagName         = "exclude-type"
  function NewCommand (line 57) | func NewCommand(
  type flags (line 390) | type flags struct
    method Bind (line 415) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 411) | func newFlags() *flags {
  function run (line 491) | func run(
  function readBufGenYAMLFile (line 581) | func readBufGenYAMLFile(
  function getInputImages (line 607) | func getInputImages(
  function bindBoolPointer (line 686) | func bindBoolPointer(flagSet *pflag.FlagSet, name string, value **bool, ...
  type boolPointerValue (line 699) | type boolPointerValue struct
    method Type (line 704) | func (b *boolPointerValue) Type() string {
    method String (line 709) | func (b *boolPointerValue) String() string {
    method Set (line 717) | func (b *boolPointerValue) Set(value string) error {

FILE: cmd/buf/internal/command/generate/generate_test.go
  function TestCompareGeneratedStubsGoogleapisGo (line 59) | func TestCompareGeneratedStubsGoogleapisGo(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisGoZip (line 72) | func TestCompareGeneratedStubsGoogleapisGoZip(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisGoJar (line 86) | func TestCompareGeneratedStubsGoogleapisGoJar(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisObjc (line 100) | func TestCompareGeneratedStubsGoogleapisObjc(t *testing.T) {
  function TestCompareGeneratedStubsGoogleapisPyi (line 111) | func TestCompareGeneratedStubsGoogleapisPyi(t *testing.T) {
  function TestCompareInsertionPointOutput (line 122) | func TestCompareInsertionPointOutput(t *testing.T) {
  function TestGenerateV2LocalPluginBasic (line 136) | func TestGenerateV2LocalPluginBasic(t *testing.T) {
  function TestGenerateV2LocalPluginTypes (line 173) | func TestGenerateV2LocalPluginTypes(t *testing.T) {
  function TestOutputFlag (line 345) | func TestOutputFlag(t *testing.T) {
  function TestProtoFileRefIncludePackageFiles (line 374) | func TestProtoFileRefIncludePackageFiles(t *testing.T) {
  function TestGenerateDuplicatePlugins (line 391) | func TestGenerateDuplicatePlugins(t *testing.T) {
  function TestGenerateDuplicatePluginsV2 (line 408) | func TestGenerateDuplicatePluginsV2(t *testing.T) {
  function TestOutputWithPathEqualToExclude (line 425) | func TestOutputWithPathEqualToExclude(t *testing.T) {
  function TestGenerateInsertionPoint (line 446) | func TestGenerateInsertionPoint(t *testing.T) {
  function TestGenerateInsertionPointFail (line 456) | func TestGenerateInsertionPointFail(t *testing.T) {
  function TestGenerateInsertionPointFailV2 (line 480) | func TestGenerateInsertionPointFailV2(t *testing.T) {
  function TestGenerateDuplicateFileFail (line 506) | func TestGenerateDuplicateFileFail(t *testing.T) {
  function TestGenerateDuplicateFileFailV2 (line 530) | func TestGenerateDuplicateFileFailV2(t *testing.T) {
  function TestGenerateInsertionPointMixedPathsFail (line 556) | func TestGenerateInsertionPointMixedPathsFail(t *testing.T) {
  function TestGenerateDeleteOutDir (line 566) | func TestGenerateDeleteOutDir(t *testing.T) {
  function TestBoolPointerFlagTrue (line 584) | func TestBoolPointerFlagTrue(t *testing.T) {
  function TestBoolPointerFlagTrueSpecified (line 590) | func TestBoolPointerFlagTrueSpecified(t *testing.T) {
  function TestBoolPointerFlagFalseSpecified (line 596) | func TestBoolPointerFlagFalseSpecified(t *testing.T) {
  function TestBoolPointerFlagUnspecified (line 602) | func TestBoolPointerFlagUnspecified(t *testing.T) {
  function testGenerateInsertionPointV1 (line 607) | func testGenerateInsertionPointV1(
  function testGenerateInsertionPointV2 (line 629) | func testGenerateInsertionPointV2(
  function testGenerateInsertionPoint (line 651) | func testGenerateInsertionPoint(
  function testGenerateInsertionPointMixedPathsFailV1 (line 680) | func testGenerateInsertionPointMixedPathsFailV1(
  function testGenerateInsertionPointMixedPathsFailV2 (line 700) | func testGenerateInsertionPointMixedPathsFailV2(
  function testGenerateInsertionPointMixedPathsFail (line 723) | func testGenerateInsertionPointMixedPathsFail(
  function testCompareGeneratedStubs (line 743) | func testCompareGeneratedStubs(
  function testCompareGeneratedStubsArchive (line 814) | func testCompareGeneratedStubsArchive(
  function testRunSuccess (line 893) | func testRunSuccess(t *testing.T, args ...string) {
  function testGenerateDeleteOuts (line 907) | func testGenerateDeleteOuts(
  function testGenerateDeleteOutsWithArgAndConfig (line 922) | func testGenerateDeleteOutsWithArgAndConfig(
  function testRunStdoutStderr (line 1034) | func testRunStdoutStderr(t *testing.T, stdin io.Reader, expectedExitCode...
  function testParseBoolPointer (line 1068) | func testParseBoolPointer(t *testing.T, flagName string, expectedResult ...
  function newExternalConfigV1String (line 1077) | func newExternalConfigV1String(t *testing.T, plugins []*testPluginInfo, ...
  type testPluginInfo (line 1097) | type testPluginInfo struct
  function transformGolangProtocVersionToUnknown (line 1102) | func transformGolangProtocVersionToUnknown(t *testing.T) storage.DiffOpt...

FILE: cmd/buf/internal/command/generate/generate_unix_test.go
  function TestProtoFileRef (line 27) | func TestProtoFileRef(t *testing.T) {
  function TestOutputWithExclude (line 44) | func TestOutputWithExclude(t *testing.T) {
  function TestOutputWithPathWithinExclude (line 78) | func TestOutputWithPathWithinExclude(t *testing.T) {
  function TestOutputWithExcludeWithinPath (line 100) | func TestOutputWithExcludeWithinPath(t *testing.T) {
  function TestOutputWithNestedExcludeAndTargetPaths (line 126) | func TestOutputWithNestedExcludeAndTargetPaths(t *testing.T) {
  function TestWorkspaceGenerateWithExcludeAndTargetPaths (line 151) | func TestWorkspaceGenerateWithExcludeAndTargetPaths(t *testing.T) {

FILE: cmd/buf/internal/command/generate/generate_windows_test.go
  function TestProtoFileRef (line 27) | func TestProtoFileRef(t *testing.T) {
  function TestOutputWithExclude (line 43) | func TestOutputWithExclude(t *testing.T) {
  function TestOutputWithPathWithinExclude (line 76) | func TestOutputWithPathWithinExclude(t *testing.T) {
  function TestOutputWithExcludeWithinPath (line 97) | func TestOutputWithExcludeWithinPath(t *testing.T) {
  function TestOutputWithNestedExcludeAndTargetPaths (line 120) | func TestOutputWithNestedExcludeAndTargetPaths(t *testing.T) {
  function TestWorkspaceGenerateWithExcludeAndTargetPaths (line 144) | func TestWorkspaceGenerateWithExcludeAndTargetPaths(t *testing.T) {

FILE: cmd/buf/internal/command/generate/internal/protoc-gen-top-level-type-names-yaml/main.go
  constant fileExt (line 27) | fileExt = ".top-level-type-names.yaml"
  function main (line 29) | func main() {
  function handle (line 33) | func handle(
  type externalFile (line 72) | type externalFile struct

FILE: cmd/buf/internal/command/lint/lint.go
  constant errorFormatFlagName (line 34) | errorFormatFlagName     = "error-format"
  constant configFlagName (line 35) | configFlagName          = "config"
  constant pathsFlagName (line 36) | pathsFlagName           = "path"
  constant excludePathsFlagName (line 37) | excludePathsFlagName    = "exclude-path"
  constant disableSymlinksFlagName (line 38) | disableSymlinksFlagName = "disable-symlinks"
  function NewCommand (line 42) | func NewCommand(
  type flags (line 61) | type flags struct
    method Bind (line 75) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 71) | func newFlags() *flags {
  function run (line 97) | func run(

FILE: cmd/buf/internal/command/lsfiles/lsfiles.go
  constant formatFlagName (line 39) | formatFlagName            = "format"
  constant configFlagName (line 40) | configFlagName            = "config"
  constant errorFormatFlagName (line 41) | errorFormatFlagName       = "error-format"
  constant includeImportsFlagName (line 42) | includeImportsFlagName    = "include-imports"
  constant includeImportableFlagName (line 43) | includeImportableFlagName = "include-importable"
  constant pathsFlagName (line 44) | pathsFlagName             = "path"
  constant excludePathsFlagName (line 45) | excludePathsFlagName      = "exclude-path"
  constant disableSymlinksFlagName (line 46) | disableSymlinksFlagName   = "disable-symlinks"
  constant asImportPathsFlagName (line 47) | asImportPathsFlagName     = "as-import-paths"
  constant formatText (line 49) | formatText   = "text"
  constant formatJSON (line 50) | formatJSON   = "json"
  constant formatImport (line 51) | formatImport = "import"
  function NewCommand (line 59) | func NewCommand(
  type flags (line 78) | type flags struct
    method Bind (line 98) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 94) | func newFlags() *flags {
  function run (line 154) | func run(
  type externalImageFileInfo (line 254) | type externalImageFileInfo struct
  function newExternalImageFileInfo (line 263) | func newExternalImageFileInfo(imageFileInfo bufimage.ImageFileInfo) *ext...

FILE: cmd/buf/internal/command/lsp/lspserve/lspserve.go
  constant pipeFlagName (line 39) | pipeFlagName = "pipe"
  function NewCommand (line 43) | func NewCommand(
  type flags (line 69) | type flags struct
    method Bind (line 75) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 84) | func newFlags() *flags {
  function run (line 89) | func run(
  function dial (line 139) | func dial(container appext.Container, flags *flags) (io.ReadWriteCloser,...

FILE: cmd/buf/internal/command/mod/internal/internal.go
  constant allFlagName (line 36) | allFlagName               = "all"
  constant configFlagName (line 37) | configFlagName            = "config"
  constant includeDeprecatedFlagName (line 38) | includeDeprecatedFlagName = "include-deprecated"
  constant formatFlagName (line 39) | formatFlagName            = "format"
  constant versionFlagName (line 40) | versionFlagName           = "version"
  function NewLSCommand (line 44) | func NewLSCommand(
  type flags (line 71) | type flags struct
    method Bind (line 83) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 79) | func newFlags() *flags {
  function lsRun (line 135) | func lsRun(

FILE: cmd/buf/internal/command/mod/modlsbreakingrules/modlsbreakingrules.go
  function NewCommand (line 25) | func NewCommand(

FILE: cmd/buf/internal/command/mod/modlslintrules/modlslintrules.go
  function NewCommand (line 25) | func NewCommand(

FILE: cmd/buf/internal/command/mod/modopen/modopen.go
  constant deprecationMessage (line 31) | deprecationMessage = "this command is not supported for v2 buf.yaml file...
  function NewCommand (line 34) | func NewCommand(
  function run (line 57) | func run(

FILE: cmd/buf/internal/command/plugin/pluginprune/pluginprune.go
  function NewCommand (line 30) | func NewCommand(
  function run (line 50) | func run(
  function prune (line 82) | func prune(

FILE: cmd/buf/internal/command/plugin/pluginpush/pluginpush.go
  constant labelFlagName (line 36) | labelFlagName            = "label"
  constant binaryFlagName (line 37) | binaryFlagName           = "binary"
  constant createFlagName (line 38) | createFlagName           = "create"
  constant createVisibilityFlagName (line 39) | createVisibilityFlagName = "create-visibility"
  constant createTypeFlagName (line 40) | createTypeFlagName       = "create-type"
  constant sourceControlURLFlagName (line 41) | sourceControlURLFlagName = "source-control-url"
  function NewCommand (line 45) | func NewCommand(
  type flags (line 64) | type flags struct
    method Bind (line 77) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 73) | func newFlags() *flags {
  function run (line 119) | func run(
  function upload (line 143) | func upload(
  function validateFlags (line 208) | func validateFlags(flags *flags) error {
  function validateLabelFlags (line 221) | func validateLabelFlags(flags *flags) error {
  function validateTypeFlags (line 225) | func validateTypeFlags(flags *flags) error {
  function validateLabelFlagValues (line 246) | func validateLabelFlagValues(flags *flags) error {
  function validateCreateFlags (line 253) | func validateCreateFlags(flags *flags) error {

FILE: cmd/buf/internal/command/plugin/pluginupdate/pluginupdate.go
  constant onlyFlagName (line 31) | onlyFlagName = "only"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 57) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 76) | func run(

FILE: cmd/buf/internal/command/policy/policyprune/policyprune.go
  function NewCommand (line 31) | func NewCommand(
  function run (line 51) | func run(
  function prune (line 83) | func prune(

FILE: cmd/buf/internal/command/policy/policypush/policypush.go
  constant labelFlagName (line 36) | labelFlagName            = "label"
  constant createFlagName (line 37) | createFlagName           = "create"
  constant createVisibilityFlagName (line 38) | createVisibilityFlagName = "create-visibility"
  function NewCommand (line 42) | func NewCommand(
  type flags (line 61) | type flags struct
    method Bind (line 72) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 68) | func newFlags() *flags {
  function run (line 91) | func run(
  function upload (line 110) | func upload(
  function validateFlags (line 173) | func validateFlags(flags *flags) error {
  function validateLabelFlags (line 183) | func validateLabelFlags(flags *flags) error {
  function validateLabelFlagValues (line 187) | func validateLabelFlagValues(flags *flags) error {
  function validateCreateFlags (line 194) | func validateCreateFlags(flags *flags) error {

FILE: cmd/buf/internal/command/policy/policyupdate/policyupdate.go
  constant onlyFlagName (line 35) | onlyFlagName = "only"
  function NewCommand (line 39) | func NewCommand(
  type flags (line 61) | type flags struct
    method Bind (line 69) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 65) | func newFlags() *flags {
  function run (line 80) | func run(
  function getPolicyKeyPluginKeysForPolicyKeys (line 193) | func getPolicyKeyPluginKeysForPolicyKeys(
  function getPolicyPluginKeysForPolicyNames (line 246) | func getPolicyPluginKeysForPolicyNames(

FILE: cmd/buf/internal/command/push/push.go
  constant labelFlagName (line 42) | labelFlagName              = "label"
  constant errorFormatFlagName (line 43) | errorFormatFlagName        = "error-format"
  constant disableSymlinksFlagName (line 44) | disableSymlinksFlagName    = "disable-symlinks"
  constant createFlagName (line 45) | createFlagName             = "create"
  constant createVisibilityFlagName (line 46) | createVisibilityFlagName   = "create-visibility"
  constant createDefaultLabelFlagName (line 47) | createDefaultLabelFlagName = "create-default-label"
  constant sourceControlURLFlagName (line 48) | sourceControlURLFlagName   = "source-control-url"
  constant gitMetadataFlagName (line 49) | gitMetadataFlagName        = "git-metadata"
  constant excludeUnnamedFlagName (line 50) | excludeUnnamedFlagName     = "exclude-unnamed"
  constant tagFlagName (line 53) | tagFlagName      = "tag"
  constant tagFlagShortName (line 54) | tagFlagShortName = "t"
  constant draftFlagName (line 55) | draftFlagName    = "draft"
  constant branchFlagName (line 56) | branchFlagName   = "branch"
  constant gitOriginRemote (line 58) | gitOriginRemote = "origin"
  function NewCommand (line 66) | func NewCommand(
  type flags (line 85) | type flags struct
    method Bind (line 106) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 102) | func newFlags() *flags {
  function run (line 208) | func run(
  function getBuildableWorkspace (line 294) | func getBuildableWorkspace(
  function validateFlags (line 334) | func validateFlags(flags *flags) error {
  function validateCreateFlags (line 344) | func validateCreateFlags(flags *flags) error {
  function validateLabelFlags (line 368) | func validateLabelFlags(flags *flags) error {
  function validateLabelFlagCombinations (line 377) | func validateLabelFlagCombinations(flags *flags) error {
  function validateLabelFlagValues (line 404) | func validateLabelFlagValues(flags *flags) error {
  function validateGitMetadataFlags (line 416) | func validateGitMetadataFlags(flags *flags) error {
  function getGitMetadataUploadOptions (line 446) | func getGitMetadataUploadOptions(
  function validateInputIsValidDirAndGitCheckout (line 511) | func validateInputIsValidDirAndGitCheckout(
  function getGitMetadataLabelsUploadOptions (line 528) | func getGitMetadataLabelsUploadOptions(
  function getLabelUploadOption (line 544) | func getLabelUploadOption(flags *flags) bufmodule.UploadOption {

FILE: cmd/buf/internal/command/registry/module/modulecommit/modulecommitaddlabel/modulecommitaddlabel.go
  constant formatFlagName (line 35) | formatFlagName = "format"
  constant labelsFlagName (line 36) | labelsFlagName = "label"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 60) | type flags struct
    method Bind (line 69) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 65) | func newFlags() *flags {
  function run (line 84) | func run(

FILE: cmd/buf/internal/command/registry/module/modulecommit/modulecommitinfo/modulecommitinfo.go
  constant formatFlagName (line 34) | formatFlagName = "format"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 57) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 74) | func run(

FILE: cmd/buf/internal/command/registry/module/modulecommit/modulecommitlist/modulecommitlist.go
  constant pageSizeFlagName (line 35) | pageSizeFlagName          = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName         = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName           = "reverse"
  constant formatFlagName (line 38) | formatFlagName            = "format"
  constant digestChangesOnlyFlagName (line 39) | digestChangesOnlyFlagName = "digest-changes-only"
  constant defaultPageSize (line 41) | defaultPageSize = 10
  function NewCommand (line 45) | func NewCommand(
  type flags (line 70) | type flags struct
    method Bind (line 82) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 78) | func newFlags() *flags {
  function run (line 112) | func run(
  function nextPageCommand (line 269) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/module/modulecommit/modulecommitresolve/modulecommitresolve.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/module/modulecreate/modulecreate.go
  constant formatFlagName (line 35) | formatFlagName      = "format"
  constant visibilityFlagName (line 36) | visibilityFlagName  = "visibility"
  constant defaultLabeFlagName (line 37) | defaultLabeFlagName = "default-label-name"
  constant defaultDefaultLabel (line 39) | defaultDefaultLabel = "main"
  function NewCommand (line 43) | func NewCommand(
  type flags (line 61) | type flags struct
    method Bind (line 71) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 67) | func newFlags() *flags {
  function run (line 87) | func run(

FILE: cmd/buf/internal/command/registry/module/moduledelete/moduledelete.go
  constant forceFlagName (line 32) | forceFlagName = "force"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 53) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 70) | func run(

FILE: cmd/buf/internal/command/registry/module/moduledeprecate/moduledeprecate.go
  function NewCommand (line 33) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...
  type flags (line 48) | type flags struct
    method Bind (line 54) | func (f *flags) Bind(flagSet *pflag.FlagSet) {}
  function newFlags (line 50) | func newFlags() *flags {
  function run (line 56) | func run(ctx context.Context, container appext.Container, flags *flags) ...

FILE: cmd/buf/internal/command/registry/module/moduleinfo/moduleinfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 54) | type flags struct
    method Bind (line 62) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 58) | func newFlags() *flags {
  function run (line 71) | func run(

FILE: cmd/buf/internal/command/registry/module/modulelabel/modulelabelarchive/modulelabelarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/module/modulelabel/modulelabelinfo/modulelabelinfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/module/modulelabel/modulelabellist/modulelabellist.go
  constant archiveStatusName (line 34) | archiveStatusName = "archive-status"
  constant pageSizeFlagName (line 35) | pageSizeFlagName  = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName   = "reverse"
  constant formatFlagName (line 38) | formatFlagName    = "format"
  constant defaultPageSize (line 40) | defaultPageSize = 10
  function NewCommand (line 44) | func NewCommand(
  type flags (line 64) | type flags struct
    method Bind (line 76) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 72) | func newFlags() *flags {
  function run (line 104) | func run(
  function nextPageCommand (line 171) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/module/modulelabel/modulelabelunarchive/modulelabelunarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/module/modulesettings/modulesettingsupdate/modulesettingsupdate.go
  constant visibilityFlagName (line 33) | visibilityFlagName   = "visibility"
  constant descriptionFlagName (line 34) | descriptionFlagName  = "description"
  constant urlFlagName (line 35) | urlFlagName          = "url"
  constant defaultLabelFlagName (line 36) | defaultLabelFlagName = "default-label-name"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 60) | type flags struct
    method Bind (line 71) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 67) | func newFlags() *flags {
  function run (line 93) | func run(

FILE: cmd/buf/internal/command/registry/module/moduleundeprecate/moduleundeprecate.go
  function NewCommand (line 32) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...
  function run (line 41) | func run(ctx context.Context, container appext.Container) error {

FILE: cmd/buf/internal/command/registry/organization/organizationcreate/organizationcreate.go
  constant formatFlagName (line 32) | formatFlagName = "format"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 53) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 70) | func run(

FILE: cmd/buf/internal/command/registry/organization/organizationdelete/organizationdelete.go
  constant forceFlagName (line 31) | forceFlagName = "force"
  function NewCommand (line 34) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 60) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 56) | func newFlags() *flags {
  function run (line 69) | func run(

FILE: cmd/buf/internal/command/registry/organization/organizationinfo/organizationinfo.go
  constant formatFlagName (line 32) | formatFlagName = "format"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 53) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 70) | func run(

FILE: cmd/buf/internal/command/registry/organization/organizationupdate/organizationupdate.go
  constant descriptionFlagName (line 32) | descriptionFlagName = "description"
  constant urlFlagName (line 33) | urlFlagName         = "url"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 55) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 79) | func run(

FILE: cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitaddlabel/plugincommitaddlabel.go
  constant formatFlagName (line 35) | formatFlagName = "format"
  constant labelsFlagName (line 36) | labelsFlagName = "label"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 60) | type flags struct
    method Bind (line 69) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 65) | func newFlags() *flags {
  function run (line 84) | func run(

FILE: cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitinfo/plugincommitinfo.go
  constant formatFlagName (line 34) | formatFlagName = "format"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 57) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 74) | func run(

FILE: cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitlist/plugincommitlist.go
  constant pageSizeFlagName (line 35) | pageSizeFlagName          = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName         = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName           = "reverse"
  constant formatFlagName (line 38) | formatFlagName            = "format"
  constant digestChangesOnlyFlagName (line 39) | digestChangesOnlyFlagName = "digest-changes-only"
  constant defaultPageSize (line 41) | defaultPageSize = 10
  function NewCommand (line 45) | func NewCommand(
  type flags (line 70) | type flags struct
    method Bind (line 82) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 78) | func newFlags() *flags {
  function run (line 115) | func run(
  function nextPageCommand (line 273) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/plugin/plugincommit/plugincommitresolve/plugincommitresolve.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/plugin/plugincreate/plugincreate.go
  constant formatFlagName (line 36) | formatFlagName      = "format"
  constant visibilityFlagName (line 37) | visibilityFlagName  = "visibility"
  constant defaultLabeFlagName (line 38) | defaultLabeFlagName = "default-label-name"
  constant typeFlagName (line 39) | typeFlagName        = "type"
  constant defaultDefaultLabel (line 41) | defaultDefaultLabel = "main"
  constant pluginTypeCheck (line 43) | pluginTypeCheck = "check"
  function NewCommand (line 53) | func NewCommand(
  type flags (line 71) | type flags struct
    method Bind (line 82) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 78) | func newFlags() *flags {
  function run (line 108) | func run(
  function typeFlagToPluginType (line 178) | func typeFlagToPluginType(pluginType string) (pluginv1beta1.PluginType, ...

FILE: cmd/buf/internal/command/registry/plugin/plugindelete/plugindelete.go
  constant forceFlagName (line 32) | forceFlagName = "force"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 53) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 70) | func run(

FILE: cmd/buf/internal/command/registry/plugin/plugininfo/plugininfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 54) | type flags struct
    method Bind (line 62) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 58) | func newFlags() *flags {
  function run (line 71) | func run(

FILE: cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelarchive/pluginlabelarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelinfo/pluginlabelinfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabellist/pluginlabellist.go
  constant archiveStatusName (line 34) | archiveStatusName = "archive-status"
  constant pageSizeFlagName (line 35) | pageSizeFlagName  = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName   = "reverse"
  constant formatFlagName (line 38) | formatFlagName    = "format"
  constant defaultPageSize (line 40) | defaultPageSize = 10
  function NewCommand (line 44) | func NewCommand(
  type flags (line 64) | type flags struct
    method Bind (line 76) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 72) | func newFlags() *flags {
  function run (line 104) | func run(
  function nextPageCommand (line 171) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/plugin/pluginlabel/pluginlabelunarchive/pluginlabelunarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/plugin/pluginsettings/pluginsettingsupdate/pluginsettingsupdate.go
  constant visibilityFlagName (line 33) | visibilityFlagName  = "visibility"
  constant descriptionFlagName (line 34) | descriptionFlagName = "description"
  constant urlFlagName (line 35) | urlFlagName         = "url"
  function NewCommand (line 39) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...
  type flags (line 54) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 81) | func run(

FILE: cmd/buf/internal/command/registry/policy/policycommit/policycommitaddlabel/policycommitaddlabel.go
  constant formatFlagName (line 35) | formatFlagName = "format"
  constant labelsFlagName (line 36) | labelsFlagName = "label"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 60) | type flags struct
    method Bind (line 69) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 65) | func newFlags() *flags {
  function run (line 84) | func run(

FILE: cmd/buf/internal/command/registry/policy/policycommit/policycommitinfo/policycommitinfo.go
  constant formatFlagName (line 34) | formatFlagName = "format"
  function NewCommand (line 37) | func NewCommand(
  type flags (line 57) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 74) | func run(

FILE: cmd/buf/internal/command/registry/policy/policycommit/policycommitlist/policycommitlist.go
  constant pageSizeFlagName (line 35) | pageSizeFlagName          = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName         = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName           = "reverse"
  constant formatFlagName (line 38) | formatFlagName            = "format"
  constant digestChangesOnlyFlagName (line 39) | digestChangesOnlyFlagName = "digest-changes-only"
  constant defaultPageSize (line 41) | defaultPageSize = 10
  function NewCommand (line 45) | func NewCommand(
  type flags (line 70) | type flags struct
    method Bind (line 81) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 77) | func newFlags() *flags {
  function run (line 109) | func run(
  function nextPageCommand (line 266) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/policy/policycommit/policycommitresolve/policycommitresolve.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/policy/policycreate/policycreate.go
  constant formatFlagName (line 35) | formatFlagName      = "format"
  constant visibilityFlagName (line 36) | visibilityFlagName  = "visibility"
  constant defaultLabeFlagName (line 37) | defaultLabeFlagName = "default-label-name"
  constant defaultDefaultLabel (line 39) | defaultDefaultLabel = "main"
  function NewCommand (line 43) | func NewCommand(
  type flags (line 61) | type flags struct
    method Bind (line 72) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 68) | func newFlags() *flags {
  function run (line 88) | func run(

FILE: cmd/buf/internal/command/registry/policy/policydelete/policydelete.go
  constant forceFlagName (line 32) | forceFlagName = "force"
  function NewCommand (line 35) | func NewCommand(
  type flags (line 53) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 70) | func run(

FILE: cmd/buf/internal/command/registry/policy/policyinfo/policyinfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 54) | type flags struct
    method Bind (line 62) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 58) | func newFlags() *flags {
  function run (line 71) | func run(

FILE: cmd/buf/internal/command/registry/policy/policylabel/policylabelarchive/policylabelarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/policy/policylabel/policylabelinfo/policylabelinfo.go
  constant formatFlagName (line 33) | formatFlagName = "format"
  function NewCommand (line 36) | func NewCommand(
  type flags (line 56) | type flags struct
    method Bind (line 64) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 60) | func newFlags() *flags {
  function run (line 73) | func run(

FILE: cmd/buf/internal/command/registry/policy/policylabel/policylabellist/policylabellist.go
  constant archiveStatusName (line 34) | archiveStatusName = "archive-status"
  constant pageSizeFlagName (line 35) | pageSizeFlagName  = "page-size"
  constant pageTokenFlagName (line 36) | pageTokenFlagName = "page-token"
  constant reverseFlagName (line 37) | reverseFlagName   = "reverse"
  constant formatFlagName (line 38) | formatFlagName    = "format"
  constant defaultPageSize (line 40) | defaultPageSize = 10
  function NewCommand (line 44) | func NewCommand(
  type flags (line 64) | type flags struct
    method Bind (line 76) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 72) | func newFlags() *flags {
  function run (line 104) | func run(
  function nextPageCommand (line 171) | func nextPageCommand(container appext.Container, flags *flags, nextPageT...

FILE: cmd/buf/internal/command/registry/policy/policylabel/policylabelunarchive/policylabelunarchive.go
  function NewCommand (line 32) | func NewCommand(
  type flags (line 52) | type flags struct
    method Bind (line 59) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 55) | func newFlags() *flags {
  function run (line 62) | func run(

FILE: cmd/buf/internal/command/registry/policy/policysettings/policysettingsupdate/policysettingsupdate.go
  constant visibilityFlagName (line 33) | visibilityFlagName  = "visibility"
  constant descriptionFlagName (line 34) | descriptionFlagName = "description"
  constant urlFlagName (line 35) | urlFlagName         = "url"
  function NewCommand (line 39) | func NewCommand(name string, builder appext.SubCommandBuilder) *appcmd.C...
  type flags (line 54) | type flags struct
    method Bind (line 65) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 61) | func newFlags() *flags {
  function run (line 81) | func run(

FILE: cmd/buf/internal/command/registry/registrycc/registrycc.go
  function NewCommand (line 31) | func NewCommand(
  type flags (line 55) | type flags struct
    method Bind (line 61) | func (f *flags) Bind(flagSet *pflag.FlagSet) {}
  function newFlags (line 57) | func newFlags() *flags {
  function run (line 63) | func run(

FILE: cmd/buf/internal/command/registry/registrylogin/client.go
  function getClientName (line 21) | func getClientName() (string, error) {

FILE: cmd/buf/internal/command/registry/registrylogin/client_darwin.go
  function getClientName (line 24) | func getClientName() (string, error) {

FILE: cmd/buf/internal/command/registry/registrylogin/registrylogin.go
  constant usernameFlagName (line 45) | usernameFlagName   = "username"
  constant tokenStdinFlagName (line 46) | tokenStdinFlagName = "token-stdin"
  constant promptFlagName (line 47) | promptFlagName     = "prompt"
  function NewCommand (line 51) | func NewCommand(
  type flags (line 70) | type flags struct
    method Bind (line 80) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 76) | func newFlags() *flags {
  function run (line 109) | func run(
  function inner (line 151) | func inner(
  function doPromptLogin (line 246) | func doPromptLogin(
  function doBrowserLogin (line 270) | func doBrowserLogin(

FILE: cmd/buf/internal/command/registry/registrylogout/registrylogout.go
  function NewCommand (line 30) | func NewCommand(
  type flags (line 48) | type flags struct
    method Bind (line 55) | func (f *flags) Bind(flagSet *pflag.FlagSet) {}
  function newFlags (line 51) | func newFlags() *flags {
  function run (line 57) | func run(

FILE: cmd/buf/internal/command/registry/sdk/sdkinfo/sdkinfo.go
  constant formatFlagName (line 35) | formatFlagName  = "format"
  constant moduleFlagName (line 36) | moduleFlagName  = "module"
  constant pluginFlagName (line 37) | pluginFlagName  = "plugin"
  constant versionFlagName (line 38) | versionFlagName = "version"
  function NewCommand (line 42) | func NewCommand(
  type flags (line 128) | type flags struct
    method Bind (line 139) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 135) | func newFlags() *flags {
  function run (line 153) | func run(

FILE: cmd/buf/internal/command/registry/sdk/version/version.go
  constant pluginFlagName (line 35) | pluginFlagName = "plugin"
  constant moduleFlagName (line 36) | moduleFlagName = "module"
  function NewCommand (line 40) | func NewCommand(
  type flags (line 71) | type flags struct
    method Bind (line 80) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 76) | func newFlags() *flags {
  function run (line 87) | func run(

FILE: cmd/buf/internal/command/registry/whoami/whoami.go
  constant formatFlagName (line 36) | formatFlagName = "format"
  constant loginCommand (line 38) | loginCommand = "buf registry login"
  function NewCommand (line 42) | func NewCommand(
  type flags (line 62) | type flags struct
    method Bind (line 70) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 66) | func newFlags() *flags {
  function run (line 79) | func run(
  function loginCommandForRemote (line 134) | func loginCommandForRemote(remote string) string {

FILE: cmd/buf/internal/command/source/sourceedit/sourceeditdeprecate/sourceeditdeprecate.go
  constant configFlagName (line 40) | configFlagName          = "config"
  constant diffFlagName (line 41) | diffFlagName            = "diff"
  constant diffFlagShortName (line 42) | diffFlagShortName       = "d"
  constant disableSymlinksFlagName (line 43) | disableSymlinksFlagName = "disable-symlinks"
  constant errorFormatFlagName (line 44) | errorFormatFlagName     = "error-format"
  constant excludePathsFlagName (line 45) | excludePathsFlagName    = "exclude-path"
  constant pathsFlagName (line 46) | pathsFlagName           = "path"
  constant prefixFlagName (line 47) | prefixFlagName          = "prefix"
  function NewCommand (line 51) | func NewCommand(
  type flags (line 104) | type flags struct
    method Bind (line 120) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 116) | func newFlags() *flags {
  function run (line 156) | func run(
  function getDirOrProtoFileRef (line 266) | func getDirOrProtoFileRef(
  function validateNoIncludePackageFiles (line 276) | func validateNoIncludePackageFiles(dirOrProtoFileRef buffetch.DirOrProto...

FILE: cmd/buf/internal/command/stats/stats.go
  constant formatFlagName (line 33) | formatFlagName          = "format"
  constant disableSymlinksFlagName (line 34) | disableSymlinksFlagName = "disable-symlinks"
  function NewCommand (line 38) | func NewCommand(
  type flags (line 57) | type flags struct
    method Bind (line 69) | func (f *flags) Bind(flagSet *pflag.FlagSet) {
  function newFlags (line 65) | func newFlags() *flags {
  function run (line 80) | func run(

FILE: cmd/buf/internal/internaltesting/internaltesting.go
  function CopyReadBucketToTempDir (line 31) | func CopyReadBucketToTempDir(
  function NewEnvFunc (line 47) | func NewEnvFunc(tb testing.TB) func(string) map[string]string {
  function useEnvVar (line 58) | func useEnvVar(use string, suffix string) string {

FILE: cmd/buf/workspace_subdir_test.go
  function TestWorkspaceSubDirectory (line 33) | func TestWorkspaceSubDirectory(t *testing.T) {
  function TestWorkspaceOverlapSubDirectory (line 174) | func TestWorkspaceOverlapSubDirectory(t *testing.T) {
  function TestWorkspaceWithProtoFileRef (line 189) | func TestWorkspaceWithProtoFileRef(t *testing.T) {
  function chdirToSubDir (line 216) | func chdirToSubDir(t *testing.T, relSubDirPath string) func() {

FILE: cmd/buf/workspace_test.go
  function TestWorkspaceDir (line 40) | func TestWorkspaceDir(t *testing.T) {
  function TestWorkspaceBreaking (line 210) | func TestWorkspaceBreaking(t *testing.T) {
  function TestWorkspaceArchiveDir (line 254) | func TestWorkspaceArchiveDir(t *testing.T) {
  function TestWorkspaceNestedArchive (line 305) | func TestWorkspaceNestedArchive(t *testing.T) {
  function TestWorkspaceDetached (line 356) | func TestWorkspaceDetached(t *testing.T) {
  function TestWorkspaceNoModuleConfig (line 453) | func TestWorkspaceNoModuleConfig(t *testing.T) {
  function TestWorkspaceWithLock (line 511) | func TestWorkspaceWithLock(t *testing.T) {
  function TestWorkspaceWithTransitiveDependencies (line 572) | func TestWorkspaceWithTransitiveDependencies(t *testing.T) {
  function TestWorkspaceWithDiamondDependency (line 689) | func TestWorkspaceWithDiamondDependency(t *testing.T) {
  function TestWorkspaceWKT (line 775) | func TestWorkspaceWKT(t *testing.T) {
  function TestWorkspaceRoots (line 848) | func TestWorkspaceRoots(t *testing.T) {
  function TestWorkspaceProtoFile (line 935) | func TestWorkspaceProtoFile(t *testing.T) {
  function TestWorkspaceBreakingFail (line 982) | func TestWorkspaceBreakingFail(t *testing.T) {
  function TestWorkspaceDuplicateDirPathSuccess (line 1064) | func TestWorkspaceDuplicateDirPathSuccess(t *testing.T) {
  function TestWorkspaceDuplicateDirPathOverlappingIncludeSuccess (line 1106) | func TestWorkspaceDuplicateDirPathOverlappingIncludeSuccess(t *testing.T) {
  function TestWorkspaceOverlappingModuleDirPaths (line 1196) | func TestWorkspaceOverlappingModuleDirPaths(t *testing.T) {
  function TestWorkspaceDuplicateFail (line 1232) | func TestWorkspaceDuplicateFail(t *testing.T) {
  function TestWorkspaceDuplicateFailSpecificModule (line 1259) | func TestWorkspaceDuplicateFailSpecificModule(t *testing.T) {
  function TestWorkspaceNotExistFail (line 1286) | func TestWorkspaceNotExistFail(t *testing.T) {
  function TestWorkspaceJumpContextFail (line 1309) | func TestWorkspaceJumpContextFail(t *testing.T) {
  function TestWorkspaceDirOverlapFail (line 1332) | func TestWorkspaceDirOverlapFail(t *testing.T) {
  function TestWorkspaceInputOverlapFail (line 1346) | func TestWorkspaceInputOverlapFail(t *testing.T) {
  function TestWorkspaceInputOverlapNonExistentDirFail (line 1363) | func TestWorkspaceInputOverlapNonExistentDirFail(t *testing.T) {
  function TestWorkspaceNoVersionFail (line 1387) | func TestWorkspaceNoVersionFail(t *testing.T) {
  function TestWorkspaceInvalidVersionFail (line 1401) | func TestWorkspaceInvalidVersionFail(t *testing.T) {
  function TestWorkspaceNoDirectoriesFail (line 1415) | func TestWorkspaceNoDirectoriesFail(t *testing.T) {
  function TestWorkspaceWithWorkspacePathFail (line 1429) | func TestWorkspaceWithWorkspacePathFail(t *testing.T) {
  function TestWorkspaceWithWorkspaceExcludePathFail (line 1456) | func TestWorkspaceWithWorkspaceExcludePathFail(t *testing.T) {
  function TestWorkspaceWithWorkspaceDirectoryPathFail (line 1482) | func TestWorkspaceWithWorkspaceDirectoryPathFail(t *testing.T) {
  function TestWorkspaceWithInvalidWorkspaceDirectoryPathFail (line 1509) | func TestWorkspaceWithInvalidWorkspaceDirectoryPathFail(t *testing.T) {
  function TestWorkspaceWithInvalidDirPathFail (line 1537) | func TestWorkspaceWithInvalidDirPathFail(t *testing.T) {
  function TestWorkspaceWithInvalidArchivePathFail (line 1565) | func TestWorkspaceWithInvalidArchivePathFail(t *testing.T) {
  function TestWorkspaceWithInvalidArchiveAbsolutePathFail (line 1605) | func TestWorkspaceWithInvalidArchiveAbsolutePathFail(t *testing.T) {
  function TestWorkspaceWithTargetingModuleCommonParentDir (line 1653) | func TestWorkspaceWithTargetingModuleCommonParentDir(t *testing.T) {
  function createZipFromDir (line 1705) | func createZipFromDir(t *testing.T, rootPath string, archiveName string)...
  type expectedFileInfo (line 1738) | type expectedFileInfo struct
  function requireBuildOutputFilePaths (line 1743) | func requireBuildOutputFilePaths(t *testing.T, expectedFilePathToInfo ma...

FILE: cmd/buf/workspace_unix_test.go
  function TestWorkspaceSymlinkFail (line 26) | func TestWorkspaceSymlinkFail(t *testing.T) {
  function TestWorkspaceSymlink (line 49) | func TestWorkspaceSymlink(t *testing.T) {
  function TestWorkspaceAbsoluteFail (line 116) | func TestWorkspaceAbsoluteFail(t *testing.T) {
  function TestWorkspaceGit (line 143) | func TestWorkspaceGit(t *testing.T) {

FILE: cmd/buf/workspace_windows_test.go
  function TestWorkspaceAbsoluteFail (line 24) | func TestWorkspaceAbsoluteFail(t *testing.T) {

FILE: cmd/protoc-gen-buf-breaking/breaking.go
  constant appName (line 37) | appName        = "protoc-gen-buf-breaking"
  constant defaultTimeout (line 38) | defaultTimeout = 10 * time.Second
  function main (line 41) | func main() {
  function handle (line 52) | func handle(
  type externalConfig (line 173) | type externalConfig struct

FILE: cmd/protoc-gen-buf-lint/lint.go
  constant appName (line 36) | appName        = "protoc-gen-buf-lint"
  constant defaultTimeout (line 37) | defaultTimeout = 10 * time.Second
  function main (line 40) | func main() {
  function handle (line 51) | func handle(
  type externalConfig (line 153) | type externalConfig struct

FILE: cmd/protoc-gen-buf-lint/lint_test.go
  function TestRunLint1 (line 35) | func TestRunLint1(t *testing.T) {
  function TestRunLint2 (line 61) | func TestRunLint2(t *testing.T) {
  function TestRunLint3 (line 83) | func TestRunLint3(t *testing.T) {
  function TestRunLint4 (line 103) | func TestRunLint4(t *testing.T) {
  function TestRunLint5 (line 123) | func TestRunLint5(t *testing.T) {
  function TestRunLint6 (line 143) | func TestRunLint6(t *testing.T) {
  function TestRunLint7 (line 164) | func TestRunLint7(t *testing.T) {
  function TestRunLint8 (line 184) | func TestRunLint8(t *testing.T) {
  function TestRunLint_UnusedImports (line 204) | func TestRunLint_UnusedImports(t *testing.T) {
  function testRunLint (line 251) | func testRunLint(
  function testRunHandlerFunc (line 289) | func testRunHandlerFunc(
  function testBuildRequest (line 326) | func testBuildRequest(

FILE: private/buf/bufapp/bufapp.go
  constant currentVersion (line 25) | currentVersion = "v1"
  type ExternalConfig (line 28) | type ExternalConfig struct
    method IsEmpty (line 36) | func (e ExternalConfig) IsEmpty() bool {
  type Config (line 41) | type Config struct
  function NewConfig (line 46) | func NewConfig(

FILE: private/buf/bufapp/bufapp_test.go
  function TestExternalConfigIsEmpty (line 23) | func TestExternalConfigIsEmpty(t *testing.T) {

FILE: private/buf/bufcli/buf_work_yaml_file.go
  function GetBufWorkYAMLFileForDirPath (line 24) | func GetBufWorkYAMLFileForDirPath(

FILE: private/buf/bufcli/buf_yaml_file.go
  function GetBufYAMLFileForDirPathOrOverride (line 29) | func GetBufYAMLFileForDirPathOrOverride(
  function GetBufYAMLFileForDirPath (line 42) | func GetBufYAMLFileForDirPath(
  function PutBufYAMLFileForDirPath (line 54) | func PutBufYAMLFileForDirPath(
  function BufYAMLFileExistsForDirPath (line 67) | func BufYAMLFileExistsForDirPath(
  function newOSReadWriteBucketWithSymlinks (line 84) | func newOSReadWriteBucketWithSymlinks(dirPath string) (storage.ReadWrite...

FILE: private/buf/bufcli/bufcli.go
  constant Version (line 18) | Version = "1.66.2-dev"

FILE: private/buf/bufcli/cache.go
  function NewModuleDataProvider (line 145) | func NewModuleDataProvider(container appext.Container) (bufmodule.Module...
  function NewCommitProvider (line 163) | func NewCommitProvider(container appext.Container) (bufmodule.CommitProv...
  function NewPluginDataProvider (line 181) | func NewPluginDataProvider(container appext.Container) (bufplugin.Plugin...
  function NewPolicyDataProvider (line 196) | func NewPolicyDataProvider(container appext.Container) (bufpolicy.Policy...
  function NewWasmRuntime (line 211) | func NewWasmRuntime(ctx context.Context, container appext.Container) (wa...
  function NewWKTStore (line 227) | func NewWKTStore(container appext.Container) (bufwktstore.Store, error) {
  function newModuleDataProvider (line 244) | func newModuleDataProvider(
  function newCommitProvider (line 282) | func newCommitProvider(
  function newPluginDataProvider (line 316) | func newPluginDataProvider(
  function newPolicyDataProvider (line 343) | func newPolicyDataProvider(
  function createCacheDir (line 370) | func createCacheDir(baseCacheDirPath string, relDirPath string) error {

FILE: private/buf/bufcli/config_ignore_yaml.go
  function PrintFileAnnotationSetLintConfigIgnoreYAMLV1 (line 35) | func PrintFileAnnotationSetLintConfigIgnoreYAMLV1(

FILE: private/buf/bufcli/connectclient_config.go
  function NewConnectClientConfig (line 32) | func NewConnectClientConfig(container appext.Container) (*connectclient....
  function NewConnectClientConfigWithToken (line 48) | func NewConnectClientConfigWithToken(container appext.Container, token s...
  function newConnectClientConfigWithOptions (line 62) | func newConnectClientConfigWithOptions(container appext.Container, opts ...
  function newConfig (line 93) | func newConfig(container appext.Container) (*bufapp.Config, error) {

FILE: private/buf/bufcli/controller.go
  function NewController (line 30) | func NewController(

FILE: private/buf/bufcli/env.go
  constant inputHTTPSUsernameEnvKey (line 27) | inputHTTPSUsernameEnvKey      = "BUF_INPUT_HTTPS_USERNAME"
  constant inputHTTPSPasswordEnvKey (line 28) | inputHTTPSPasswordEnvKey      = "BUF_INPUT_HTTPS_PASSWORD"
  constant inputSSHKeyFileEnvKey (line 29) | inputSSHKeyFileEnvKey         = "BUF_INPUT_SSH_KEY_FILE"
  constant inputSSHKnownHostsFilesEnvKey (line 30) | inputSSHKnownHostsFilesEnvKey = "BUF_INPUT_SSH_KNOWN_HOSTS_FILES"
  constant alphaSuppressWarningsEnvKey (line 32) | alphaSuppressWarningsEnvKey = "BUF_ALPHA_SUPPRESS_WARNINGS"
  constant betaSuppressWarningsEnvKey (line 33) | betaSuppressWarningsEnvKey  = "BUF_BETA_SUPPRESS_WARNINGS"
  constant copyToInMemoryEnvKey (line 39) | copyToInMemoryEnvKey = "BUF_BETA_COPY_FILES_TO_MEMORY"
  constant legacyFederationRegistryEnvKey (line 43) | legacyFederationRegistryEnvKey = "BUF_TESTING_LEGACY_FEDERATION_REGISTRY"
  constant publicRegistryEnvKey (line 46) | publicRegistryEnvKey = "BUF_TESTING_PUBLIC_REGISTRY"
  function WarnAlphaCommand (line 74) | func WarnAlphaCommand(_ context.Context, container appext.Container) {
  function WarnBetaCommand (line 82) | func WarnBetaCommand(_ context.Context, container appext.Container) {

FILE: private/buf/bufcli/errors.go
  function NewTooManyEmptyAnswersError (line 35) | func NewTooManyEmptyAnswersError(attempts int) error {
  function NewOrganizationNameAlreadyExistsError (line 41) | func NewOrganizationNameAlreadyExistsError(name string) error {
  function NewModuleNameAlreadyExistsError (line 47) | func NewModuleNameAlreadyExistsError(name string) error {
  function NewLabelNameAlreadyExistsError (line 53) | func NewLabelNameAlreadyExistsError(name string) error {
  function NewPluginNameAlreadyExistsError (line 59) | func NewPluginNameAlreadyExistsError(name string) error {
  function NewPolicyNameAlreadyExistsError (line 65) | func NewPolicyNameAlreadyExistsError(name string) error {
  function NewOrganizationNotFoundError (line 71) | func NewOrganizationNotFoundError(name string) error {
  function NewOrganizationOrUserNotFoundError (line 77) | func NewOrganizationOrUserNotFoundError(name string) error {
  function NewModuleNotFoundError (line 83) | func NewModuleNotFoundError(name string) error {
  function NewRefNotFoundError (line 88) | func NewRefNotFoundError(ref bufparse.Ref) error {
  function NewLabelNotFoundError (line 93) | func NewLabelNotFoundError(ref bufparse.Ref) error {
  function NewTokenNotFoundError (line 99) | func NewTokenNotFoundError(tokenID string) error {
  function NewPluginNotFoundError (line 105) | func NewPluginNotFoundError(name string) error {
  function NewPolicyNotFoundError (line 111) | func NewPolicyNotFoundError(name string) error {
  function NewInvalidRemoteError (line 116) | func NewInvalidRemoteError(err error, remote string, moduleFullName stri...

FILE: private/buf/bufcli/flag_args_test.go
  function TestStringPointerFlagSet (line 24) | func TestStringPointerFlagSet(t *testing.T) {
  function TestStringPointerFlagSetEmpty (line 30) | func TestStringPointerFlagSetEmpty(t *testing.T) {
  function TestStringPointerFlagNotSet (line 36) | func TestStringPointerFlagNotSet(t *testing.T) {
  function testParseStringPointer (line 41) | func testParseStringPointer(t *testing.T, flagName string, expectedResul...

FILE: private/buf/bufcli/flags_args.go
  constant DefaultArchiveStatus (line 36) | DefaultArchiveStatus = unarchivedArchiveStatus
  constant inputHashtagFlagName (line 38) | inputHashtagFlagName      = "__hashtag__"
  constant inputHashtagFlagShortName (line 39) | inputHashtagFlagShortName = "#"
  constant publicVisibility (line 41) | publicVisibility  = "public"
  constant privateVisibility (line 42) | privateVisibility = "private"
  constant archivedArchiveStatus (line 44) | archivedArchiveStatus   = "archived"
  constant unarchivedArchiveStatus (line 45) | unarchivedArchiveStatus = "unarchived"
  constant allArchiveStatus (line 46) | allArchiveStatus        = "all"
  function BindAsFileDescriptorSet (line 63) | func BindAsFileDescriptorSet(flagSet *pflag.FlagSet, addr *bool, flagNam...
  function BindExcludeImports (line 75) | func BindExcludeImports(flagSet *pflag.FlagSet, addr *bool, flagName str...
  function BindExcludeSourceInfo (line 85) | func BindExcludeSourceInfo(flagSet *pflag.FlagSet, addr *bool, flagName ...
  function BindPaths (line 95) | func BindPaths(
  function BindInputHashtag (line 114) | func BindInputHashtag(flagSet *pflag.FlagSet, addr *string) {
  function BindExcludePaths (line 126) | func BindExcludePaths(
  function BindDisableSymlinks (line 141) | func BindDisableSymlinks(flagSet *pflag.FlagSet, addr *bool, flagName st...
  function BindVisibility (line 152) | func BindVisibility(flagSet *pflag.FlagSet, addr *string, flagName strin...
  function BindCreateVisibility (line 167) | func BindCreateVisibility(flagSet *pflag.FlagSet, addr *string, flagName...
  function BindArchiveStatus (line 178) | func BindArchiveStatus(flagSet *pflag.FlagSet, addr *string, flagName st...
  function BindStringPointer (line 192) | func BindStringPointer(flagSet *pflag.FlagSet, name string, value **stri...
  type stringPointerValue (line 203) | type stringPointerValue struct
    method Type (line 208) | func (b *stringPointerValue) Type() string {
    method String (line 212) | func (b *stringPointerValue) String() string {
    method Set (line 219) | func (b *stringPointerValue) Set(value string) error {
  function GetInputLong (line 225) | func GetInputLong(inputArgDescription string) string {
  function GetSourceLong (line 235) | func GetSourceLong(inputArgDescription string) string {
  function GetSourceDirLong (line 245) | func GetSourceDirLong(inputArgDescription string) string {
  function GetSourceOrModuleLong (line 254) | func GetSourceOrModuleLong(inputArgDescription string) string {
  function GetInputValue (line 267) | func GetInputValue(
  function VisibilityFlagToVisibilityAllowUnspecified (line 298) | func VisibilityFlagToVisibilityAllowUnspecified(visibility string) (modu...
  function VisibilityFlagToPluginVisibilityAllowUnspecified (line 313) | func VisibilityFlagToPluginVisibilityAllowUnspecified(visibility string)...
  function VisibilityFlagToPolicyVisibilityAllowUnspecified (line 328) | func VisibilityFlagToPolicyVisibilityAllowUnspecified(visibility string)...
  function ArchiveStatusFlagToModuleArchiveStatusFilter (line 342) | func ArchiveStatusFlagToModuleArchiveStatusFilter(archiveStatus string) ...
  function ArchiveStatusFlagToPluginArchiveStatusFilter (line 356) | func ArchiveStatusFlagToPluginArchiveStatusFilter(archiveStatus string) ...
  function ArchiveStatusFlagToPolicyArchiveStatusFilter (line 370) | func ArchiveStatusFlagToPolicyArchiveStatusFilter(archiveStatus string) ...
  function ValidateRequiredFlag (line 384) | func ValidateRequiredFlag[T comparable](flagName string, value T) error {
  function ValidateErrorFormatFlagLint (line 393) | func ValidateErrorFormatFlagLint(errorFormatString string, errorFormatFl...
  function validateErrorFormatFlag (line 397) | func validateErrorFormatFlag(validFormatStrings []string, errorFormatStr...

FILE: private/buf/bufcli/graph_provider.go
  function NewGraphProvider (line 26) | func NewGraphProvider(container appext.Container) (bufmodule.GraphProvid...
  function newGraphProvider (line 38) | func newGraphProvider(

FILE: private/buf/bufcli/module_key_provider.go
  function NewModuleKeyProvider (line 25) | func NewModuleKeyProvider(container appext.Container) (bufmodule.ModuleK...

FILE: private/buf/bufcli/module_owner.go
  type ModuleOwner (line 29) | type ModuleOwner interface
  function NewModuleOwner (line 42) | func NewModuleOwner(
  function ParseModuleOwner (line 53) | func ParseModuleOwner(moduleOwnerString string) (ModuleOwner, error) {
  type moduleOwner (line 63) | type moduleOwner struct
    method Registry (line 90) | func (m *moduleOwner) Registry() string {
    method Owner (line 94) | func (m *moduleOwner) Owner() string {
    method String (line 98) | func (m *moduleOwner) String() string {
    method isModuleOwner (line 102) | func (*moduleOwner) isModuleOwner() {}
  function newModuleOwner (line 68) | func newModuleOwner(
  function parseModuleOwnerComponents (line 104) | func parseModuleOwnerComponents(path string) (registry string, owner str...
  function newInvalidModuleOwnerStringError (line 120) | func newInvalidModuleOwnerStringError(s string) error {

FILE: private/buf/bufcli/plugin_key_provider.go
  function NewPluginKeyProvider (line 25) | func NewPluginKeyProvider(container appext.Container) (bufplugin.PluginK...

FILE: private/buf/bufcli/policy_key_provider.go
  function NewPolicyKeyProvider (line 25) | func NewPolicyKeyProvider(container appext.Container) (bufpolicy.PolicyK...

FILE: private/buf/bufcli/prompt.go
  constant userPromptAttempts (line 30) | userPromptAttempts = 3
  function PromptUser (line 35) | func PromptUser(container app.Container, prompt string) (string, error) {
  function PromptUserForPassword (line 42) | func PromptUserForPassword(container app.Container, prompt string) (stri...
  function PromptUserForDelete (line 50) | func PromptUserForDelete(container app.Container, entityType string, exp...
  function promptUser (line 79) | func promptUser(container app.Container, prompt string, isPassword bool)...

FILE: private/buf/bufcli/protoc_plugin.go
  function GetModuleConfigAndPluginConfigsForProtocPlugin (line 43) | func GetModuleConfigAndPluginConfigsForProtocPlugin(
  function NewAppextContainerForPluginEnv (line 99) | func NewAppextContainerForPluginEnv(
  type appContainer (line 131) | type appContainer struct
  function newAppContainerForPluginEnv (line 139) | func newAppContainerForPluginEnv(pluginEnv protoplugin.PluginEnv) (*appC...
  function getPluginConfigsForPluginPathOverrides (line 164) | func getPluginConfigsForPluginPathOverrides(

FILE: private/buf/bufcli/rules.go
  function PrintRules (line 32) | func PrintRules(writer io.Writer, rules []bufcheck.Rule, format string, ...

FILE: private/buf/bufcli/uploader.go
  function NewModuleUploader (line 31) | func NewModuleUploader(container appext.Container) (bufmodule.Uploader, ...
  function NewPluginUploader (line 40) | func NewPluginUploader(container appext.Container) (bufplugin.Uploader, ...
  function NewPolicyUploader (line 49) | func NewPolicyUploader(container appext.Container) (bufpolicy.Uploader, ...
  function newModuleUploader (line 57) | func newModuleUploader(
  function newPluginUploader (line 69) | func newPluginUploader(
  function newPolicyUploader (line 79) | func newPolicyUploader(

FILE: private/buf/bufconvert/bufconvert.go
  function ImageWithoutMessageSetWireFormatResolution (line 37) | func ImageWithoutMessageSetWireFormatResolution(image bufimage.Image) bu...
  type noResolveMessageSetWireFormatImage (line 41) | type noResolveMessageSetWireFormatImage struct
    method Resolver (line 45) | func (n *noResolveMessageSetWireFormatImage) Resolver() protoencoding....
    method FindFileByPath (line 49) | func (n *noResolveMessageSetWireFormatImage) FindFileByPath(path strin...
    method FindDescriptorByName (line 53) | func (n *noResolveMessageSetWireFormatImage) FindDescriptorByName(name...
    method FindExtensionByName (line 73) | func (n *noResolveMessageSetWireFormatImage) FindExtensionByName(field...
    method FindExtensionByNumber (line 86) | func (n *noResolveMessageSetWireFormatImage) FindExtensionByNumber(mes...
    method FindMessageByName (line 99) | func (n *noResolveMessageSetWireFormatImage) FindMessageByName(message...
    method FindMessageByURL (line 112) | func (n *noResolveMessageSetWireFormatImage) FindMessageByURL(url stri...
    method FindEnumByName (line 125) | func (n *noResolveMessageSetWireFormatImage) FindEnumByName(enum proto...
  type messageSetNotSupportedError (line 129) | type messageSetNotSupportedError struct
    method Error (line 133) | func (e *messageSetNotSupportedError) Error() string {
  function checkNoMessageSetWireFormat (line 137) | func checkNoMessageSetWireFormat(descriptor protoreflect.MessageDescript...
  function findMessageInFile (line 175) | func findMessageInFile(name protoreflect.FullName, file *descriptorpb.Fi...
  function findMessageInFileRec (line 186) | func findMessageInFileRec(name protoreflect.FullName, file *descriptorpb...

FILE: private/buf/bufconvert/bufconvert_test.go
  function TestImageWithoutMessageSetWireFormatResolution (line 30) | func TestImageWithoutMessageSetWireFormatResolution(t *testing.T) {
  function TestFindMessageInFile (line 87) | func TestFindMessageInFile(t *testing.T) {
  type resultChecker (line 125) | type resultChecker struct
    method succeeds (line 129) | func (c resultChecker) succeeds(result any, err error) {
    method fails (line 135) | func (c resultChecker) fails(_ any, err error) {
  function doFindMessageInFile (line 141) | func doFindMessageInFile(t *testing.T, name protoreflect.FullName, file ...
  function getTestFile (line 152) | func getTestFile(pkg string) *descriptorpb.FileDescriptorProto {
  function getTestFileWithMessageSets (line 210) | func getTestFileWithMessageSets() *descriptorpb.FileDescriptorProto {

FILE: private/buf/bufctl/bufctl.go
  constant ExitCodeFileAnnotation (line 27) | ExitCodeFileAnnotation = 100

FILE: private/buf/bufctl/controller.go
  type ImageWithConfig (line 61) | type ImageWithConfig interface
  type Controller (line 75) | type Controller interface
  function NewController (line 161) | func NewController(
  type controller (line 204) | type controller struct
    method GetWorkspace (line 292) | func (c *controller) GetWorkspace(
    method GetWorkspaceDepManager (line 319) | func (c *controller) GetWorkspaceDepManager(
    method GetImage (line 336) | func (c *controller) GetImage(
    method GetImageForInputConfig (line 349) | func (c *controller) GetImageForInputConfig(
    method GetImageForWorkspace (line 362) | func (c *controller) GetImageForWorkspace(
    method GetTargetImageWithConfigsAndCheckClient (line 375) | func (c *controller) GetTargetImageWithConfigsAndCheckClient(
    method GetImportableImageFileInfos (line 573) | func (c *controller) GetImportableImageFileInfos(
    method PutImage (line 669) | func (c *controller) PutImage(
    method GetMessage (line 723) | func (c *controller) GetMessage(
    method PutMessage (line 805) | func (c *controller) PutMessage(
    method GetCheckClientForWorkspace (line 849) | func (c *controller) GetCheckClientForWorkspace(
    method getImage (line 903) | func (c *controller) getImage(
    method getImageForInputConfig (line 915) | func (c *controller) getImageForInputConfig(
    method getImageForRef (line 927) | func (c *controller) getImageForRef(
    method getImageForWorkspace (line 959) | func (c *controller) getImageForWorkspace(
    method getWorkspaceForProtoFileRef (line 978) | func (c *controller) getWorkspaceForProtoFileRef(
    method getWorkspaceForSourceRef (line 1032) | func (c *controller) getWorkspaceForSourceRef(
    method getWorkspaceDepManagerForDirRef (line 1068) | func (c *controller) getWorkspaceDepManagerForDirRef(
    method getWorkspaceForModuleRef (line 1091) | func (c *controller) getWorkspaceForModuleRef(
    method getImageForMessageRef (line 1113) | func (c *controller) getImageForMessageRef(
    method buildImage (line 1189) | func (c *controller) buildImage(
    method buildTargetImageWithConfigs (line 1212) | func (c *controller) buildTargetImageWithConfigs(
    method warnUnconfiguredTransitiveImports (line 1286) | func (c *controller) warnUnconfiguredTransitiveImports(
    method handleFileAnnotationSetRetError (line 1363) | func (c *controller) handleFileAnnotationSetRetError(retErrAddr *error) {
  function newController (line 229) | func newController(
  type yamlValidator (line 1388) | type yamlValidator struct
    method Validate (line 1390) | func (v yamlValidator) Validate(msg proto.Message) error {
  function getImageFileInfosForModuleSet (line 1394) | func getImageFileInfosForModuleSet(ctx context.Context, moduleSet bufmod...
  function bootstrapResolver (line 1411) | func bootstrapResolver(
  function filterImage (line 1425) | func filterImage(
  function newStorageosProvider (line 1474) | func newStorageosProvider(disableSymlinks bool) storageos.Provider {
  function newProtoencodingMarshaler (line 1482) | func newProtoencodingMarshaler(
  function newJSONMarshaler (line 1501) | func newJSONMarshaler(
  function newYAMLMarshaler (line 1523) | func newYAMLMarshaler(
  function validateFileAnnotationErrorFormat (line 1545) | func validateFileAnnotationErrorFormat(fileAnnotationErrorFormat string)...
  function newStaticPluginKeyProviderForPluginConfigs (line 1562) | func newStaticPluginKeyProviderForPluginConfigs(
  function newStaticPolicyKeyProviderForPolicyConfigs (line 1595) | func newStaticPolicyKeyProviderForPolicyConfigs(
  function newStaticPolicyPluginKeyProviderForPolicyConfigs (line 1624) | func newStaticPolicyPluginKeyProviderForPolicyConfigs(
  function newStaticPolicyPluginDataProviderForPolicyConfigs (line 1659) | func newStaticPolicyPluginDataProviderForPolicyConfigs(

FILE: private/buf/bufctl/image_with_config.go
  type imageWithConfig (line 23) | type imageWithConfig struct
    method ModuleFullName (line 54) | func (i *imageWithConfig) ModuleFullName() bufparse.FullName {
    method ModuleOpaqueID (line 58) | func (i *imageWithConfig) ModuleOpaqueID() string {
    method LintConfig (line 62) | func (i *imageWithConfig) LintConfig() bufconfig.LintConfig {
    method BreakingConfig (line 66) | func (i *imageWithConfig) BreakingConfig() bufconfig.BreakingConfig {
    method PluginConfigs (line 70) | func (i *imageWithConfig) PluginConfigs() []bufconfig.PluginConfig {
    method PolicyConfigs (line 74) | func (i *imageWithConfig) PolicyConfigs() []bufconfig.PolicyConfig {
    method isImageWithConfig (line 78) | func (*imageWithConfig) isImageWithConfig() {}
  function newImageWithConfig (line 34) | func newImageWithConfig(

FILE: private/buf/bufctl/option.go
  type ControllerOption (line 22) | type ControllerOption
  function WithDisableSymlinks (line 25) | func WithDisableSymlinks(disableSymlinks bool) ControllerOption {
  function WithFileAnnotationErrorFormat (line 32) | func WithFileAnnotationErrorFormat(fileAnnotationErrorFormat string) Con...
  function WithFileAnnotationsToStdout (line 39) | func WithFileAnnotationsToStdout() ControllerOption {
  function WithCopyToInMemory (line 46) | func WithCopyToInMemory() ControllerOption {
  type FunctionOption (line 55) | type FunctionOption
  function WithTargetPaths (line 58) | func WithTargetPaths(targetPaths []string, targetExcludePaths []string) ...
  function WithImageExcludeSourceInfo (line 66) | func WithImageExcludeSourceInfo(imageExcludeSourceInfo bool) FunctionOpt...
  function WithImageExcludeImports (line 73) | func WithImageExcludeImports(imageExcludeImports bool) FunctionOption {
  function WithImageIncludeTypes (line 80) | func WithImageIncludeTypes(imageTypes []string) FunctionOption {
  function WithImageExcludeTypes (line 87) | func WithImageExcludeTypes(imageExcludeTypes []string) FunctionOption {
  function WithImageAsFileDescriptorSet (line 94) | func WithImageAsFileDescriptorSet(imageAsFileDescriptorSet bool) Functio...
  function WithConfigOverride (line 118) | func WithConfigOverride(configOverride string) FunctionOption {
  function WithIgnoreAndDisallowV1BufWorkYAMLs (line 129) | func WithIgnoreAndDisallowV1BufWorkYAMLs() FunctionOption {
  function WithMessageValidation (line 140) | func WithMessageValidation() FunctionOption {
  type functionOptions (line 148) | type functionOptions struct
    method getGetReadBucketCloserOptions (line 169) | func (f *functionOptions) getGetReadBucketCloserOptions() []buffetch.G...
    method getGetReadWriteBucketOptions (line 206) | func (f *functionOptions) getGetReadWriteBucketOptions() []buffetch.Ge...
  function newFunctionOptions (line 163) | func newFunctionOptions(controller *controller) *functionOptions {

FILE: private/buf/bufcurl/bufcurl.go
  type Invoker (line 30) | type Invoker interface
  function ResolveMethodDescriptor (line 39) | func ResolveMethodDescriptor(res protoencoding.Resolver, service, method...
  function ResolveServiceDescriptor (line 53) | func ResolveServiceDescriptor(res protoencoding.Resolver, service string...

FILE: private/buf/bufcurl/headers.go
  function GetAuthority (line 51) | func GetAuthority(urlHost string, headers http.Header) string {
  function LoadHeaders (line 74) | func LoadHeaders(headerFlags []string, dataFile string, others http.Head...
  function readHeadersFile (line 112) | func readHeadersFile(headerFile string, stopAtBlankLine bool, headers ht...
  function addHeader (line 161) | func addHeader(header string, dest http.Header) bool {

FILE: private/buf/bufcurl/invoker.go
  type deferredMessage (line 39) | type deferredMessage struct
  type protoCodec (line 43) | type protoCodec struct
    method Name (line 45) | func (p protoCodec) Name() string {
    method Marshal (line 49) | func (p protoCodec) Marshal(a any) ([]byte, error) {
    method Unmarshal (line 57) | func (p protoCodec) Unmarshal(bytes []byte, a any) error {
  type invoker (line 73) | type invoker struct
    method Invoke (line 104) | func (inv *invoker) Invoke(ctx context.Context, dataSource string, dat...
    method handleUnary (line 121) | func (inv *invoker) handleUnary(ctx context.Context, dataSource string...
    method handleClientStream (line 147) | func (inv *invoker) handleClientStream(ctx context.Context, dataSource...
    method handleServerStream (line 178) | func (inv *invoker) handleServerStream(ctx context.Context, dataSource...
    method handleBidiStream (line 208) | func (inv *invoker) handleBidiStream(ctx context.Context, dataSource s...
    method handleResponse (line 268) | func (inv *invoker) handleResponse(data []byte, msg *dynamicpb.Message...
    method handleStreamRequest (line 325) | func (inv *invoker) handleStreamRequest(provider messageProvider, msg ...
    method handleStreamResponse (line 339) | func (inv *invoker) handleStreamResponse(stream serverStream) (retErro...
    method handleErrorResponse (line 360) | func (inv *invoker) handleErrorResponse(connErr *connect.Error) error {
  function NewInvoker (line 88) | func NewInvoker(container appext.Container, verbosePrinter verbose.Print...
  function isCancelled (line 257) | func isCancelled(err error) bool {
  type clientStream (line 297) | type clientStream interface
  type serverStream (line 301) | type serverStream interface
  type serverStreamAdapter (line 306) | type serverStreamAdapter struct
    method Receive (line 310) | func (ssa *serverStreamAdapter) Receive() (*deferredMessage, error) {
    method CloseResponse (line 321) | func (ssa *serverStreamAdapter) CloseResponse() error {
  function newStreamMessageProvider (line 389) | func newStreamMessageProvider(dataSource string, data io.Reader, res pro...
  function newMessageProvider (line 397) | func newMessageProvider(dataSource string, data io.Reader, res protoenco...
  type messageProvider (line 406) | type messageProvider interface
  type singleEmptyMessageProvider (line 410) | type singleEmptyMessageProvider struct
    method next (line 414) | func (s *singleEmptyMessageProvider) next(_ proto.Message) error {
  type streamMessageProvider (line 422) | type streamMessageProvider struct
    method next (line 428) | func (s *streamMessageProvider) next(msg proto.Message) error {
  function countUnrecognized (line 441) | func countUnrecognized(msg protoreflect.Message) int {
  function isMessageKind (line 473) | func isMessageKind(k protoreflect.Kind) bool {

FILE: private/buf/bufcurl/invoker_test.go
  function TestCountUnrecognized (line 28) | func TestCountUnrecognized(t *testing.T) {

FILE: private/buf/bufcurl/io.go
  function ErrorHasFilename (line 28) | func ErrorHasFilename(err error, filename string) error {
  type readerWithClose (line 35) | type readerWithClose struct
  type lineReader (line 42) | type lineReader struct
    method Read (line 47) | func (r *lineReader) Read(p []byte) (n int, err error) {
    method ReadLine (line 51) | func (r *lineReader) ReadLine() (string, error) {

FILE: private/buf/bufcurl/reflection_resolver.go
  constant ReflectProtocolUnknown (line 44) | ReflectProtocolUnknown ReflectProtocol = iota + 1
  constant ReflectProtocolGRPCV1 (line 47) | ReflectProtocolGRPCV1
  constant ReflectProtocolGRPCV1Alpha (line 50) | ReflectProtocolGRPCV1Alpha
  type ReflectProtocol (line 74) | type ReflectProtocol
    method String (line 77) | func (r ReflectProtocol) String() string {
  function ParseReflectProtocol (line 88) | func ParseReflectProtocol(s string) (ReflectProtocol, error) {
  function NewServerReflectionResolver (line 98) | func NewServerReflectionResolver(
  type reflectionResolver (line 140) | type reflectionResolver struct
    method ListServices (line 154) | func (r *reflectionResolver) ListServices() ([]protoreflect.FullName, ...
    method FindFileByPath (line 184) | func (r *reflectionResolver) FindFileByPath(path string) (protoreflect...
    method FindDescriptorByName (line 209) | func (r *reflectionResolver) FindDescriptorByName(name protoreflect.Fu...
    method FindEnumByName (line 234) | func (r *reflectionResolver) FindEnumByName(enum protoreflect.FullName...
    method FindMessageByName (line 246) | func (r *reflectionResolver) FindMessageByName(message protoreflect.Fu...
    method FindMessageByURL (line 258) | func (r *reflectionResolver) FindMessageByURL(url string) (protoreflec...
    method FindExtensionByName (line 264) | func (r *reflectionResolver) FindExtensionByName(field protoreflect.Fu...
    method FindExtensionByNumber (line 276) | func (r *reflectionResolver) FindExtensionByNumber(message protoreflec...
    method fileContainingSymbolLocked (line 301) | func (r *reflectionResolver) fileContainingSymbolLocked(name protorefl...
    method fileContainingExtensionLocked (line 312) | func (r *reflectionResolver) fileContainingExtensionLocked(message pro...
    method fileByNameLocked (line 326) | func (r *reflectionResolver) fileByNameLocked(name string) ([]*descrip...
    method cacheFilesLocked (line 361) | func (r *reflectionResolver) cacheFilesLocked(files []*descriptorpb.Fi...
    method cacheFileLocked (line 376) | func (r *reflectionResolver) cacheFileLocked(name string, seen []strin...
    method sendLocked (line 427) | func (r *reflectionResolver) sendLocked(req *reflectionv1.ServerReflec...
    method getStreamLocked (line 462) | func (r *reflectionResolver) getStreamLocked() (*reflectStream, bool) {
    method maybeCreateStreamLocked (line 471) | func (r *reflectionResolver) maybeCreateStreamLocked(client *reflectCl...
    method Reset (line 480) | func (r *reflectionResolver) Reset() {
    method resetLocked (line 486) | func (r *reflectionResolver) resetLocked() {
  function descriptorsInResponse (line 337) | func descriptorsInResponse(resp *reflectionv1.ServerReflectionResponse) ...
  function isNotImplemented (line 445) | func isNotImplemented(err error) bool {
  function send (line 451) | func send(stream *reflectStream, req *reflectionv1.ServerReflectionReque...
  function reset (line 497) | func reset(stream *reflectStream) {
  type extensionContainer (line 508) | type extensionContainer interface
  function registerExtensions (line 513) | func registerExtensions(reg *protoregistry.Types, descriptor extensionCo...
  function descriptorKind (line 526) | func descriptorKind(d protoreflect.Descriptor) string {

FILE: private/buf/bufcurl/resolver.go
  type Resolver (line 30) | type Resolver interface
  function ResolverForImage (line 36) | func ResolverForImage(image bufimage.Image) Resolver {
  function CombineResolvers (line 49) | func CombineResolvers(resolvers ...Resolver) Resolver {
  type imageResolver (line 60) | type imageResolver struct
    method ListServices (line 65) | func (i *imageResolver) ListServices() ([]protoreflect.FullName, error) {
  type combinedResolver (line 82) | type combinedResolver struct
    method ListServices (line 87) | func (c *combinedResolver) ListServices() ([]protoreflect.FullName, er...
  function NewWKTResolver (line 106) | func NewWKTResolver(ctx context.Context, logger *slog.Logger) (Resolver,...

FILE: private/buf/bufcurl/tls.go
  type TLSSettings (line 29) | type TLSSettings struct
  function MakeVerboseTLSConfig (line 51) | func MakeVerboseTLSConfig(settings *TLSSettings, authority string, print...

FILE: private/buf/bufcurl/verbose_transport.go
  type skipUploadFinishedMessageKey (line 33) | type skipUploadFinishedMessageKey struct
  function skippingUploadFinishedMessage (line 35) | func skippingUploadFinishedMessage(ctx context.Context) context.Context {
  type userAgentKey (line 39) | type userAgentKey struct
  function withUserAgent (line 41) | func withUserAgent(ctx context.Context, headers http.Header) context.Con...
  function DefaultUserAgent (line 49) | func DefaultUserAgent(protocol string, bufVersion string) string {
  function NewVerboseHTTPClient (line 61) | func NewVerboseHTTPClient(transport http.RoundTripper, printer verbose.P...
  function TraceTrailersInterceptor (line 71) | func TraceTrailersInterceptor(printer verbose.Printer) connect.Intercept...
  type verboseClient (line 75) | type verboseClient struct
    method Do (line 83) | func (v *verboseClient) Do(req *http.Request) (*http.Response, error) {
    method traceRequest (line 145) | func (v *verboseClient) traceRequest(r *http.Request, reqNum int32) {
    method traceWriteRequestBytes (line 160) | func (v *verboseClient) traceWriteRequestBytes(reqNum int32, count int) {
    method traceResponse (line 164) | func (v *verboseClient) traceResponse(r *http.Response, reqNum int32) {
    method traceReadResponseBytes (line 170) | func (v *verboseClient) traceReadResponseBytes(reqNum int32, count int) {
  type reqNumAddrKey (line 81) | type reqNumAddrKey struct
  function traceMetadata (line 174) | func traceMetadata(printer verbose.Printer, meta http.Header, prefix str...
  function traceTrailers (line 188) | func traceTrailers(printer verbose.Printer, trailers http.Header, synthe...
  type verboseReader (line 201) | type verboseReader struct
    method Read (line 210) | func (v *verboseReader) Read(dest []byte) (n int, err error) {
    method Close (line 226) | func (v *verboseReader) Close() error {
  type traceTrailersInterceptor (line 238) | type traceTrailersInterceptor struct
    method WrapUnary (line 242) | func (t traceTrailersInterceptor) WrapUnary(unaryFunc connect.UnaryFun...
    method WrapStreamingClient (line 246) | func (t traceTrailersInterceptor) WrapStreamingClient(clientFunc conne...
    method WrapStreamingHandler (line 254) | func (t traceTrailersInterceptor) WrapStreamingHandler(handlerFunc con...
  type traceTrailersStream (line 258) | type traceTrailersStream struct
    method Receive (line 265) | func (s *traceTrailersStream) Receive(msg any) error {

FILE: private/buf/buffetch/buffetch.go
  constant MessageEncodingBinpb (line 38) | MessageEncodingBinpb MessageEncoding = iota + 1
  constant MessageEncodingJSON (line 40) | MessageEncodingJSON
  constant MessageEncodingTxtpb (line 42) | MessageEncodingTxtpb
  constant MessageEncodingYAML (line 44) | MessageEncodingYAML
  constant useProtoNamesKey (line 46) | useProtoNamesKey  = "use_proto_names"
  constant useEnumNumbersKey (line 47) | useEnumNumbersKey = "use_enum_numbers"
  type MessageEncoding (line 90) | type MessageEncoding
  type Ref (line 93) | type Ref interface
  type MessageRef (line 98) | type MessageRef interface
  type SourceOrModuleRef (line 114) | type SourceOrModuleRef interface
  type DirOrProtoFileRef (line 120) | type DirOrProtoFileRef interface
  type SourceRef (line 125) | type SourceRef interface
  type DirRef (line 131) | type DirRef interface
  type ModuleRef (line 139) | type ModuleRef interface
  type ProtoFileRef (line 145) | type ProtoFileRef interface
  type MessageRefParser (line 156) | type MessageRefParser interface
  type SourceRefParser (line 167) | type SourceRefParser interface
  type DirRefParser (line 178) | type DirRefParser interface
  type DirOrProtoFileRefParser (line 193) | type DirOrProtoFileRefParser interface
  type ModuleRefParser (line 208) | type ModuleRefParser interface
  type SourceOrModuleRefParser (line 216) | type SourceOrModuleRefParser interface
  type RefParser (line 230) | type RefParser interface
  function NewRefParser (line 246) | func NewRefParser(logger *slog.Logger) RefParser {
  function NewMessageRefParser (line 251) | func NewMessageRefParser(logger *slog.Logger, options ...MessageRefParse...
  type MessageRefParserOption (line 256) | type MessageRefParserOption
  function MessageRefParserWithDefaultMessageEncoding (line 261) | func MessageRefParserWithDefaultMessageEncoding(defaultMessageEncoding M...
  function NewSourceRefParser (line 270) | func NewSourceRefParser(logger *slog.Logger) SourceRefParser {
  function NewDirRefParser (line 275) | func NewDirRefParser(logger *slog.Logger) DirRefParser {
  function NewDirOrProtoFileRefParser (line 280) | func NewDirOrProtoFileRefParser(logger *slog.Logger) DirOrProtoFileRefPa...
  function NewModuleRefParser (line 285) | func NewModuleRefParser(logger *slog.Logger) ModuleRefParser {
  function NewSourceOrModuleRefParser (line 292) | func NewSourceOrModuleRefParser(logger *slog.Logger) SourceOrModuleRefPa...
  type BucketExtender (line 297) | type BucketExtender
  type ReadBucketCloser (line 300) | type ReadBucketCloser
  type ReadWriteBucket (line 303) | type ReadWriteBucket
  type MessageReader (line 306) | type MessageReader interface
  type SourceReader (line 318) | type SourceReader interface
  type GetReadBucketCloserOption (line 329) | type GetReadBucketCloserOption
  function GetReadBucketCloserWithCopyToInMemory (line 333) | func GetReadBucketCloserWithCopyToInMemory() GetReadBucketCloserOption {
  function GetReadBucketCloserWithNoSearch (line 343) | func GetReadBucketCloserWithNoSearch() GetReadBucketCloserOption {
  function GetReadBucketCloserWithTargetPaths (line 351) | func GetReadBucketCloserWithTargetPaths(targetPaths []string) GetReadBuc...
  function GetReadBucketCloserWithTargetExcludePaths (line 359) | func GetReadBucketCloserWithTargetExcludePaths(targetExcludePaths []stri...
  type DirReader (line 366) | type DirReader interface
  type GetReadWriteBucketOption (line 377) | type GetReadWriteBucketOption
  function GetReadWriteBucketWithNoSearch (line 383) | func GetReadWriteBucketWithNoSearch() GetReadWriteBucketOption {
  function GetReadWriteBucketWithTargetPaths (line 391) | func GetReadWriteBucketWithTargetPaths(targetPaths []string) GetReadWrit...
  function GetReadWriteBucketWithTargetExcludePaths (line 399) | func GetReadWriteBucketWithTargetExcludePaths(targetExcludePaths []strin...
  type ModuleFetcher (line 406) | type ModuleFetcher interface
  type Reader (line 417) | type Reader interface
  function NewReader (line 425) | func NewReader(
  function NewMessageReader (line 444) | func NewMessageReader(
  function NewSourceReader (line 461) | func NewSourceReader(
  function NewDirReader (line 478) | func NewDirReader(
  function NewModuleFetcher (line 489) | func NewModuleFetcher(
  type Writer (line 502) | type Writer interface
  function NewWriter (line 512) | func NewWriter(
  type ProtoFileWriter (line 521) | type ProtoFileWriter interface
  function NewProtoFileWriter (line 531) | func NewProtoFileWriter(
  function GetInputConfigForString (line 540) | func GetInputConfigForString(
  type getReadBucketCloserOptions (line 579) | type getReadBucketCloserOptions struct
  function newGetReadBucketCloserOptions (line 586) | func newGetReadBucketCloserOptions() *getReadBucketCloserOptions {
  type getReadWriteBucketOptions (line 590) | type getReadWriteBucketOptions struct
  function newGetReadWriteBucketOptions (line 596) | func newGetReadWriteBucketOptions() *getReadWriteBucketOptions {

FILE: private/buf/buffetch/buffetch_test.go
  function TestRoundTripBin (line 30) | func TestRoundTripBin(t *testing.T) {
  function TestRoundTripBinGz (line 41) | func TestRoundTripBinGz(t *testing.T) {
  function TestRoundTripBinZst (line 52) | func TestRoundTripBinZst(t *testing.T) {
  function TestRoundTripBinpb (line 63) | func TestRoundTripBinpb(t *testing.T) {
  function TestRoundTripBinpbGz (line 74) | func TestRoundTripBinpbGz(t *testing.T) {
  function TestRoundTripBinpbZst (line 85) | func TestRoundTripBinpbZst(t *testing.T) {
  function testRoundTripLocalFile (line 96) | func testRoundTripLocalFile(
  function testNewFetchReader (line 136) | func testNewFetchReader(logger *slog.Logger) internal.Reader {
  function testNewFetchWriter (line 145) | func testNewFetchWriter(logger *slog.Logger) internal.Writer {

FILE: private/buf/buffetch/dir_ref.go
  type dirRef (line 23) | type dirRef struct
    method DirPath (line 33) | func (r *dirRef) DirPath() string {
    method internalRef (line 37) | func (r *dirRef) internalRef() internal.Ref {
    method internalBucketRef (line 41) | func (r *dirRef) internalBucketRef() internal.BucketRef {
    method internalDirRef (line 45) | func (r *dirRef) internalDirRef() internal.DirRef {
    method isSourceOrModuleRef (line 49) | func (*dirRef) isSourceOrModuleRef() {}
    method isDirOrProtoFileRef (line 51) | func (*dirRef) isDirOrProtoFileRef() {}
  function newDirRef (line 27) | func newDirRef(iDirRef internal.DirRef) *dirRef {

FILE: private/buf/buffetch/format.go
  constant formatBinpb (line 19) | formatBinpb = "binpb"
  constant formatTxtpb (line 21) | formatTxtpb = "txtpb"
  constant formatDir (line 23) | formatDir = "dir"
  constant formatGit (line 25) | formatGit = "git"
  constant formatJSON (line 27) | formatJSON = "json"
  constant formatYAML (line 29) | formatYAML = "yaml"
  constant formatMod (line 31) | formatMod = "mod"
  constant formatTar (line 33) | formatTar = "tar"
  constant formatZip (line 35) | formatZip = "zip"
  constant formatProtoFile (line 37) | formatProtoFile = "protofile"
  constant formatBin (line 40) | formatBin = "bin"
  constant formatBingz (line 42) | formatBingz = "bingz"
  constant formatJSONGZ (line 44) | formatJSONGZ = "jsongz"
  constant formatTargz (line 46) | formatTargz = "targz"

FILE: private/buf/buffetch/internal/archive_ref.go
  type archiveRef (line 23) | type archiveRef struct
    method Format (line 91) | func (r *archiveRef) Format() string {
    method Path (line 95) | func (r *archiveRef) Path() string {
    method FileScheme (line 99) | func (r *archiveRef) FileScheme() FileScheme {
    method ArchiveType (line 103) | func (r *archiveRef) ArchiveType() ArchiveType {
    method CompressionType (line 107) | func (r *archiveRef) CompressionType() CompressionType {
    method StripComponents (line 111) | func (r *archiveRef) StripComponents() uint32 {
    method SubDirPath (line 115) | func (r *archiveRef) SubDirPath() string {
    method ref (line 119) | func (*archiveRef) ref()        {}
    method fileRef (line 120) | func (*archiveRef) fileRef()    {}
    method bucketRef (line 121) | func (*archiveRef) bucketRef()  {}
    method archiveRef (line 122) | func (*archiveRef) archiveRef() {}
  function newArchiveRef (line 33) | func newArchiveRef(
  function newDirectArchiveRef (line 71) | func newDirectArchiveRef(

FILE: private/buf/buffetch/internal/dir_ref.go
  type dirRef (line 29) | type dirRef struct
    method Format (line 70) | func (r *dirRef) Format() string {
    method Path (line 74) | func (r *dirRef) Path() string {
    method ref (line 78) | func (*dirRef) ref()       {}
    method bucketRef (line 79) | func (*dirRef) bucketRef() {}
    method dirRef (line 80) | func (*dirRef) dirRef()    {}
  function newDirRef (line 34) | func newDirRef(
  function newDirectDirRef (line 60) | func newDirectDirRef(

FILE: private/buf/buffetch/internal/errors.go
  function NewFormatNotAllowedError (line 32) | func NewFormatNotAllowedError(format string, allowedFormats map[string]s...
  function NewFormatCannotBeDeterminedError (line 37) | func NewFormatCannotBeDeterminedError(value string) error {
  function NewCannotSpecifyGitBranchAndCommitOrTagError (line 42) | func NewCannotSpecifyGitBranchAndCommitOrTagError() error {
  function NewCannotSpecifyCommitOrTagWithRefError (line 47) | func NewCannotSpecifyCommitOrTagWithRefError() error {
  function NewDepthParseError (line 52) | func NewDepthParseError(s string) error {
  function NewDepthZeroError (line 57) | func NewDepthZeroError() error {
  function NewPathUnknownGzError (line 62) | func NewPathUnknownGzError(path string) error {
  function NewCompressionUnknownError (line 67) | func NewCompressionUnknownError(compression string) error {
  function NewCannotSpecifyCompressionForZipError (line 72) | func NewCannotSpecifyCompressionForZipError() error {
  function NewNoPathError (line 77) | func NewNoPathError() error {
  function NewOptionsInvalidKeysError (line 82) | func NewOptionsInvalidKeysError(keys ...string) error {
  function NewOptionsInvalidValueForKeyError (line 90) | func NewOptionsInvalidValueForKeyError(key string, value string) error {
  function NewOptionsInvalidForFormatError (line 95) | func NewOptionsInvalidForFormatError(format string, inputName string, is...
  function NewOptionsCouldNotParseStripComponentsError (line 100) | func NewOptionsCouldNotParseStripComponentsError(s string) error {
  function NewOptionsCouldNotParseRecurseSubmodulesError (line 105) | func NewOptionsCouldNotParseRecurseSubmodulesError(s string) error {
  function NewFormatOverrideNotAllowedForDevNullError (line 110) | func NewFormatOverrideNotAllowedForDevNullError(devNull string) error {
  function NewInvalidPathError (line 115) | func NewInvalidPathError(format string, path string) error {
  function NewProtoFileCannotBeDevPathError (line 123) | func NewProtoFileCannotBeDevPathError(format string, path string) error {
  function NewRealCleanPathError (line 131) | func NewRealCleanPathError(path string) error {
  function NewFormatUnknownError (line 136) | func NewFormatUnknownError(formatString string) error {
  function NewReadDisabledError (line 141) | func NewReadDisabledError(scheme string) error {
  function NewReadHTTPDisabledError (line 146) | func NewReadHTTPDisabledError() error {
  function NewReadGitDisabledError (line 151) | func NewReadGitDisabledError() error {
  function NewReadLocalDisabledError (line 156) | func NewReadLocalDisabledError() error {
  function NewReadStdioDisabledError (line 161) | func NewReadStdioDisabledError() error {
  function NewReadModuleDisabledError (line 166) | func NewReadModuleDisabledError() error {
  function NewWriteDisabledError (line 171) | func NewWriteDisabledError(scheme string) error {
  function NewWriteHTTPDisabledError (line 176) | func NewWriteHTTPDisabledError() error {
  function NewWriteLocalDisabledError (line 181) | func NewWriteLocalDisabledError() error {
  function NewWriteStdioDisabledError (line 186) | func NewWriteStdioDisabledError() error {
  function newValueEmptyError (line 190) | func newValueEmptyError() error {
  function newValueMultipleHashtagsError (line 194) | func newValueMultipleHashtagsError(value string) error {
  function newValueStartsWithHashtagError (line 198) | func newValueStartsWithHashtagError(value string) error {
  function newValueEndsWithHashtagError (line 202) | func newValueEndsWithHashtagError(value string) error {
  function newOptionsInvalidError (line 206) | func newOptionsInvalidError(s string) error {
  function newOptionsDuplicateKeyError (line 210) | func newOptionsDuplicateKeyError(key string) error {

FILE: private/buf/buffetch/internal/git_ref.go
  type gitRef (line 37) | type gitRef struct
    method Format (line 105) | func (r *gitRef) Format() string {
    method Path (line 109) | func (r *gitRef) Path() string {
    method GitScheme (line 113) | func (r *gitRef) GitScheme() GitScheme {
    method GitName (line 117) | func (r *gitRef) GitName() git.Name {
    method Depth (line 121) | func (r *gitRef) Depth() uint32 {
    method RecurseSubmodules (line 125) | func (r *gitRef) RecurseSubmodules() bool {
    method SubDirPath (line 129) | func (r *gitRef) SubDirPath() string {
    method Filter (line 133) | func (r *gitRef) Filter() string {
    method ref (line 137) | func (*gitRef) ref()       {}
    method bucketRef (line 138) | func (*gitRef) bucketRef() {}
    method gitRef (line 139) | func (*gitRef) gitRef()    {}
  function newGitRef (line 48) | func newGitRef(
  function newDirectGitRef (line 83) | func newDirectGitRef(
  function getGitSchemeAndPath (line 141) | func getGitSchemeAndPath(format string, path string) (GitScheme, string,...

FILE: private/buf/buffetch/internal/internal.go
  constant FileSchemeHTTP (line 38) | FileSchemeHTTP FileScheme = iota + 1
  constant FileSchemeHTTPS (line 40) | FileSchemeHTTPS
  constant FileSchemeLocal (line 42) | FileSchemeLocal
  constant FileSchemeStdio (line 47) | FileSchemeStdio
  constant FileSchemeStdin (line 49) | FileSchemeStdin
  constant FileSchemeStdout (line 51) | FileSchemeStdout
  constant FileSchemeNull (line 53) | FileSchemeNull
  constant GitSchemeHTTP (line 56) | GitSchemeHTTP GitScheme = iota + 1
  constant GitSchemeHTTPS (line 58) | GitSchemeHTTPS
  constant GitSchemeLocal (line 60) | GitSchemeLocal
  constant GitSchemeSSH (line 62) | GitSchemeSSH
  constant GitSchemeGit (line 64) | GitSchemeGit
  constant ArchiveTypeTar (line 67) | ArchiveTypeTar ArchiveType = iota + 1
  constant ArchiveTypeZip (line 69) | ArchiveTypeZip
  constant CompressionTypeNone (line 72) | CompressionTypeNone CompressionType = iota + 1
  constant CompressionTypeGzip (line 74) | CompressionTypeGzip
  constant CompressionTypeZstd (line 76) | CompressionTypeZstd
  type FileScheme (line 80) | type FileScheme
  type GitScheme (line 83) | type GitScheme
  type ArchiveType (line 86) | type ArchiveType
  type CompressionType (line 89) | type CompressionType
    method String (line 92) | func (c CompressionType) String() string {
  type Ref (line 106) | type Ref interface
  type FileRef (line 111) | type FileRef interface
  type BucketRef (line 125) | type BucketRef interface
  type SingleRef (line 131) | type SingleRef interface
  function NewSingleRef (line 138) | func NewSingleRef(path string, compressionType CompressionType) (SingleR...
  type ArchiveRef (line 146) | type ArchiveRef interface
  function NewArchiveRef (line 158) | func NewArchiveRef(
  type DirRef (line 169) | type DirRef interface
  function NewDirRef (line 179) | func NewDirRef(path string) (DirRef, error) {
  type ProtoFileRef (line 184) | type ProtoFileRef interface
  type GitRef (line 195) | type GitRef interface
  function NewGitRef (line 216) | func NewGitRef(
  type ModuleRef (line 228) | type ModuleRef interface
  type HasFormat (line 235) | type HasFormat interface
  type ParsedRef (line 240) | type ParsedRef interface
  type ParsedFileRef (line 246) | type ParsedFileRef interface
  type ParsedBucketRef (line 252) | type ParsedBucketRef interface
  type ParsedSingleRef (line 258) | type ParsedSingleRef interface
  function NewDirectParsedSingleRef (line 266) | func NewDirectParsedSingleRef(
  type ParsedArchiveRef (line 283) | type ParsedArchiveRef interface
  function NewDirectParsedArchiveRef (line 291) | func NewDirectParsedArchiveRef(
  type ParsedDirRef (line 312) | type ParsedDirRef interface
  function NewDirectParsedDirRef (line 320) | func NewDirectParsedDirRef(format string, path string) ParsedDirRef {
  type ParsedProtoFileRef (line 325) | type ParsedProtoFileRef interface
  function NewDirectParsedProtoFileRef (line 333) | func NewDirectParsedProtoFileRef(
  type ParsedGitRef (line 343) | type ParsedGitRef interface
  function NewDirectParsedGitRef (line 351) | func NewDirectParsedGitRef(
  type ParsedModuleRef (line 374) | type ParsedModuleRef interface
  function NewDirectParsedModuleRef (line 382) | func NewDirectParsedModuleRef(
  type RefParser (line 393) | type RefParser interface
  function NewRefParser (line 409) | func NewRefParser(logger *slog.Logger, options ...RefParserOption) RefPa...
  type BucketExtender (line 414) | type BucketExtender interface
  type ReadBucketCloser (line 424) | type ReadBucketCloser interface
  type ReadWriteBucket (line 430) | type ReadWriteBucket interface
  type Reader (line 436) | type Reader interface
  function NewReader (line 470) | func NewReader(
  type Writer (line 483) | type Writer interface
  function NewWriter (line 494) | func NewWriter(
  type ProtoFileWriter (line 505) | type ProtoFileWriter interface
  function NewProtoFileWriter (line 515) | func NewProtoFileWriter(
  type RawRef (line 530) | type RawRef struct
  type RefParserOption (line 582) | type RefParserOption
  function WithRawRefProcessor (line 588) | func WithRawRefProcessor(rawRefProcessor func(*RawRef) error) RefParserO...
  function WithSingleFormat (line 597) | func WithSingleFormat(format string, options ...SingleFormatOption) RefP...
  function WithArchiveFormat (line 614) | func WithArchiveFormat(format string, archiveType ArchiveType, options ....
  function WithDirFormat (line 631) | func WithDirFormat(format string, options ...DirFormatOption) RefParserO...
  function WithGitFormat (line 648) | func WithGitFormat(format string, options ...GitFormatOption) RefParserO...
  function WithModuleFormat (line 665) | func WithModuleFormat(format string, options ...ModuleFormatOption) RefP...
  function WithProtoFileFormat (line 682) | func WithProtoFileFormat(format string, options ...ProtoFileFormatOption...
  type SingleFormatOption (line 697) | type SingleFormatOption
  function WithSingleDefaultCompressionType (line 700) | func WithSingleDefaultCompressionType(defaultCompressionType Compression...
  function WithSingleCustomOptionKey (line 707) | func WithSingleCustomOptionKey(key string) SingleFormatOption {
  type ArchiveFormatOption (line 714) | type ArchiveFormatOption
  function WithArchiveDefaultCompressionType (line 719) | func WithArchiveDefaultCompressionType(defaultCompressionType Compressio...
  type DirFormatOption (line 726) | type DirFormatOption
  type GitFormatOption (line 729) | type GitFormatOption
  type ModuleFormatOption (line 732) | type ModuleFormatOption
  type ReaderOption (line 735) | type ReaderOption
  type ProtoFileFormatOption (line 738) | type ProtoFileFormatOption
  function WithReaderHTTP (line 741) | func WithReaderHTTP(httpClient *http.Client, httpAuthenticator httpauth....
  function WithReaderGit (line 750) | func WithReaderGit(gitCloner git.Cloner) ReaderOption {
  function WithReaderModule (line 758) | func WithReaderModule(
  function WithReaderLocal (line 768) | func WithReaderLocal() ReaderOption {
  function WithReaderStdio (line 775) | func WithReaderStdio() ReaderOption {
  type WriterOption (line 782) | type WriterOption
  function WithWriterLocal (line 785) | func WithWriterLocal() WriterOption {
  function WithWriterStdio (line 792) | func WithWriterStdio() WriterOption {
  type GetParsedRefOption (line 799) | type GetParsedRefOption
  function WithAllowedFormats (line 802) | func WithAllowedFormats(formats ...string) GetParsedRefOption {
  type GetFileOption (line 811) | type GetFileOption
  function WithGetFileKeepFileCompression (line 814) | func WithGetFileKeepFileCompression() GetFileOption {
  type GetReadBucketCloserOption (line 821) | type GetReadBucketCloserOption
  function WithGetReadBucketCloserCopyToInMemory (line 825) | func WithGetReadBucketCloserCopyToInMemory() GetReadBucketCloserOption {
  function WithGetReadBucketCloserTerminateFunc (line 838) | func WithGetReadBucketCloserTerminateFunc(terminateFunc buftarget.Termin...
  function WithGetReadBucketCloserTargetPaths (line 845) | func WithGetReadBucketCloserTargetPaths(targetPaths []string) GetReadBuc...
  function WithGetReadBucketCloserTargetExcludePaths (line 852) | func WithGetReadBucketCloserTargetExcludePaths(targetExcludePaths []stri...
  type GetReadWriteBucketOption (line 859) | type GetReadWriteBucketOption
  function WithGetReadWriteBucketTerminateFunc (line 868) | func WithGetReadWriteBucketTerminateFunc(terminateFunc buftarget.Termina...
  function WithGetReadWriteBucketTargetPaths (line 875) | func WithGetReadWriteBucketTargetPaths(targetPaths []string) GetReadWrit...
  function WithGetReadWriteBucketTargetExcludePaths (line 882) | func WithGetReadWriteBucketTargetExcludePaths(targetExcludePaths []strin...
  type PutFileOption (line 889) | type PutFileOption
  function WithPutFileNoFileCompression (line 892) | func WithPutFileNoFileCompression() PutFileOption {
  type GetModuleOption (line 899) | type GetModuleOption
  function GetInputConfigForRef (line 904) | func GetInputConfigForRef(ref Ref, value string) (bufconfig.InputConfig,...
  function toPointer (line 956) | func toPointer[T any](value T) *T {

FILE: private/buf/buffetch/internal/module_ref.go
  type moduleRef (line 28) | type moduleRef struct
    method Format (line 64) | func (r *moduleRef) Format() string {
    method ModuleRef (line 68) | func (r *moduleRef) ModuleRef() bufparse.Ref {
    method ref (line 72) | func (*moduleRef) ref()       {}
    method bucketRef (line 73) | func (*moduleRef) bucketRef() {}
    method moduleRef (line 74) | func (*moduleRef) moduleRef() {}
  function newModuleRef (line 33) | func newModuleRef(
  function newDirectModuleRef (line 57) | func newDirectModuleRef(format string, iModuleRef bufparse.Ref) *moduleR...

FILE: private/buf/buffetch/internal/proto_file_ref.go
  type protoFileRef (line 23) | type protoFileRef struct
    method Format (line 83) | func (s *protoFileRef) Format() string {
    method Path (line 87) | func (s *protoFileRef) Path() string {
    method FileScheme (line 91) | func (s *protoFileRef) FileScheme() FileScheme {
    method IncludePackageFiles (line 95) | func (s *protoFileRef) IncludePackageFiles() bool {
    method ref (line 99) | func (*protoFileRef) ref()          {}
    method bucketRef (line 100) | func (*protoFileRef) bucketRef()    {}
    method protoFileRef (line 101) | func (*protoFileRef) protoFileRef() {}
  function newProtoFileRef (line 30) | func newProtoFileRef(format string, path string, includePackageFiles boo...
  function newDirectProtoFileRef (line 74) | func newDirectProtoFileRef(format string, path string, fileScheme FileSc...

FILE: private/buf/buffetch/internal/proto_file_writer.go
  type protoFileWriter (line 30) | type protoFileWriter struct
    method PutProtoFile (line 42) | func (w *protoFileWriter) PutProtoFile(
  function newProtoFileWriter (line 34) | func newProtoFileWriter(
  function createDirIfNotExists (line 75) | func createDirIfNotExists(dirPath string) error {

FILE: private/buf/buffetch/internal/read_bucket_closer.go
  type readBucketCloser (line 28) | type readBucketCloser struct
    method SubDirPath (line 54) | func (r *readBucketCloser) SubDirPath() string {
    method copyToInMemory (line 58) | func (r *readBucketCloser) copyToInMemory(ctx context.Context) (*readB...
  function newReadBucketCloser (line 34) | func newReadBucketCloser(
  function newReadBucketCloserForReadWriteBucket (line 45) | func newReadBucketCloserForReadWriteBucket(
  type compositeStorageReadBucketCloser (line 72) | type compositeStorageReadBucketCloser struct
    method Close (line 77) | func (c compositeStorageReadBucketCloser) Close() error {

FILE: private/buf/buffetch/internal/read_write_bucket.go
  type readWriteBucket (line 25) | type readWriteBucket struct
    method SubDirPath (line 43) | func (r *readWriteBucket) SubDirPath() string {
  function newReadWriteBucket (line 31) | func newReadWriteBucket(

FILE: private/buf/buffetch/internal/reader.go
  type reader (line 48) | type reader struct
    method GetFile (line 81) | func (r *reader) GetFile(
    method GetReadBucketCloser (line 111) | func (r *reader) GetReadBucketCloser(
    method GetReadWriteBucket (line 182) | func (r *reader) GetReadWriteBucket(
    method GetModuleKey (line 202) | func (r *reader) GetModuleKey(
    method getSingle (line 220) | func (r *reader) getSingle(
    method getArchiveFile (line 230) | func (r *reader) getArchiveFile(
    method getArchiveBucket (line 240) | func (r *reader) getArchiveBucket(
    method getDirBucket (line 305) | func (r *reader) getDirBucket(
    method getProtoFileBucket (line 327) | func (r *reader) getProtoFileBucket(
    method getGitBucket (line 345) | func (r *reader) getGitBucket(
    method getModuleKey (line 390) | func (r *reader) getModuleKey(
    method getFileReadCloserAndSize (line 415) | func (r *reader) getFileReadCloserAndSize(
    method getFileReadCloserAndSizePotentiallyCompressed (line 467) | func (r *reader) getFileReadCloserAndSizePotentiallyCompressed(
    method getFileReadCloserAndSizePotentiallyCompressedHTTP (line 511) | func (r *reader) getFileReadCloserAndSizePotentiallyCompressedHTTP(
  function newReader (line 66) | func newReader(
  function getGitURL (line 544) | func getGitURL(gitRef GitRef) (string, error) {
  function getReadBucketCloserForBucket (line 566) | func getReadBucketCloserForBucket(
  function getReadWriteBucketForOS (line 626) | func getReadWriteBucketForOS(
  function getReadBucketCloserForOSProtoFile (line 807) | func getReadBucketCloserForOSProtoFile(
  function getPWDFSRelPath (line 836) | func getPWDFSRelPath() (string, error) {
  function fsRootAndFSRelPathForPath (line 850) | func fsRootAndFSRelPathForPath(path string) (string, string, error) {
  function attemptToFixOSRootBucketPathErrors (line 872) | func attemptToFixOSRootBucketPathErrors(fsRoot string, err error) error {
  function validatePaths (line 896) | func validatePaths(
  function mapTargetPathsAndTargetExcludePathsForArchiveAndGitRefs (line 919) | func mapTargetPathsAndTargetExcludePathsForArchiveAndGitRefs(
  type getFileOptions (line 942) | type getFileOptions struct
  function newGetFileOptions (line 946) | func newGetFileOptions() *getFileOptions {
  type getReadBucketCloserOptions (line 950) | type getReadBucketCloserOptions struct
  function newGetReadBucketCloserOptions (line 957) | func newGetReadBucketCloserOptions() *getReadBucketCloserOptions {
  type getReadWriteBucketOptions (line 961) | type getReadWriteBucketOptions struct
  function newGetReadWriteBucketOptions (line 967) | func newGetReadWriteBucketOptions() *getReadWriteBucketOptions {
  type getModuleOptions (line 971) | type getModuleOptions struct

FILE: private/buf/buffetch/internal/reader_test.go
  function TestGetReadBucketCloserForBucketNoTerminateFileName (line 32) | func TestGetReadBucketCloserForBucketNoTerminateFileName(t *testing.T) {
  function TestGetReadBucketCloserTerminateFileName (line 51) | func TestGetReadBucketCloserTerminateFileName(t *testing.T) {
  function TestGetReadBucketCloserForBucketNoSubDirPath (line 73) | func TestGetReadBucketCloserForBucketNoSubDirPath(t *testing.T) {
  function TestGetReadBucketCloserForBucketAbs (line 95) | func TestGetReadBucketCloserForBucketAbs(t *testing.T) {
  function TestGetReadWriteBucketForOSNoTerminateFileName (line 119) | func TestGetReadWriteBucketForOSNoTerminateFileName(t *testing.T) {
  function TestGetReadWriteBucketForOSTerminateFileName (line 139) | func TestGetReadWriteBucketForOSTerminateFileName(t *testing.T) {
  function TestGetReadWriteBucketForOSParentPwd (line 162) | func TestGetReadWriteBucketForOSParentPwd(t *testing.T) {
  function TestGetReadWriteBucketForOSAbsPwd (line 196) | func TestGetReadWriteBucketForOSAbsPwd(t *testing.T) {
  function TestGetReadBucketCloserForOSProtoFileNoWorkspaceTerminateFileName (line 232) | func TestGetReadBucketCloserForOSProtoFileNoWorkspaceTerminateFileName(t...
  function TestGetReadBucketCloserForOSProtoFileTerminateFileName (line 253) | func TestGetReadBucketCloserForOSProtoFileTerminateFileName(t *testing.T) {
  function TestGetReadBucketCloserForOSProtoFileParentPwd (line 277) | func TestGetReadBucketCloserForOSProtoFileParentPwd(t *testing.T) {
  function TestGetReadBucketCloserForOSProtoFileAbsPwd (line 312) | func TestGetReadBucketCloserForOSProtoFileAbsPwd(t *testing.T) {
  function TestGetReadBucketCloserForOSProtoFileNoBufYAMLTerminateFileName (line 349) | func TestGetReadBucketCloserForOSProtoFileNoBufYAMLTerminateFileName(t *...
  function TestGetReadBucketCloserForOSProtoFileNoBufYAMLParentPwd (line 370) | func TestGetReadBucketCloserForOSProtoFileNoBufYAMLParentPwd(t *testing....
  function TestGetReadBucketCloserForOSProtoFileNoBufYAMLAbsPwd (line 405) | func TestGetReadBucketCloserForOSProtoFileNoBufYAMLAbsPwd(t *testing.T) {
  function testNewTerminateAtFileNamesFunc (line 443) | func testNewTerminateAtFileNamesFunc(terminateFileNames ...string) bufta...

FILE: private/buf/buffetch/internal/ref_parser.go
  type refParser (line 31) | type refParser struct
    method GetParsedRef (line 58) | func (a *refParser) GetParsedRef(
    method GetParsedRefForInputConfig (line 70) | func (a *refParser) GetParsedRefForInputConfig(
    method getParsedRef (line 82) | func (a *refParser) getParsedRef(
    method getParsedRefForInputConfig (line 99) | func (a *refParser) getParsedRefForInputConfig(
    method getRawRef (line 111) | func (a *refParser) getRawRef(
    method getRawRefForInputConfig (line 205) | func (a *refParser) getRawRefForInputConfig(
    method parseRawRef (line 282) | func (a *refParser) parseRawRef(
    method validateRawRef (line 332) | func (a *refParser) validateRawRef(
  function newRefParser (line 42) | func newRefParser(logger *slog.Logger, options ...RefParserOption) *refP...
  function parseCompressionType (line 379) | func parseCompressionType(value string) (CompressionType, error) {
  function parseGitDepth (line 392) | func parseGitDepth(value string) (uint32, error) {
  function parseSubDirPath (line 403) | func parseSubDirPath(value string) (string, error) {
  function getRawPathAndOptions (line 416) | func getRawPathAndOptions(value string) (string, map[string]string, erro...
  function getSingleRef (line 456) | func getSingleRef(
  function getArchiveRef (line 482) | func getArchiveRef(
  function getDirRef (line 501) | func getDirRef(
  function getGitRef (line 510) | func getGitRef(
  function getModuleRef (line 528) | func getModuleRef(
  function getGitRefName (line 537) | func getGitRefName(path string, branch string, commitOrTag string, ref s...
  function getProtoFileRef (line 561) | func getProtoFileRef(rawRef *RawRef) (ParsedProtoFileRef, error) {
  type singleFormatInfo (line 571) | type singleFormatInfo struct
  function newSingleFormatInfo (line 576) | func newSingleFormatInfo() *singleFormatInfo {
  type archiveFormatInfo (line 583) | type archiveFormatInfo struct
  function newArchiveFormatInfo (line 588) | func newArchiveFormatInfo(archiveType ArchiveType) *archiveFormatInfo {
  type dirFormatInfo (line 595) | type dirFormatInfo struct
  function newDirFormatInfo (line 597) | func newDirFormatInfo() *dirFormatInfo {
  type gitFormatInfo (line 601) | type gitFormatInfo struct
  function newGitFormatInfo (line 603) | func newGitFormatInfo() *gitFormatInfo {
  type moduleFormatInfo (line 607) | type moduleFormatInfo struct
  function newModuleFormatInfo (line 609) | func newModuleFormatInfo() *moduleFormatInfo {
  type getParsedRefOptions (line 613) | type getParsedRefOptions struct
  type protoFileFormatInfo (line 617) | type protoFileFormatInfo struct
  function newProtoFileFormatInfo (line 619) | func newProtoFileFormatInfo() *protoFileFormatInfo {
  function newGetParsedRefOptions (line 623) | func newGetParsedRefOptions() *getParsedRefOptions {

FILE: private/buf/buffetch/internal/ref_parser_test.go
  function TestGetRawPathAndOptionsError (line 23) | func TestGetRawPathAndOptionsError(t *testing.T) {
  function testGetRawPathAndOptionsError (line 77) | func testGetRawPathAndOptionsError(

FILE: private/buf/buffetch/internal/single_ref.go
  type singleRef (line 34) | type singleRef struct
    method Format (line 139) | func (r *singleRef) Format() string {
    method Path (line 143) | func (r *singleRef) Path() string {
    method FileScheme (line 147) | func (r *singleRef) FileScheme() FileScheme {
    method CompressionType (line 151) | func (r *singleRef) CompressionType() CompressionType {
    method CustomOptionValue (line 155) | func (r *singleRef) CustomOptionValue(key string) (string, bool) {
    method ref (line 160) | func (*singleRef) ref()       {}
    method fileRef (line 161) | func (*singleRef) fileRef()   {}
    method singleRef (line 162) | func (*singleRef) singleRef() {}
  function newSingleRef (line 42) | func newSingleRef(
  function newDirectSingleRef (line 120) | func newDirectSingleRef(

FILE: private/buf/buffetch/internal/util.go
  function normalizeFormat (line 22) | func normalizeFormat(format string) string {
  function formatsToString (line 26) | func formatsToString(formats map[string]struct{}) string {

FILE: private/buf/buffetch/internal/writer.go
  type writer (line 31) | type writer struct
    method PutFile (line 53) | func (w *writer) PutFile(
    method putSingle (line 83) | func (w *writer) putSingle(
    method putArchiveFile (line 92) | func (w *writer) putArchiveFile(
    method putFileWriteCloser (line 101) | func (w *writer) putFileWriteCloser(
    method putFileWriteCloserPotentiallyUncompressed (line 148) | func (w *writer) putFileWriteCloserPotentiallyUncompressed(
  function newWriter (line 40) | func newWriter(
  type putFileOptions (line 183) | type putFileOptions struct
  function newPutFileOptions (line 187) | func newPutFileOptions() *putFileOptions {

FILE: private/buf/buffetch/message_ref.go
  type messageRef (line 23) | type messageRef struct
    method MessageEncoding (line 50) | func (r *messageRef) MessageEncoding() MessageEncoding {
    method Path (line 54) | func (r *messageRef) Path() string {
    method UseProtoNames (line 58) | func (r *messageRef) UseProtoNames() bool {
    method UseEnumNumbers (line 62) | func (r *messageRef) UseEnumNumbers() bool {
    method IsNull (line 66) | func (r *messageRef) IsNull() bool {
    method internalRef (line 70) | func (r *messageRef) internalRef() internal.Ref {
    method internalSingleRef (line 74) | func (r *messageRef) internalSingleRef() internal.SingleRef {
  function newMessageRef (line 30) | func newMessageRef(
  function getTrueOrFalseForSingleRef (line 78) | func getTrueOrFalseForSingleRef(singleRef internal.SingleRef, key string...

FILE: private/buf/buffetch/module_ref.go
  type moduleRef (line 23) | type moduleRef struct
    method internalRef (line 33) | func (r *moduleRef) internalRef() internal.Ref {
    method internalModuleRef (line 37) | func (r *moduleRef) internalModuleRef() internal.ModuleRef {
    method isSourceOrModuleRef (line 41) | func (*moduleRef) isSourceOrModuleRef() {}
  function newModuleRef (line 27) | func newModuleRef(iModuleRef internal.ModuleRef) *moduleRef {

FILE: private/buf/buffetch/proto_file_ref.go
  type protoFileRef (line 23) | type protoFileRef struct
    method ProtoFilePath (line 33) | func (r *protoFileRef) ProtoFilePath() string {
    method IncludePackageFiles (line 37) | func (r *protoFileRef) IncludePackageFiles() bool {
    method IsDevPath (line 41) | func (r *protoFileRef) IsDevPath() bool {
    method internalRef (line 53) | func (r *protoFileRef) internalRef() internal.Ref {
    method internalBucketRef (line 57) | func (r *protoFileRef) internalBucketRef() internal.BucketRef {
    method internalProtoFileRef (line 61) | func (r *protoFileRef) internalProtoFileRef() internal.ProtoFileRef {
    method isSourceOrModuleRef (line 65) | func (*protoFileRef) isSourceOrModuleRef() {}
    method isDirOrProtoFileRef (line 67) | func (*protoFileRef) isDirOrProtoFileRef() {}
  function newProtoFileRef (line 27) | func newProtoFileRef(internalProtoFileRef internal.ProtoFileRef) *protoF...

FILE: private/buf/buffetch/proto_file_writer.go
  type protoFileWriter (line 26) | type protoFileWriter struct
    method PutProtoFile (line 40) | func (w *protoFileWriter) PutProtoFile(
  function newProtoFileWriter (line 30) | func newProtoFileWriter(

FILE: private/buf/buffetch/reader.go
  type reader (line 32) | type reader struct
    method GetMessageFile (line 138) | func (a *reader) GetMessageFile(
    method GetSourceReadBucketCloser (line 146) | func (a *reader) GetSourceReadBucketCloser(
    method GetDirReadWriteBucket (line 185) | func (a *reader) GetDirReadWriteBucket(
    method GetModuleKey (line 218) | func (a *reader) GetModuleKey(
  function newReader (line 36) | func newReader(
  function newMessageReader (line 64) | func newMessageReader(
  function newSourceReader (line 85) | func newSourceReader(
  function newDirReader (line 109) | func newDirReader(
  function newModuleFetcher (line 122) | func newModuleFetcher(

FILE: private/buf/buffetch/ref_parser.go
  type refParser (line 33) | type refParser struct
    method GetRef (line 222) | func (a *refParser) GetRef(
    method GetRefForInputConfig (line 252) | func (a *refParser) GetRefForInputConfig(
    method GetSourceOrModuleRef (line 282) | func (a *refParser) GetSourceOrModuleRef(
    method GetSourceOrModuleRefForInputConfig (line 308) | func (a *refParser) GetSourceOrModuleRefForInputConfig(
    method GetMessageRef (line 334) | func (a *refParser) GetMessageRef(
    method GetMessageRefForInputConfig (line 353) | func (a *refParser) GetMessageRefForInputConfig(
    method GetSourceRef (line 372) | func (a *refParser) GetSourceRef(
    method GetSourceRefForInputConfig (line 388) | func (a *refParser) GetSourceRefForInputConfig(
    method GetDirRef (line 404) | func (a *refParser) GetDirRef(
    method GetDirRefForInputConfig (line 420) | func (a *refParser) GetDirRefForInputConfig(
    method GetDirOrProtoFileRef (line 436) | func (a *refParser) GetDirOrProtoFileRef(
    method GetDirOrProtoFileRefForInputConfig (line 454) | func (a *refParser) GetDirOrProtoFileRefForInputConfig(
    method GetModuleRef (line 472) | func (a *refParser) GetModuleRef(
    method GetModuleRefForInputConfig (line 488) | func (a *refParser) GetModuleRefForInputConfig(
    method getParsedRef (line 505) | func (a *refParser) getParsedRef(
    method getParsedRefForInputConfig (line 522) | func (a *refParser) getParsedRefForInputConfig(
    method checkDeprecated (line 539) | func (a *refParser) checkDeprecated(parsedRef internal.ParsedRef) {
  function newRefParser (line 38) | func newRefParser(logger *slog.Logger) *refParser {
  function newMessageRefParser (line 92) | func newMessageRefParser(logger *slog.Logger, options ...MessageRefParse...
  function newSourceRefParser (line 131) | func newSourceRefParser(logger *slog.Logger) *refParser {
  function newDirRefParser (line 159) | func newDirRefParser(logger *slog.Logger) *refParser {
  function newDirOrProtoFileRefParser (line 170) | func newDirOrProtoFileRefParser(logger *slog.Logger) *refParser {
  function newModuleRefParser (line 182) | func newModuleRefParser(logger *slog.Logger) *refParser {
  function newSourceOrModuleRefParser (line 193) | func newSourceOrModuleRefParser(logger *slog.Logger) *refParser {
  function processRawRef (line 550) | func processRawRef(rawRef *internal.RawRef) error {
  function processRawRefSource (line 627) | func processRawRefSource(rawRef *internal.RawRef) error {
  function processRawRefDir (line 671) | func processRawRefDir(rawRef *internal.RawRef) error {
  function processRawRefDirOrProtoFile (line 676) | func processRawRefDirOrProtoFile(rawRef *internal.RawRef) error {
  function processRawRefSourceOrModule (line 704) | func processRawRefSourceOrModule(rawRef *internal.RawRef) error {
  function newProcessRawRefMessage (line 754) | func newProcessRawRefMessage(defaultMessageEncoding MessageEncoding) fun...
  function processRawRefModule (line 814) | func processRawRefModule(rawRef *internal.RawRef) error {
  function parseMessageEncoding (line 819) | func parseMessageEncoding(format string) (MessageEncoding, error) {
  function assumeModuleOrDir (line 836) | func assumeModuleOrDir(path string) (string, error) {
  type messageRefParserOptions (line 855) | type messageRefParserOptions struct
  function newMessageRefParserOptions (line 859) | func newMessageRefParserOptions() *messageRefParserOptions {

FILE: private/buf/buffetch/ref_parser_test.go
  function TestGetParsedRefSuccess (line 33) | func TestGetParsedRefSuccess(t *testing.T) {
  function TestGetParsedRefError (line 1287) | func TestGetParsedRefError(t *testing.T) {
  function testGetParsedRefSuccess (line 1401) | func testGetParsedRefSuccess(
  function testGetParsedRefError (line 1414) | func testGetParsedRefError(
  function testGetParsedRef (line 1427) | func testGetParsedRef(
  function testGetParsedDirOrProtoFileRef (line 1452) | func testGetParsedDirOrProtoFileRef(
  function testNewModuleRef (line 1477) | func testNewModuleRef(

FILE: private/buf/buffetch/ref_parser_unix_test.go
  function TestGetParsedRefSuccess_UnixOnly (line 26) | func TestGetParsedRefSuccess_UnixOnly(t *testing.T) {

FILE: private/buf/buffetch/source_ref.go
  type sourceRef (line 23) | type sourceRef struct
    method internalRef (line 33) | func (r *sourceRef) internalRef() internal.Ref {
    method internalBucketRef (line 37) | func (r *sourceRef) internalBucketRef() internal.BucketRef {
    method isSourceOrModuleRef (line 41) | func (*sourceRef) isSourceOrModuleRef() {}
  function newSourceRef (line 27) | func newSourceRef(bucketRef internal.BucketRef) *sourceRef {

FILE: private/buf/buffetch/writer.go
  type writer (line 26) | type writer struct
    method PutMessageFile (line 42) | func (w *writer) PutMessageFile(
  function newWriter (line 30) | func newWriter(

FILE: private/buf/bufformat/bufformat.go
  type FormatOption (line 34) | type FormatOption
  type formatOptions (line 37) | type formatOptions struct
  function WithDeprecate (line 44) | func WithDeprecate(fqnPrefix string) FormatOption {
  function FormatModuleSet (line 51) | func FormatModuleSet(ctx context.Context, moduleSet bufmodule.ModuleSet,...
  function FormatBucket (line 65) | func FormatBucket(ctx context.Context, bucket storage.ReadBucket, opts ....
  function FormatFileNode (line 119) | func FormatFileNode(dest io.Writer, fileNode *ast.FileNode) error {
  function formatFileNode (line 124) | func formatFileNode(dest io.Writer, fileNode *ast.FileNode, options *for...
  function formatFileNodeWithMatch (line 130) | func formatFileNodeWithMatch(dest io.Writer, fileNode *ast.FileNode, opt...

FILE: private/buf/bufformat/deprecate.go
  type fullNameMatcher (line 25) | type fullNameMatcher struct
    method matchesPrefix (line 35) | func (d *fullNameMatcher) matchesPrefix(fqn string) bool {
    method matchesExact (line 45) | func (d *fullNameMatcher) matchesExact(fqn string) bool {
  function newFullNameMatcher (line 30) | func newFullNameMatcher(fqnPrefixes ...string) *fullNameMatcher {
  function fqnMatchesPrefix (line 50) | func fqnMatchesPrefix(fqn, prefix string) bool {
  function hasDeprecatedOption (line 61) | func hasDeprecatedOption[T any](decls []T) bool {
  function hasCompactDeprecatedOption (line 71) | func hasCompactDeprecatedOption(opts *ast.CompactOptionsNode) bool {
  function isDeprecatedOptionNode (line 79) | func isDeprecatedOptionNode(opt *ast.OptionNode) bool {
  function packageNameToString (line 104) | func packageNameToString(name ast.IdentValueNode) string {
  function parentFQN (line 121) | func parentFQN(fqn string) string {

FILE: private/buf/bufformat/deprecate_test.go
  function TestFQNMatchesPrefix (line 23) | func TestFQNMatchesPrefix(t *testing.T) {
  function TestFullNameMatcherMatchesPrefix (line 90) | func TestFullNameMatcherMatchesPrefix(t *testing.T) {
  function TestFullNameMatcherMatchesExact (line 135) | func TestFullNameMatcherMatchesExact(t *testing.T) {
  function TestFullNameMatcherEmptyPrefixes (line 170) | func TestFullNameMatcherEmptyPrefixes(t *testing.T) {

FILE: private/buf/bufformat/formatter.go
  type formatter (line 31) | type formatter struct
    method Run (line 102) | func (f *formatter) Run() error {
    method P (line 114) | func (f *formatter) P(elem string) {
    method Space (line 132) | func (f *formatter) Space() {
    method In (line 137) | func (f *formatter) In() {
    method Out (line 142) | func (f *formatter) Out() {
    method Indent (line 156) | func (f *formatter) Indent(nextNode ast.Node) {
    method WriteString (line 174) | func (f *formatter) WriteString(elem string) {
    method SetPreviousNode (line 214) | func (f *formatter) SetPreviousNode(node ast.Node) {
    method writeFile (line 219) | func (f *formatter) writeFile() {
    method writeFileHeader (line 248) | func (f *formatter) writeFileHeader() {
    method writeFileTypes (line 365) | func (f *formatter) writeFileTypes() {
    method writeSyntax (line 387) | func (f *formatter) writeSyntax(syntaxNode *ast.SyntaxNode) {
    method writeEdition (line 404) | func (f *formatter) writeEdition(editionNode *ast.EditionNode) {
    method writePackage (line 421) | func (f *formatter) writePackage(packageNode *ast.PackageNode, first b...
    method writeImport (line 436) | func (f *formatter) writeImport(importNode *ast.ImportNode, forceCompa...
    method writeFileOption (line 458) | func (f *formatter) writeFileOption(optionNode *ast.OptionNode, forceC...
    method writeOption (line 485) | func (f *formatter) writeOption(optionNode *ast.OptionNode) {
    method writeLastCompactOption (line 520) | func (f *formatter) writeLastCompactOption(optionNode *ast.OptionNode) {
    method writeOptionPrefix (line 531) | func (f *formatter) writeOptionPrefix(optionNode *ast.OptionNode) {
    method writeOptionName (line 552) | func (f *formatter) writeOptionName(optionNameNode *ast.OptionNameNode) {
    method writeMessage (line 606) | func (f *formatter) writeMessage(messageNode *ast.MessageNode) {
    method writeMessageLiteral (line 653) | func (f *formatter) writeMessageLiteral(messageLiteralNode *ast.Messag...
    method writeMessageLiteralForArray (line 686) | func (f *formatter) writeMessageLiteralForArray(
    method maybeWriteCompactMessageLiteral (line 726) | func (f *formatter) maybeWriteCompactMessageLiteral(
    method writeMessageLiteralElements (line 814) | func (f *formatter) writeMessageLiteralElements(messageLiteralNode *as...
    method writeMessageField (line 836) | func (f *formatter) writeMessageField(messageFieldNode *ast.MessageFie...
    method writeMessageFieldPrefix (line 850) | func (f *formatter) writeMessageFieldPrefix(messageFieldNode *ast.Mess...
    method writeEnum (line 891) | func (f *formatter) writeEnum(enumNode *ast.EnumNode) {
    method writeEnumValue (line 933) | func (f *formatter) writeEnumValue(enumValueNode *ast.EnumValueNode) {
    method writeField (line 967) | func (f *formatter) writeField(fieldNode *ast.FieldNode) {
    method writeMapField (line 1012) | func (f *formatter) writeMapField(mapFieldNode *ast.MapFieldNode) {
    method writeMapType (line 1028) | func (f *formatter) writeMapType(mapTypeNode *ast.MapTypeNode) {
    method writeFieldReference (line 1039) | func (f *formatter) writeFieldReference(fieldReferenceNode *ast.FieldR...
    method writeExtend (line 1056) | func (f *formatter) writeExtend(extendNode *ast.ExtendNode) {
    method writeService (line 1084) | func (f *formatter) writeService(serviceNode *ast.ServiceNode) {
    method writeRPC (line 1126) | func (f *formatter) writeRPC(rpcNode *ast.RPCNode) {
    method writeRPCType (line 1190) | func (f *formatter) writeRPCType(rpcTypeNode *ast.RPCTypeNode) {
    method writeOneOf (line 1210) | func (f *formatter) writeOneOf(oneOfNode *ast.OneofNode) {
    method writeGroup (line 1241) | func (f *formatter) writeGroup(groupNode *ast.GroupNode) {
    method writeExtensionRange (line 1287) | func (f *formatter) writeExtensionRange(extensionRangeNode *ast.Extens...
    method writeReserved (line 1310) | func (f *formatter) writeReserved(reservedNode *ast.ReservedNode) {
    method writeRange (line 1341) | func (f *formatter) writeRange(rangeNode *ast.RangeNode) {
    method writeCompactOptions (line 1366) | func (f *formatter) writeCompactOptions(compactOptionsNode *ast.Compac...
    method hasInteriorComments (line 1435) | func (f *formatter) hasInteriorComments(nodes ...ast.Node) bool {
    method writeArrayLiteral (line 1458) | func (f *formatter) writeArrayLiteral(arrayLiteralNode *ast.ArrayLiter...
    method writeCompositeValueForArrayLiteral (line 1534) | func (f *formatter) writeCompositeValueForArrayLiteral(
    method writeCompositeTypeBody (line 1553) | func (f *formatter) writeCompositeTypeBody(
    method writeCompositeValueBody (line 1570) | func (f *formatter) writeCompositeValueBody(
    method writeBody (line 1588) | func (f *formatter) writeBody(
    method writeOpenBracePrefix (line 1612) | func (f *formatter) writeOpenBracePrefix(openBrace ast.Node) {
    method writeOpenBracePrefixForArray (line 1631) | func (f *formatter) writeOpenBracePrefixForArray(openBrace ast.Node) {
    method writeCompoundIdent (line 1647) | func (f *formatter) writeCompoundIdent(compoundIdentNode *ast.Compound...
    method writeCompoundIdentForFieldName (line 1669) | func (f *formatter) writeCompoundIdentForFieldName(compoundIdentNode *...
    method writeFieldLabel (line 1693) | func (f *formatter) writeFieldLabel(fieldLabel ast.FieldLabel) {
    method writeCompoundStringLiteral (line 1704) | func (f *formatter) writeCompoundStringLiteral(
    method writeCompoundStringLiteralIndent (line 1726) | func (f *formatter) writeCompoundStringLiteralIndent(
    method writeCompoundStringLiteralIndentEndInline (line 1732) | func (f *formatter) writeCompoundStringLiteralIndentEndInline(
    method writeCompoundStringLiteralNoIndentEndInline (line 1738) | func (f *formatter) writeCompoundStringLiteralNoIndentEndInline(
    method writeCompoundStringLiteralForArray (line 1749) | func (f *formatter) writeCompoundStringLiteralForArray(
    method writeFloatLiteral (line 1763) | func (f *formatter) writeFloatLiteral(floatLiteralNode *ast.FloatLiter...
    method writeSignedFloatLiteral (line 1768) | func (f *formatter) writeSignedFloatLiteral(signedFloatLiteralNode *as...
    method writeSignedFloatLiteralForArray (line 1778) | func (f *formatter) writeSignedFloatLiteralForArray(
    method writeSpecialFloatLiteral (line 1791) | func (f *formatter) writeSpecialFloatLiteral(specialFloatLiteralNode *...
    method writeStringLiteral (line 1798) | func (f *formatter) writeStringLiteral(stringLiteralNode *ast.StringLi...
    method writeUintLiteral (line 1803) | func (f *formatter) writeUintLiteral(uintLiteralNode *ast.UintLiteralN...
    method writeNegativeIntLiteral (line 1808) | func (f *formatter) writeNegativeIntLiteral(negativeIntLiteralNode *as...
    method writeRaw (line 1813) | func (f *formatter) writeRaw(n ast.Node) {
    method writeNegativeIntLiteralForArray (line 1823) | func (f *formatter) writeNegativeIntLiteralForArray(
    method writeIdent (line 1836) | func (f *formatter) writeIdent(identNode *ast.IdentNode) {
    method writeKeyword (line 1841) | func (f *formatter) writeKeyword(keywordNode *ast.KeywordNode) {
    method writeRune (line 1846) | func (f *formatter) writeRune(runeNode *ast.RuneNode) {
    method writeNode (line 1859) | func (f *formatter) writeNode(node ast.Node) {
    method writeStart (line 1978) | func (f *formatter) writeStart(node ast.Node, ignoreLeadingWhitespace ...
    method writeStartMaybeCompact (line 1982) | func (f *formatter) writeStartMaybeCompact(
    method writeInline (line 2050) | func (f *formatter) writeInline(node ast.Node) {
    method writeBodyEnd (line 2092) | func (f *formatter) writeBodyEnd(node ast.Node, leadingEndline bool) {
    method writeLineElement (line 2120) | func (f *formatter) writeLineElement(node ast.Node) {
    method writeBodyEndInline (line 2150) | func (f *formatter) writeBodyEndInline(node ast.Node, leadingInline bo...
    method writeLineEnd (line 2188) | func (f *formatter) writeLineEnd(node ast.Node) {
    method writeMultilineComments (line 2222) | func (f *formatter) writeMultilineComments(comments ast.Comments) {
    method writeMultilineCommentsMaybeCompact (line 2226) | func (f *formatter) writeMultilineCommentsMaybeCompact(comments ast.Co...
    method writeInlineComments (line 2268) | func (f *formatter) writeInlineComments(comments ast.Comments) {
    method writeTrailingEndComments (line 2304) | func (f *formatter) writeTrailingEndComments(comments ast.Comments) {
    method writeComment (line 2315) | func (f *formatter) writeComment(comment string) {
    method leadingCommentsContainBlankLine (line 2473) | func (f *formatter) leadingCommentsContainBlankLine(n ast.Node) bool {
    method importHasComment (line 2484) | func (f *formatter) importHasComment(importNode *ast.ImportNode) bool {
    method nodeHasComment (line 2499) | func (f *formatter) nodeHasComment(node ast.Node) bool {
    method setTrailingComments (line 2510) | func (f *formatter) setTrailingComments(node ast.Node, comments ast.Co...
    method nodeInfo (line 2514) | func (f *formatter) nodeInfo(node ast.Node) nodeInfo {
    method writeDeprecatedOption (line 2627) | func (f *formatter) writeDeprecatedOption() {
    method currentFQN (line 2634) | func (f *formatter) currentFQN() string {
    method pushFQN (line 2639) | func (f *formatter) pushFQN(name string) func() {
    method shouldInjectDeprecation (line 2653) | func (f *formatter) shouldInjectDeprecation(fqn string) bool {
    method shouldInjectDeprecationExact (line 2667) | func (f *formatter) shouldInjectDeprecationExact(fqn string) bool {
    method writeCompactDeprecatedOption (line 2679) | func (f *formatter) writeCompactDeprecatedOption() {
  function newFormatter (line 85) | func newFormatter(
  function messageLiteralHasNestedMessageOrArray (line 788) | func messageLiteralHasNestedMessageOrArray(messageLiteralNode *ast.Messa...
  function arrayLiteralHasNestedMessageOrArray (line 798) | func arrayLiteralHasNestedMessageOrArray(arrayLiteralNode *ast.ArrayLite...
  function isCommentPrefix (line 2415) | func isCommentPrefix(ch byte) bool {
  function unindent (line 2427) | func unindent(s string, unindent int) string {
  function computeIndent (line 2453) | func computeIndent(s string) (int, bool) {
  type nodeInfo (line 2522) | type nodeInfo interface
  type infoWithTrailingComments (line 2531) | type infoWithTrailingComments struct
    method TrailingComments (line 2536) | func (n infoWithTrailingComments) TrailingComments() ast.Comments {
  function importSortOrder (line 2542) | func importSortOrder(node *ast.ImportNode) int {
  function stringForOptionName (line 2555) | func stringForOptionName(optionNameNode *ast.OptionNameNode) string {
  function stringForFieldReference (line 2569) | func stringForFieldReference(fieldReference *ast.FieldReferenceNode) str...
  function isOpenBrace (line 2583) | func isOpenBrace(node ast.Node) bool {
  function newlineCount (line 2601) | func newlineCount(value string) int {
  function messageLiteralOpen (line 2605) | func messageLiteralOpen(msg *ast.MessageLiteralNode) *ast.RuneNode {
  function messageLiteralClose (line 2615) | func messageLiteralClose(msg *ast.MessageLiteralNode) *ast.RuneNode {

FILE: private/buf/bufformat/formatter_test.go
  function TestFormatter (line 30) | func TestFormatter(t *testing.T) {
  function testFormatCustomOptions (line 39) | func testFormatCustomOptions(t *testing.T) {
  function testFormatEditions (line 43) | func testFormatEditions(t *testing.T) {
  function testFormatProto2 (line 48) | func testFormatProto2(t *testing.T) {
  function testFormatProto3 (line 61) | func testFormatProto3(t *testing.T) {
  function testFormatHeader (line 72) | func testFormatHeader(t *testing.T) {
  function testFormatNoDiff (line 76) | func testFormatNoDiff(t *testing.T, path string) {
  function testFormatError (line 119) | func testFormatError(t *testing.T, path string, errContains string) {
  function TestFormatterWithDeprecation (line 133) | func TestFormatterWithDeprecation(t *testing.T) {
  function testDeprecateNoDiff (line 150) | func testDeprecateNoDiff(t *testing.T, name string, path string, depreca...
  function TestFormatBucketNoTypesMatchedError (line 194) | func TestFormatBucketNoTypesMatchedError(t *testing.T) {

FILE: private/buf/bufgen/bufgen.go
  constant StrategyDirectory (line 37) | StrategyDirectory Strategy = 1
  constant StrategyAll (line 39) | StrategyAll Strategy = 2
  type Strategy (line 43) | type Strategy
    method String (line 60) | func (s Strategy) String() string {
  function ParseStrategy (line 48) | func ParseStrategy(s string) (Strategy, error) {
  type Generator (line 72) | type Generator interface
  function NewGenerator (line 87) | func NewGenerator(
  type GenerateOption (line 103) | type GenerateOption
  function GenerateWithBaseOutDirPath (line 109) | func GenerateWithBaseOutDirPath(baseOutDirPath string) GenerateOption {
  function GenerateWithDeleteOuts (line 117) | func GenerateWithDeleteOuts(deleteOuts bool) GenerateOption {
  function GenerateWithIncludeImportsOverride (line 131) | func GenerateWithIncludeImportsOverride(includeImports bool) GenerateOpt...
  function GenerateWithIncludeWellKnownTypesOverride (line 145) | func GenerateWithIncludeWellKnownTypesOverride(includeWellKnownTypes boo...

FILE: private/buf/bufgen/features.go
  type requiredFeatures (line 41) | type requiredFeatures struct
  function newRequiredFeatures (line 48) | func newRequiredFeatures() *requiredFeatures {
  type featureChecker (line 55) | type featureChecker
  function computeRequiredFeatures (line 60) | func computeRequiredFeatures(image bufimage.Image) *requiredFeatures {
  function checkRequiredFeatures (line 89) | func checkRequiredFeatures(
  function featureName (line 194) | func featureName(feature pluginpb.CodeGeneratorResponse_Feature) string {
  function editionName (line 199) | func editionName(edition descriptorpb.Edition) string {
  function enumReadableName (line 204) | func enumReadableName(
  function fileHasProto3Optional (line 218) | func fileHasProto3Optional(fileDescriptorProto *descriptorpb.FileDescrip...
  function messageHasProto3Optional (line 226) | func messageHasProto3Optional(descriptorProto *descriptorpb.DescriptorPr...
  function fileHasEditions (line 235) | func fileHasEditions(fileDescriptorProto *descriptorpb.FileDescriptorPro...

FILE: private/buf/bufgen/features_test.go
  function TestComputeRequiredFeatures (line 33) | func TestComputeRequiredFeatures(t *testing.T) {
  function TestCheckRequiredFeatures (line 75) | func TestCheckRequiredFeatures(t *testing.T) {
  function testCheckRequiredFeatures (line 166) | func testCheckRequiredFeatures(
  function makeImageNoRequiredFeatures (line 206) | func makeImageNoRequiredFeatures(t *testing.T) bufimage.Image {
  function makeImageRequiresProto3Optional (line 234) | func makeImageRequiresProto3Optional(t *testing.T) bufimage.Image {
  function makeImageRequiresEditions (line 242) | func makeImageRequiresEditions(t *testing.T) bufimage.Image {
  function makeImageRequiresBoth (line 250) | func makeImageRequiresBoth(t *testing.T) bufimage.Image {
  function makeImageFileRequiresProto3Optional (line 259) | func makeImageFileRequiresProto3Optional(t *testing.T, name string, isIm...
  function makeImageFileRequiresEditions (line 298) | func makeImageFileRequiresEditions(t *testing.T, name string, isImport b...
  type mockPluginConfig (line 331) | type mockPluginConfig struct
    method Name (line 341) | func (p mockPluginConfig) Name() string {
  function newMockPluginConfig (line 337) | func newMockPluginConfig(name string) bufconfig.GeneratePluginConfig {

FILE: private/buf/bufgen/generator.go
  type generator (line 45) | type generator struct
    method Generate (line 82) | func (g *generator) Generate(
    method deleteOuts (line 132) | func (g *generator) deleteOuts(
    method generateCode (line 152) | func (g *generator) generateCode(
    method execPlugins (line 201) | func (g *generator) execPlugins(
    method execLocalPlugin (line 326) | func (g *generator) execLocalPlugin(
    method execRemotePluginsV2 (line 358) | func (g *generator) execRemotePluginsV2(
  function newGenerator (line 52) | func newGenerator(
  function getPluginGenerationRequest (line 422) | func getPluginGenerationRequest(
  function validateResponses (line 454) | func validateResponses(
  type generateOptions (line 482) | type generateOptions struct
  function newGenerateOptions (line 489) | func newGenerateOptions() *generateOptions {
  type pluginConfigKeyForImage (line 493) | type pluginConfigKeyForImage struct
  function createPluginConfigKeyForImage (line 507) | func createPluginConfigKeyForImage(pluginConfig bufconfig.GeneratePlugin...

FILE: private/buf/buflsp/buflsp.go
  function Serve (line 44) | func Serve(
  type lsp (line 115) | type lsp struct
    method init (line 147) | func (l *lsp) init(_ context.Context, params *protocol.InitializeParam...
    method newHandler (line 162) | func (l *lsp) newHandler() (jsonrpc2.Handler, error) {

FILE: private/buf/buflsp/buflsp_test.go
  type nopModuleKeyProvider (line 48) | type nopModuleKeyProvider struct
    method GetModuleKeysForModuleRefs (line 50) | func (nopModuleKeyProvider) GetModuleKeysForModuleRefs(context.Context...
  function setupLSPServer (line 56) | func setupLSPServer(

FILE: private/buf/buflsp/cel.go
  function celIsIdentChar (line 29) | func celIsIdentChar(c byte) bool {
  function isCELKeyword (line 35) | func isCELKeyword(name string) bool {
  function isCELMacroFunction (line 46) | func isCELMacroFunction(funcName string) bool {
  function celOperatorSymbol (line 60) | func celOperatorSym
Copy disabled (too large) Download .json
Condensed preview — 2916 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,265K chars).
[
  {
    "path": ".bufstyle.yaml",
    "chars": 58,
    "preview": "version: v1\nignore:\n  PACKAGE_FILENAME:\n    - private/gen\n"
  },
  {
    "path": ".dockerignore",
    "chars": 1938,
    "preview": "# Autogenerated by makego. DO NOT EDIT.\n.build/\n.claude/settings.local.json\n.ctrlp\n.env/\n.idea/\n.tmp/\n.vscode/\ncmd/buf/b"
  },
  {
    "path": ".envrc",
    "chars": 20,
    "preview": ". $(make -s direnv)\n"
  },
  {
    "path": ".gitattributes",
    "chars": 380,
    "preview": "# This is similar to the git option core.autocrlf but it applies to all\n# users of the repository and therefore doesn't "
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 0,
    "preview": ""
  },
  {
    "path": ".github/ISSUE_TEMPLATE/1-bug-report.yml",
    "chars": 2621,
    "preview": "name: Bug Report\ndescription: File a bug report.\nlabels: Bug\nbody:\n  - type: markdown\n    attributes:\n      value: |\n   "
  },
  {
    "path": ".github/ISSUE_TEMPLATE/2-feature-request.yml",
    "chars": 402,
    "preview": "name: Feature Request\ndescription: Let us know about a feature you'd like us to add.\nlabels: Feature\nbody:\n  - type: mar"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/3-other.yml",
    "chars": 2076,
    "preview": "name: Other\ndescription: Anything else.\nbody:\n  - type: markdown\n    attributes:\n      value: |\n        Thanks for getti"
  },
  {
    "path": ".github/dependabot.yml",
    "chars": 824,
    "preview": "version: 2\nupdates:\n  - package-ecosystem: \"docker\"\n    directory: \"/\"\n    schedule:\n      interval: \"weekly\"\n  - packag"
  },
  {
    "path": ".github/workflows/add-to-project.yaml",
    "chars": 409,
    "preview": "name: Add issues and PRs to project\n\non:\n  issues:\n    types:\n      - opened\n      - reopened\n      - transferred\n  pull"
  },
  {
    "path": ".github/workflows/back-to-development.yaml",
    "chars": 1022,
    "preview": "name: Go back to Development\non:\n  workflow_dispatch:\n  release:\n    types: [published]\nenv:\n  APP_ID: 251311\njobs:\n  po"
  },
  {
    "path": ".github/workflows/buf-binary-size.yaml",
    "chars": 1113,
    "preview": "name: binary-size\non:\n  push:\n    branches:\n      - main\n    tags: [\"v*\"]\n  pull_request:\n# Prevent writing to the repos"
  },
  {
    "path": ".github/workflows/buf-ci.yaml",
    "chars": 345,
    "preview": "name: Buf CI\non:\n  push:\n  pull_request:\n    types: [opened, synchronize, reopened, labeled, unlabeled]\n  delete:\npermis"
  },
  {
    "path": ".github/workflows/build-and-draft-release.yaml",
    "chars": 2102,
    "preview": "name: Build and Draft Release\non:\n  pull_request:\n    types: [closed]\n  workflow_dispatch:\n    inputs:\n      version:\n  "
  },
  {
    "path": ".github/workflows/ci.yaml",
    "chars": 4622,
    "preview": "name: ci\non:\n  push:\n    branches:\n      - main\n    tags: [\"v*\"]\n  pull_request:\n# Prevent writing to the repository usi"
  },
  {
    "path": ".github/workflows/codeql.yaml",
    "chars": 1135,
    "preview": "# Broadly based on example Github action from\n# https://github.com/github/codeql-action#usage\nname: codeql\n# https://doc"
  },
  {
    "path": ".github/workflows/create-release-pr.yaml",
    "chars": 1139,
    "preview": "name: Create Release PR\non:\n  workflow_dispatch:\n    inputs:\n      version:\n        type: string\n        description: Th"
  },
  {
    "path": ".github/workflows/docker-publish.yaml",
    "chars": 3551,
    "preview": "# This job will build and push the Docker image to Docker Hub.\nname: docker-publish\non:\n  workflow_dispatch:\n    inputs:"
  },
  {
    "path": ".github/workflows/emergency-review-bypass.yaml",
    "chars": 309,
    "preview": "name: Bypass review in case of emergency\non:\n  pull_request:\n    types:\n      - labeled\npermissions:\n  pull-requests: wr"
  },
  {
    "path": ".github/workflows/make-upgrade.yaml",
    "chars": 1076,
    "preview": "name: Make upgrade\non:\n  schedule:\n    # Run every Monday at 10am UTC\n    - cron: \"0 10 * * 1\"\nenv:\n  APP_ID: 251311\njob"
  },
  {
    "path": ".github/workflows/notify-approval-bypass.yaml",
    "chars": 266,
    "preview": "name: PR Approval Bypass Notifier\non:\n  pull_request:\n    types:\n      - closed\n    branches:\n      - main\npermissions:\n"
  },
  {
    "path": ".github/workflows/pr-title.yaml",
    "chars": 612,
    "preview": "name: Lint PR Title\n# Prevent writing to the repository using the CI token.\n# Ref: https://docs.github.com/en/actions/re"
  },
  {
    "path": ".github/workflows/previous.yaml",
    "chars": 1215,
    "preview": "name: previous\non:\n  push:\n    branches:\n      - main\n    tags: [\"v*\"]\n  pull_request:\n# Prevent writing to the reposito"
  },
  {
    "path": ".github/workflows/verify-changelog.yaml",
    "chars": 566,
    "preview": "name: Verify Changelog\non:\n  pull_request:\n    types:\n      - opened\n  push:\n    branches:\n      - \"release/**\"\n      - "
  },
  {
    "path": ".github/workflows/windows.yaml",
    "chars": 1214,
    "preview": "name: windows\non:\n  push:\n    branches:\n      - main\n    tags: [\"v*\"]\n  pull_request:\n# Prevent writing to the repositor"
  },
  {
    "path": ".gitignore",
    "chars": 1973,
    "preview": "# Autogenerated by makego. DO NOT EDIT.\n/.build/\n/.claude/settings.local.json\n/.ctrlp\n/.env/\n/.idea/\n/.tmp/\n/.vscode/\n/c"
  },
  {
    "path": ".godoclint.yaml",
    "chars": 3915,
    "preview": "# Configuration file version.\nversion: \"1.0\"\n\n# List of regexp patterns matching files the linter should include. When\n#"
  },
  {
    "path": ".golangci.yml",
    "chars": 18417,
    "preview": "version: \"2\"\nlinters:\n  default: none\n  enable:\n    - asciicheck\n    - bidichk\n    - bodyclose\n    - containedctx\n    - "
  },
  {
    "path": ".pre-commit-hooks.yaml",
    "chars": 1498,
    "preview": "- id: buf-generate\n  name: buf generate\n  language: golang\n  language_version: 1.25.6\n  entry: buf generate\n  types: [pr"
  },
  {
    "path": "CHANGELOG.md",
    "chars": 94463,
    "preview": "# Changelog\n\n## [Unreleased]\n\n- Add support for `--rbs_out` as a `protoc_builtin` plugin (requires protoc v34.0+).\n- Add"
  },
  {
    "path": "Dockerfile.buf",
    "chars": 586,
    "preview": "FROM --platform=${BUILDPLATFORM} golang:1.26-alpine3.23 AS builder\n\nWORKDIR /workspace\n\nCOPY go.mod go.sum /workspace/\nR"
  },
  {
    "path": "LICENSE",
    "chars": 11357,
    "preview": "                                 Apache License\n                           Version 2.0, January 2004\n                   "
  },
  {
    "path": "Makefile",
    "chars": 196,
    "preview": "MAKEGO := make/go\nMAKEGO_REMOTE := https://github.com/bufbuild/makego.git\nPROJECT := buf\nGO_MODULE := github.com/bufbuil"
  },
  {
    "path": "README.md",
    "chars": 9920,
    "preview": "![The Buf logo](./.github/buf-logo.svg)\n\n# Buf\n\n[![License](https://img.shields.io/github/license/bufbuild/buf?color=blu"
  },
  {
    "path": "buf.yaml",
    "chars": 213,
    "preview": "version: v2\nmodules:\n  - path: proto\n    name: buf.build/bufbuild/buf\nlint:\n  use:\n    - STANDARD\n    - UNARY_RPC\n  disa"
  },
  {
    "path": "cmd/buf/buf.go",
    "chars": 27877,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/buf_test.go",
    "chars": 179129,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/buf_unix_test.go",
    "chars": 1660,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/imports_test.go",
    "chars": 8154,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/const_unix.go",
    "chars": 1187,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/const_windows.go",
    "chars": 938,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/errors.go",
    "chars": 3490,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/flags.go",
    "chars": 14982,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/flags_test.go",
    "chars": 11808,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/flags_unix.go",
    "chars": 1287,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/flags_windows.go",
    "chars": 1246,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-receiver/main.go",
    "chars": 1623,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/internal/protoc-gen-insertion-point-writer/main.go",
    "chars": 1659,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/plugin.go",
    "chars": 1980,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/protoc.go",
    "chars": 7348,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/protoc_test.go",
    "chars": 11983,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/1/flags.txt",
    "chars": 98,
    "preview": "-I\nproto\n--error_format\ntext\n--go_out\ngo_out\n--go_opt\nplugins=connect\n--plugin\n/bin/protoc-gen-go\n"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/2/flags1.txt",
    "chars": 105,
    "preview": "-I\nproto\n--error_format\ntext\n@testdata/2/flags2.txt\n--go_opt\nplugins=connect\n--plugin\n/bin/protoc-gen-go\n"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/2/flags2.txt",
    "chars": 16,
    "preview": "--go_out\ngo_out\n"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/3/flags1.txt",
    "chars": 105,
    "preview": "-I\nproto\n--error_format\ntext\n@testdata/3/flags2.txt\n--go_opt\nplugins=connect\n--plugin\n/bin/protoc-gen-go\n"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/3/flags2.txt",
    "chars": 39,
    "preview": "--go_out\ngo_out\n@testdata/3/flags1.txt\n"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/insertion/test.proto",
    "chars": 72,
    "preview": "syntax = \"proto3\";\n\npackage test;\n\nmessage Test {\n    string name = 1;\n}"
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/overlap/a/1.proto",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/overlap/a/1.txt",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/overlap/b/1.txt",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "cmd/buf/internal/command/alpha/protoc/testdata/overlap/b/2.proto",
    "chars": 0,
    "preview": ""
  },
  {
    "path": "cmd/buf/internal/command/alpha/registry/token/tokendelete/tokendelete.go",
    "chars": 2909,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/registry/token/tokenget/tokenget.go",
    "chars": 3211,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/alpha/registry/token/tokenlist/tokenlist.go",
    "chars": 3632,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/bufpluginv1/bufpluginv1.go",
    "chars": 1011,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/bufpluginv1beta1/bufpluginv1beta1.go",
    "chars": 1021,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/bufpluginv2/bufpluginv2.go",
    "chars": 1011,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/internal/internal.go",
    "chars": 2308,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/price/price.go",
    "chars": 4175,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/registry/plugin/plugindelete/plugindelete.go",
    "chars": 2865,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/registry/plugin/pluginpush/pluginpush.go",
    "chars": 18651,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/registry/webhook/webhookcreate/webhookcreate.go",
    "chars": 4015,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/registry/webhook/webhookdelete/webhookdelete.go",
    "chars": 2573,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/registry/webhook/webhooklist/webhooklist.go",
    "chars": 3377,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/beta/studioagent/studioagent.go",
    "chars": 6113,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/breaking/breaking.go",
    "chars": 17130,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/breaking/breaking_test.go",
    "chars": 2574,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/against/b/b.proto",
    "chars": 70,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nmessage Bar {\n  string name = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/against/buf.yaml",
    "chars": 45,
    "preview": "version: v2\nmodules:\n  - path: b\n  - path: c\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/against/c/c.proto",
    "chars": 70,
    "preview": "syntax = \"proto3\";\n\npackage c.v1;\n\nmessage Baz {\n  string name = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/head/a/a.proto",
    "chars": 90,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nimport \"c.proto\";\n\nmessage Foo {\n  c.v1.Baz baz = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/head/b/b.proto",
    "chars": 70,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nmessage Bar {\n  string name = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/head/buf.yaml",
    "chars": 57,
    "preview": "version: v2\nmodules:\n  - path: a\n  - path: b\n  - path: c\n"
  },
  {
    "path": "cmd/buf/internal/command/breaking/testdata/workspace_new_module/head/c/c.proto",
    "chars": 70,
    "preview": "syntax = \"proto3\";\n\npackage c.v1;\n\nmessage Baz {\n  string name = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/build/build.go",
    "chars": 5460,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configinit/configinit.go",
    "chars": 4636,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configlsbreakingrules/configlsbreakingrules.go",
    "chars": 1007,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configlslintrules/configlslintrules.go",
    "chars": 999,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configlsmodules/configlsmodules.go",
    "chars": 9412,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/configmigrate.go",
    "chars": 4250,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/configmigrate_test.go",
    "chars": 3044,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/testdata/defaultv1/input/buf.yaml",
    "chars": 468,
    "preview": "version: v1\nname: \"\"\ndeps: []\nbuild:\n  excludes: []\nlint:\n  use:\n    - STANDARD\n  except: []\n  ignore: []\n  ignore_only:"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/testdata/defaultv1/output/buf.yaml",
    "chars": 292,
    "preview": "version: v2\nlint:\n  use:\n    - STANDARD\n  except:\n    - FIELD_NOT_REQUIRED\n    - PACKAGE_NO_IMPORT_CYCLE\n  enum_zero_val"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/testdata/defaultv1beta1/input/buf.yaml",
    "chars": 337,
    "preview": "version: v1beta1\nname: \"\"\ndeps: []\nbuild:\n  roots:\n    - .\n  excludes: []\nlint:\n  use:\n    - STANDARD\n  enum_zero_value_"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/testdata/defaultv1beta1/output/buf.yaml",
    "chars": 381,
    "preview": "version: v2\nlint:\n  use:\n    - STANDARD\n  except:\n    - ENUM_FIRST_VALUE_ZERO\n    - FIELD_NOT_REQUIRED\n    - IMPORT_USED"
  },
  {
    "path": "cmd/buf/internal/command/config/configmigrate/testdata/unknown/input/buf.yaml",
    "chars": 14,
    "preview": "name: \"empty\"\n"
  },
  {
    "path": "cmd/buf/internal/command/config/internal/internal.go",
    "chars": 8843,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/convert/convert.go",
    "chars": 8129,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/convert/convert_test.go",
    "chars": 10423,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/README.md",
    "chars": 1450,
    "preview": "To re-generate the `descriptor.plain.binpb` file, run the following command in the root of the project:\n\n```\necho \"{\\\"on"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/api.proto",
    "chars": 215,
    "preview": "syntax = \"proto3\";\n\npackage google.protobuf;\n\n// Example of if a well known type exists locally and is different to the\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/buf.proto",
    "chars": 67,
    "preview": "syntax = \"proto3\";\n\npackage buf;\n\nmessage Foo {\n  int64 one = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/buf.yaml",
    "chars": 67,
    "preview": "version: v1\nbreaking:\n  use:\n    - FILE\nlint:\n  use:\n    - DEFAULT\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/duration.binpb",
    "chars": 2,
    "preview": "\b\u001c"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/duration.json",
    "chars": 7,
    "preview": "\"3600s\""
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/duration.txtpb",
    "chars": 14,
    "preview": "seconds: 3600\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/duration.yaml",
    "chars": 6,
    "preview": "3600s\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/image.json",
    "chars": 577,
    "preview": "{\"file\":[{\"name\":\"buf.proto\",\"package\":\"buf\",\"messageType\":[{\"name\":\"Foo\",\"field\":[{\"name\":\"one\",\"number\":1,\"label\":\"LAB"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/image.txtpb",
    "chars": 1310,
    "preview": "file: {\n  name: \"buf.proto\"\n  package: \"buf\"\n  message_type: {\n    name: \"Foo\"\n    field: {\n      name: \"one\"\n      numb"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/image.yaml",
    "chars": 1834,
    "preview": "file:\n    - bufExtension:\n        isImport: false\n        isSyntaxUnspecified: false\n      messageType:\n        - field:"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/payload.binpb",
    "chars": 2,
    "preview": "\b7"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/payload.json",
    "chars": 12,
    "preview": "{\"one\":\"55\"}"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/payload.txtpb",
    "chars": 8,
    "preview": "one: 55\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/bin_json/payload.yaml",
    "chars": 10,
    "preview": "one: \"55\"\n"
  },
  {
    "path": "cmd/buf/internal/command/convert/testdata/convert/descriptor.plain.binpb",
    "chars": 2,
    "preview": "\b7"
  },
  {
    "path": "cmd/buf/internal/command/curl/curl.go",
    "chars": 41888,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/dep/depgraph/depgraph.go",
    "chars": 9621,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/dep/depprune/depprune.go",
    "chars": 2257,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/dep/depupdate/depupdate.go",
    "chars": 5951,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/dep/internal/internal.go",
    "chars": 7375,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/export/export.go",
    "chars": 9979,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/format/format.go",
    "chars": 14511,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/generate.go",
    "chars": 24016,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/generate_test.go",
    "chars": 30495,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/generate_unix_test.go",
    "chars": 6027,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/generate_windows_test.go",
    "chars": 5890,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/internal/protoc-gen-top-level-type-names-yaml/main.go",
    "chars": 2362,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/duplicate_plugins/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/duplicate_plugins/buf.gen.yaml",
    "chars": 190,
    "preview": "# The same plugin can be executed more than once, as long as they are written\n# to different output directories.\nversion"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/insertion/test.proto",
    "chars": 73,
    "preview": "syntax = \"proto3\";\n\npackage test;\n\nmessage Test {\n    string name = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/insertion_point/test.txt",
    "chars": 808,
    "preview": "\n\t\t// The following line represents an insertion point named 'example'.\n\t\t// We include a few indentation to verify the "
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/nested_insertion_point/gen/proto/insertion/test.txt",
    "chars": 808,
    "preview": "\n\t\t// The following line represents an insertion point named 'example'.\n\t\t// We include a few indentation to verify the "
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/a/v2/a.proto",
    "chars": 69,
    "preview": "syntax = \"proto3\";\n\npackage a.v2;\n\nmessage Foo {\n  string key = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/a/v3/a.proto",
    "chars": 89,
    "preview": "syntax = \"proto3\";\n\npackage a.v3;\n\nmessage Foo {\n  string key = 1;\n  string value = 2;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/a/v3/foo/bar.proto",
    "chars": 55,
    "preview": "syntax = \"proto3\";\n\npackage a.v3.foo;\n\nmessage Bar {\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/a/v3/foo/foo.proto",
    "chars": 72,
    "preview": "syntax = \"proto3\";\n\npackage a.v3.foo;\n\nmessage Foo {\n  string id = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/b/v1/b.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nmessage Bar {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/buf.gen.yaml",
    "chars": 50,
    "preview": "version: v1\nplugins:\n  - name: java\n    out: java\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/paths/buf.yaml",
    "chars": 12,
    "preview": "version: v1\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/protofileref/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/protofileref/a/v1/b.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Bar {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/protofileref/buf.gen.yaml",
    "chars": 50,
    "preview": "version: v1\nplugins:\n  - name: java\n    out: java\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/protofileref/buf.yaml",
    "chars": 12,
    "preview": "version: v1\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/simple/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/simple/buf.gen.yaml",
    "chars": 51,
    "preview": "version: v1\nplugins:\n  - name: java\n    out: java\n\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/simple/buf.yaml",
    "chars": 12,
    "preview": "version: v1\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/types/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/types/buf.gen.yaml",
    "chars": 72,
    "preview": "version: v1\nplugins:\n  - name: java\n    out: java\ntypes:\n  - \"a.v1.Foo\"\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/types/buf.yaml",
    "chars": 12,
    "preview": "version: v1\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/duplicate_plugins/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/duplicate_plugins/buf.gen.yaml",
    "chars": 236,
    "preview": "# The same plugin can be executed more than once, as long as they are written\n# to different output directories.\nversion"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/a/v1/a.proto",
    "chars": 66,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n\nmessage Bar {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/b/v1/b.proto",
    "chars": 66,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nmessage Foo {}\n\nmessage Bar {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/buf.basic.gen.yaml",
    "chars": 82,
    "preview": "version: v2\nplugins:\n  - local: protoc-gen-top-level-type-names-yaml\n    out: gen\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/buf.exclude.paths.gen.yaml",
    "chars": 202,
    "preview": "version: v2\nplugins:\n  - local: protoc-gen-top-level-type-names-yaml\n    out: gen\n    strategy: all\ninputs:\n  - director"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/buf.paths.gen.yaml",
    "chars": 194,
    "preview": "version: v2\nplugins:\n  - local: protoc-gen-top-level-type-names-yaml\n    out: gen\n    strategy: all\ninputs:\n  - director"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/buf.types.gen.yaml",
    "chars": 178,
    "preview": "version: v2\nplugins:\n  - local: protoc-gen-top-level-type-names-yaml\n    out: gen\n    strategy: all\ninputs:\n  - director"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/local_plugin/buf.yaml",
    "chars": 12,
    "preview": "version: v2\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/simple/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/simple/buf.gen.yaml",
    "chars": 86,
    "preview": "version: v2\nplugins:\n  - protoc_builtin: java\n    out: java\nmanaged:\n  enabled: false\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/simple/buf.yaml",
    "chars": 91,
    "preview": "version: v2\nmodules:\n  - path: .\n    lint:\n      except:\n        - PACKAGE_NO_IMPORT_CYCLE\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/a/v1/a.proto",
    "chars": 348,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nimport \"b/v1/b.proto\";\nimport \"pkg/v1/options.proto\";\n\nmessage Foo {\n  option (pkg.v1"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/b/v1/b.proto",
    "chars": 122,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nimport \"pkg/v1/options.proto\";\n\nmessage Baz {\n  option (pkg.v1.message_baz) = \"str\";\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/buf.gen.invalid.yaml",
    "chars": 215,
    "preview": "version: v2\nplugins:\n  - local: protoc-gen-top-level-type-names-yaml\n    out: gen\n    strategy: all\ninputs:\n  - director"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/buf.gen.yaml",
    "chars": 468,
    "preview": "version: v2\nmanaged:\n  enabled: true\n  override:\n    - file_option: java_package_prefix\n      value: net\nplugins:\n  - lo"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/buf.yaml",
    "chars": 12,
    "preview": "version: v2\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/v2/types/pkg/v1/options.proto",
    "chars": 328,
    "preview": "syntax = \"proto3\";\n\npackage pkg.v1;\n\nimport \"google/protobuf/descriptor.proto\";\n\nmessage OptionFoo {\n  string foo = 1;\n}"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/a/v1/a.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage a.v1;\n\nmessage Foo {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/a/v2/a.proto",
    "chars": 69,
    "preview": "syntax = \"proto3\";\n\npackage a.v2;\n\nmessage Foo {\n  string key = 1;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/a/v3/a.proto",
    "chars": 89,
    "preview": "syntax = \"proto3\";\n\npackage a.v3;\n\nmessage Foo {\n  string key = 1;\n  string value = 2;\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/a/v3/foo/bar.proto",
    "chars": 55,
    "preview": "syntax = \"proto3\";\n\npackage a.v3.foo;\n\nmessage Bar {\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/a/v3/foo/foo.proto",
    "chars": 55,
    "preview": "syntax = \"proto3\";\n\npackage a.v3.foo;\n\nmessage Foo {\n}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/b/v1/b.proto",
    "chars": 50,
    "preview": "syntax = \"proto3\";\n\npackage b.v1;\n\nmessage Bar {}\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/b/v1/foo.proto",
    "chars": 53,
    "preview": "syntax = \"proto3\";\n\npackage b.foo;\n\nmessage Foo {\n}\n\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/buf.gen.yaml",
    "chars": 50,
    "preview": "version: v1\nplugins:\n  - name: java\n    out: java\n"
  },
  {
    "path": "cmd/buf/internal/command/generate/testdata/workspace/buf.work.yaml",
    "chars": 37,
    "preview": "version: v1\ndirectories:\n  - a\n  - b\n"
  },
  {
    "path": "cmd/buf/internal/command/lint/lint.go",
    "chars": 5562,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/lsfiles/lsfiles.go",
    "chars": 7781,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/lsp/lspserve/lspserve.go",
    "chars": 3668,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/mod/internal/internal.go",
    "chars": 5505,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/mod/modlsbreakingrules/modlsbreakingrules.go",
    "chars": 1001,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/mod/modlslintrules/modlslintrules.go",
    "chars": 993,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/mod/modopen/modopen.go",
    "chars": 2819,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/plugin/pluginprune/pluginprune.go",
    "chars": 3616,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/plugin/pluginpush/pluginpush.go",
    "chars": 7402,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/plugin/pluginupdate/pluginupdate.go",
    "chars": 4931,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/policy/policyprune/policyprune.go",
    "chars": 4016,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/policy/policypush/policypush.go",
    "chars": 6010,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/policy/policyupdate/policyupdate.go",
    "chars": 8663,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/push/push.go",
    "chars": 17731,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulecommit/modulecommitaddlabel/modulecommitaddlabel.go",
    "chars": 4370,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulecommit/modulecommitinfo/modulecommitinfo.go",
    "chars": 3576,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulecommit/modulecommitlist/modulecommitlist.go",
    "chars": 8620,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulecommit/modulecommitresolve/modulecommitresolve.go",
    "chars": 3467,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulecreate/modulecreate.go",
    "chars": 4157,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/moduledelete/moduledelete.go",
    "chars": 3020,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/moduledeprecate/moduledeprecate.go",
    "chars": 2918,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/moduleinfo/moduleinfo.go",
    "chars": 3240,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  },
  {
    "path": "cmd/buf/internal/command/registry/module/modulelabel/modulelabelarchive/modulelabelarchive.go",
    "chars": 2890,
    "preview": "// Copyright 2020-2026 Buf Technologies, Inc.\n//\n// Licensed under the Apache License, Version 2.0 (the \"License\");\n// y"
  }
]

// ... and 2716 more files (download for full content)

About this extraction

This page contains the full source code of the bufbuild/buf GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 2916 files (11.6 MB), approximately 3.2M tokens, and a symbol index with 17521 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!