mirror of https://github.com/kubernetes/kops.git
Update dependencies
This commit is contained in:
parent
63c804a5ac
commit
1ce336259f
|
|
@ -163,39 +163,39 @@
|
|||
version = "v1.16.11"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:8b019763cb155094c7919d577530604dc070a05315f24b3a2b102a8f9570725f"
|
||||
digest = "1:578040aa4b1d7e1f57f0654996de74a4c522887f567f824ed58eccf513104ceb"
|
||||
name = "github.com/bazelbuild/bazel-gazelle"
|
||||
packages = [
|
||||
"cmd/gazelle",
|
||||
"internal/config",
|
||||
"internal/flag",
|
||||
"internal/label",
|
||||
"internal/language",
|
||||
"internal/language/go",
|
||||
"internal/language/proto",
|
||||
"internal/merger",
|
||||
"internal/pathtools",
|
||||
"internal/repos",
|
||||
"internal/resolve",
|
||||
"internal/rule",
|
||||
"config",
|
||||
"flag",
|
||||
"internal/version",
|
||||
"internal/walk",
|
||||
"internal/wspace",
|
||||
"label",
|
||||
"language",
|
||||
"language/go",
|
||||
"language/proto",
|
||||
"merger",
|
||||
"pathtools",
|
||||
"repo",
|
||||
"resolve",
|
||||
"rule",
|
||||
"walk",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "6a1b93cc9b1c7e55e7d05a6d324bcf9d87ea3ab1"
|
||||
version = "0.14.0"
|
||||
revision = "e443c54b396a236e0d3823f46c6a931e1c9939f2"
|
||||
version = "0.17.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:331f668c3b6315145093a3b104c1da6be2835a3b1e7c873ad5fba82667330d44"
|
||||
digest = "1:f6fd9834f9a1b421395cbe15fa964b949c38bb31fb43bc6ba88ad912b36c664e"
|
||||
name = "github.com/bazelbuild/buildtools"
|
||||
packages = [
|
||||
"build",
|
||||
"tables",
|
||||
]
|
||||
pruneopts = "UT"
|
||||
revision = "a05406a1a855c6d8ebfc368555ace7638d83c0d9"
|
||||
version = "0.6.0"
|
||||
revision = "55b64c3d2ddfb57f06477c1d94ef477419c96bd6"
|
||||
version = "0.22.0"
|
||||
|
||||
[[projects]]
|
||||
digest = "1:2daf57e573d4174757646e9d416d25e4dbe4533237961a90b986091a2de12830"
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ required = [
|
|||
|
||||
[[override]]
|
||||
name = "github.com/bazelbuild/bazel-gazelle"
|
||||
version = "0.14.0"
|
||||
version = "0.17.0"
|
||||
|
||||
# aws-sdk-go is one of our critical dependencies
|
||||
[[override]]
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@ go_library(
|
|||
"//vendor/github.com/gogo/protobuf/proto:go_default_library",
|
||||
"//vendor/github.com/gogo/protobuf/sortkeys:go_default_library",
|
||||
"//vendor/github.com/golang/glog:go_default_library",
|
||||
"//vendor/github.com/golang/protobuf/proto:go_default_library",
|
||||
"//vendor/github.com/weaveworks/mesh:go_default_library",
|
||||
"@com_github_golang_protobuf//proto:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ go_library(
|
|||
"fix-update.go",
|
||||
"gazelle.go",
|
||||
"langs.go",
|
||||
"metaresolver.go",
|
||||
"print.go",
|
||||
"update-repos.go",
|
||||
"version.go",
|
||||
|
|
@ -16,18 +17,19 @@ go_library(
|
|||
importpath = "github.com/bazelbuild/bazel-gazelle/cmd/gazelle",
|
||||
visibility = ["//visibility:private"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/flag:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/merger:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/repos:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/flag:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/version:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/walk:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language/go:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language/proto:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/merger:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/repo:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/walk:go_default_library",
|
||||
"//vendor/github.com/pmezard/go-difflib/difflib:go_default_library",
|
||||
],
|
||||
)
|
||||
|
||||
|
|
|
|||
|
|
@ -16,37 +16,74 @@ limitations under the License.
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
"github.com/pmezard/go-difflib/difflib"
|
||||
)
|
||||
|
||||
func diffFile(path string, newContents []byte) error {
|
||||
oldContents, err := ioutil.ReadFile(path)
|
||||
var exitError = fmt.Errorf("encountered changes while running diff")
|
||||
|
||||
func diffFile(c *config.Config, f *rule.File) error {
|
||||
rel, err := filepath.Rel(c.RepoRoot, f.Path)
|
||||
if err != nil {
|
||||
oldContents = nil
|
||||
return fmt.Errorf("error getting old path for file %q: %v", f.Path, err)
|
||||
}
|
||||
if bytes.Equal(oldContents, newContents) {
|
||||
return nil
|
||||
rel = filepath.ToSlash(rel)
|
||||
|
||||
date := "1970-01-01 00:00:00.000000000 +0000"
|
||||
diff := difflib.UnifiedDiff{
|
||||
Context: 3,
|
||||
FromDate: date,
|
||||
ToDate: date,
|
||||
}
|
||||
f, err := ioutil.TempFile("", filepath.Base(path))
|
||||
if err != nil {
|
||||
return err
|
||||
|
||||
if oldContent, err := ioutil.ReadFile(f.Path); err != nil && !os.IsNotExist(err) {
|
||||
return fmt.Errorf("error reading original file: %v", err)
|
||||
} else if err != nil {
|
||||
diff.FromFile = "/dev/null"
|
||||
} else if err == nil {
|
||||
diff.A = difflib.SplitLines(string(oldContent))
|
||||
if c.ReadBuildFilesDir == "" {
|
||||
path, err := filepath.Rel(c.RepoRoot, f.Path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting old path for file %q: %v", f.Path, err)
|
||||
}
|
||||
diff.FromFile = filepath.ToSlash(path)
|
||||
} else {
|
||||
diff.FromFile = f.Path
|
||||
}
|
||||
}
|
||||
f.Close()
|
||||
defer os.Remove(f.Name())
|
||||
if err := ioutil.WriteFile(f.Name(), newContents, 0666); err != nil {
|
||||
return err
|
||||
|
||||
newContent := f.Format()
|
||||
diff.B = difflib.SplitLines(string(newContent))
|
||||
outPath := findOutputPath(c, f)
|
||||
if c.WriteBuildFilesDir == "" {
|
||||
path, err := filepath.Rel(c.RepoRoot, f.Path)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error getting new path for file %q: %v", f.Path, err)
|
||||
}
|
||||
diff.ToFile = filepath.ToSlash(path)
|
||||
} else {
|
||||
diff.ToFile = outPath
|
||||
}
|
||||
cmd := exec.Command("diff", "-u", "--new-file", path, f.Name())
|
||||
cmd.Stdout = os.Stdout
|
||||
cmd.Stderr = os.Stderr
|
||||
err = cmd.Run()
|
||||
if _, ok := err.(*exec.ExitError); ok {
|
||||
// diff returns non-zero when files are different. This is not an error.
|
||||
return nil
|
||||
|
||||
uc := getUpdateConfig(c)
|
||||
var out io.Writer = os.Stdout
|
||||
if uc.patchPath != "" {
|
||||
out = &uc.patchBuffer
|
||||
}
|
||||
return err
|
||||
if err := difflib.WriteUnifiedDiff(out, diff); err != nil {
|
||||
return fmt.Errorf("error diffing %s: %v", f.Path, err)
|
||||
}
|
||||
if ds, _ := difflib.GetUnifiedDiffString(diff); ds != "" {
|
||||
return exitError
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ limitations under the License.
|
|||
package main
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"flag"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
|
|
@ -24,25 +25,30 @@ import (
|
|||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/internal/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/merger"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/walk"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/language"
|
||||
"github.com/bazelbuild/bazel-gazelle/merger"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
"github.com/bazelbuild/bazel-gazelle/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/walk"
|
||||
)
|
||||
|
||||
// updateConfig holds configuration information needed to run the fix and
|
||||
// update commands. This includes everything in config.Config, but it also
|
||||
// includes some additional fields that aren't relevant to other packages.
|
||||
type updateConfig struct {
|
||||
emit emitFunc
|
||||
repos []repos.Repo
|
||||
dirs []string
|
||||
emit emitFunc
|
||||
repos []repo.Repo
|
||||
walkMode walk.Mode
|
||||
patchPath string
|
||||
patchBuffer bytes.Buffer
|
||||
}
|
||||
|
||||
type emitFunc func(path string, data []byte) error
|
||||
type emitFunc func(c *config.Config, f *rule.File) error
|
||||
|
||||
var modeFromName = map[string]emitFunc{
|
||||
"print": printFile,
|
||||
|
|
@ -57,7 +63,8 @@ func getUpdateConfig(c *config.Config) *updateConfig {
|
|||
}
|
||||
|
||||
type updateConfigurer struct {
|
||||
mode string
|
||||
mode string
|
||||
recursive bool
|
||||
}
|
||||
|
||||
func (ucr *updateConfigurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) {
|
||||
|
|
@ -67,33 +74,48 @@ func (ucr *updateConfigurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *conf
|
|||
c.ShouldFix = cmd == "fix"
|
||||
|
||||
fs.StringVar(&ucr.mode, "mode", "fix", "print: prints all of the updated BUILD files\n\tfix: rewrites all of the BUILD files in place\n\tdiff: computes the rewrite but then just does a diff")
|
||||
fs.BoolVar(&ucr.recursive, "r", true, "when true, gazelle will update subdirectories recursively")
|
||||
fs.StringVar(&uc.patchPath, "patch", "", "when set with -mode=diff, gazelle will write to a file instead of stdout")
|
||||
}
|
||||
|
||||
func (ucr *updateConfigurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error {
|
||||
uc := getUpdateConfig(c)
|
||||
|
||||
var ok bool
|
||||
uc.emit, ok = modeFromName[ucr.mode]
|
||||
if !ok {
|
||||
return fmt.Errorf("unrecognized emit mode: %q", ucr.mode)
|
||||
}
|
||||
|
||||
c.Dirs = fs.Args()
|
||||
if len(c.Dirs) == 0 {
|
||||
c.Dirs = []string{"."}
|
||||
if uc.patchPath != "" && ucr.mode != "diff" {
|
||||
return fmt.Errorf("-patch set but -mode is %s, not diff", ucr.mode)
|
||||
}
|
||||
for i := range c.Dirs {
|
||||
dir, err := filepath.Abs(c.Dirs[i])
|
||||
|
||||
dirs := fs.Args()
|
||||
if len(dirs) == 0 {
|
||||
dirs = []string{"."}
|
||||
}
|
||||
uc.dirs = make([]string, len(dirs))
|
||||
for i := range dirs {
|
||||
dir, err := filepath.Abs(dirs[i])
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: failed to find absolute path: %v", c.Dirs[i], err)
|
||||
return fmt.Errorf("%s: failed to find absolute path: %v", dirs[i], err)
|
||||
}
|
||||
dir, err = filepath.EvalSymlinks(dir)
|
||||
if err != nil {
|
||||
return fmt.Errorf("%s: failed to resolve symlinks: %v", c.Dirs[i], err)
|
||||
return fmt.Errorf("%s: failed to resolve symlinks: %v", dirs[i], err)
|
||||
}
|
||||
if !isDescendingDir(dir, c.RepoRoot) {
|
||||
return fmt.Errorf("dir %q is not a subdirectory of repo root %q", dir, c.RepoRoot)
|
||||
}
|
||||
c.Dirs[i] = dir
|
||||
uc.dirs[i] = dir
|
||||
}
|
||||
|
||||
if ucr.recursive {
|
||||
uc.walkMode = walk.VisitAllUpdateSubdirsMode
|
||||
} else if c.IndexLibraries {
|
||||
uc.walkMode = walk.VisitAllUpdateDirsMode
|
||||
} else {
|
||||
uc.walkMode = walk.UpdateDirsMode
|
||||
}
|
||||
|
||||
return nil
|
||||
|
|
@ -110,14 +132,24 @@ type visitRecord struct {
|
|||
// the repository root. "" for the repository root itself.
|
||||
pkgRel string
|
||||
|
||||
// c is the configuration for the directory with directives applied.
|
||||
c *config.Config
|
||||
|
||||
// rules is a list of generated Go rules.
|
||||
rules []*rule.Rule
|
||||
|
||||
// imports contains opaque import information for each rule in rules.
|
||||
imports []interface{}
|
||||
|
||||
// empty is a list of empty Go rules that may be deleted.
|
||||
empty []*rule.Rule
|
||||
|
||||
// file is the build file being processed.
|
||||
file *rule.File
|
||||
|
||||
// mappedKinds are mapped kinds used during this visit.
|
||||
mappedKinds []config.MappedKind
|
||||
mappedKindInfo map[string]rule.KindInfo
|
||||
}
|
||||
|
||||
type byPkgRel []visitRecord
|
||||
|
|
@ -134,20 +166,24 @@ var genericLoads = []rule.LoadInfo{
|
|||
}
|
||||
|
||||
func runFixUpdate(cmd command, args []string) error {
|
||||
cexts := make([]config.Configurer, 0, len(languages)+2)
|
||||
cexts = append(cexts, &config.CommonConfigurer{}, &updateConfigurer{})
|
||||
kindToResolver := make(map[string]resolve.Resolver)
|
||||
cexts := make([]config.Configurer, 0, len(languages)+3)
|
||||
cexts = append(cexts,
|
||||
&config.CommonConfigurer{},
|
||||
&updateConfigurer{},
|
||||
&walk.Configurer{},
|
||||
&resolve.Configurer{})
|
||||
mrslv := newMetaResolver()
|
||||
kinds := make(map[string]rule.KindInfo)
|
||||
loads := genericLoads
|
||||
for _, lang := range languages {
|
||||
cexts = append(cexts, lang)
|
||||
for kind, info := range lang.Kinds() {
|
||||
kindToResolver[kind] = lang
|
||||
mrslv.AddBuiltin(kind, lang)
|
||||
kinds[kind] = info
|
||||
}
|
||||
loads = append(loads, lang.Loads()...)
|
||||
}
|
||||
ruleIndex := resolve.NewRuleIndex(kindToResolver)
|
||||
ruleIndex := resolve.NewRuleIndex(mrslv.Resolver)
|
||||
|
||||
c, err := newFixUpdateConfiguration(cmd, args, cexts, loads)
|
||||
if err != nil {
|
||||
|
|
@ -163,11 +199,12 @@ func runFixUpdate(cmd command, args []string) error {
|
|||
|
||||
// Visit all directories in the repository.
|
||||
var visits []visitRecord
|
||||
walk.Walk(c, cexts, func(dir, rel string, c *config.Config, update bool, f *rule.File, subdirs, regularFiles, genFiles []string) {
|
||||
uc := getUpdateConfig(c)
|
||||
walk.Walk(c, cexts, uc.dirs, uc.walkMode, func(dir, rel string, c *config.Config, update bool, f *rule.File, subdirs, regularFiles, genFiles []string) {
|
||||
// If this file is ignored or if Gazelle was not asked to update this
|
||||
// directory, just index the build file and move on.
|
||||
if !update {
|
||||
if f != nil {
|
||||
if c.IndexLibraries && f != nil {
|
||||
for _, r := range f.Rules {
|
||||
ruleIndex.AddRule(c, r, f)
|
||||
}
|
||||
|
|
@ -184,15 +221,43 @@ func runFixUpdate(cmd command, args []string) error {
|
|||
|
||||
// Generate rules.
|
||||
var empty, gen []*rule.Rule
|
||||
var imports []interface{}
|
||||
for _, l := range languages {
|
||||
lempty, lgen := l.GenerateRules(c, dir, rel, f, subdirs, regularFiles, genFiles, empty, gen)
|
||||
empty = append(empty, lempty...)
|
||||
gen = append(gen, lgen...)
|
||||
res := l.GenerateRules(language.GenerateArgs{
|
||||
Config: c,
|
||||
Dir: dir,
|
||||
Rel: rel,
|
||||
File: f,
|
||||
Subdirs: subdirs,
|
||||
RegularFiles: regularFiles,
|
||||
GenFiles: genFiles,
|
||||
OtherEmpty: empty,
|
||||
OtherGen: gen})
|
||||
if len(res.Gen) != len(res.Imports) {
|
||||
log.Panicf("%s: language %s generated %d rules but returned %d imports", rel, l.Name(), len(res.Gen), len(res.Imports))
|
||||
}
|
||||
empty = append(empty, res.Empty...)
|
||||
gen = append(gen, res.Gen...)
|
||||
imports = append(imports, res.Imports...)
|
||||
}
|
||||
if f == nil && len(gen) == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
// Apply and record relevant kind mappings.
|
||||
var (
|
||||
mappedKinds []config.MappedKind
|
||||
mappedKindInfo = make(map[string]rule.KindInfo)
|
||||
)
|
||||
for _, r := range gen {
|
||||
if repl, ok := c.KindMap[r.Kind()]; ok {
|
||||
mappedKindInfo[repl.KindName] = kinds[r.Kind()]
|
||||
mappedKinds = append(mappedKinds, repl)
|
||||
mrslv.MappedKind(f, repl)
|
||||
r.SetKind(repl.KindName)
|
||||
}
|
||||
}
|
||||
|
||||
// Insert or merge rules into the build file.
|
||||
if f == nil {
|
||||
f = rule.EmptyFile(filepath.Join(dir, c.DefaultBuildFileName()), rel)
|
||||
|
|
@ -200,46 +265,61 @@ func runFixUpdate(cmd command, args []string) error {
|
|||
r.Insert(f)
|
||||
}
|
||||
} else {
|
||||
merger.MergeFile(f, empty, gen, merger.PreResolve, kinds)
|
||||
merger.MergeFile(f, empty, gen, merger.PreResolve,
|
||||
unionKindInfoMaps(kinds, mappedKindInfo))
|
||||
}
|
||||
visits = append(visits, visitRecord{
|
||||
pkgRel: rel,
|
||||
rules: gen,
|
||||
empty: empty,
|
||||
file: f,
|
||||
pkgRel: rel,
|
||||
c: c,
|
||||
rules: gen,
|
||||
imports: imports,
|
||||
empty: empty,
|
||||
file: f,
|
||||
mappedKinds: mappedKinds,
|
||||
mappedKindInfo: mappedKindInfo,
|
||||
})
|
||||
|
||||
// Add library rules to the dependency resolution table.
|
||||
for _, r := range f.Rules {
|
||||
ruleIndex.AddRule(c, r, f)
|
||||
if c.IndexLibraries {
|
||||
for _, r := range f.Rules {
|
||||
ruleIndex.AddRule(c, r, f)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
uc := getUpdateConfig(c)
|
||||
|
||||
// Finish building the index for dependency resolution.
|
||||
ruleIndex.Finish()
|
||||
|
||||
// Resolve dependencies.
|
||||
rc := repos.NewRemoteCache(uc.repos)
|
||||
rc := repo.NewRemoteCache(uc.repos)
|
||||
for _, v := range visits {
|
||||
for _, r := range v.rules {
|
||||
for i, r := range v.rules {
|
||||
from := label.New(c.RepoName, v.pkgRel, r.Name())
|
||||
kindToResolver[r.Kind()].Resolve(c, ruleIndex, rc, r, from)
|
||||
mrslv.Resolver(r, v.file).Resolve(v.c, ruleIndex, rc, r, v.imports[i], from)
|
||||
}
|
||||
merger.MergeFile(v.file, v.empty, v.rules, merger.PostResolve, kinds)
|
||||
merger.MergeFile(v.file, v.empty, v.rules, merger.PostResolve,
|
||||
unionKindInfoMaps(kinds, v.mappedKindInfo))
|
||||
}
|
||||
|
||||
// Emit merged files.
|
||||
var exit error
|
||||
for _, v := range visits {
|
||||
merger.FixLoads(v.file, loads)
|
||||
content := v.file.Format()
|
||||
outputPath := findOutputPath(c, v.file)
|
||||
if err := uc.emit(outputPath, content); err != nil {
|
||||
log.Print(err)
|
||||
merger.FixLoads(v.file, applyKindMappings(v.mappedKinds, loads))
|
||||
if err := uc.emit(v.c, v.file); err != nil {
|
||||
if err == exitError {
|
||||
exit = err
|
||||
} else {
|
||||
log.Print(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
if uc.patchPath != "" {
|
||||
if err := ioutil.WriteFile(uc.patchPath, uc.patchBuffer.Bytes(), 0666); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return exit
|
||||
}
|
||||
|
||||
func newFixUpdateConfiguration(cmd command, args []string, cexts []config.Configurer, loads []rule.LoadInfo) (*config.Config, error) {
|
||||
|
|
@ -274,7 +354,7 @@ func newFixUpdateConfiguration(cmd command, args []string, cexts []config.Config
|
|||
|
||||
uc := getUpdateConfig(c)
|
||||
workspacePath := filepath.Join(c.RepoRoot, "WORKSPACE")
|
||||
if workspace, err := rule.LoadFile(workspacePath, ""); err != nil {
|
||||
if workspace, err := rule.LoadWorkspaceFile(workspacePath, ""); err != nil {
|
||||
if !os.IsNotExist(err) {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -283,7 +363,7 @@ func newFixUpdateConfiguration(cmd command, args []string, cexts []config.Config
|
|||
return nil, err
|
||||
}
|
||||
c.RepoName = findWorkspaceName(workspace)
|
||||
uc.repos = repos.ListRepositories(workspace)
|
||||
uc.repos = repo.ListRepositories(workspace)
|
||||
}
|
||||
repoPrefixes := make(map[string]bool)
|
||||
for _, r := range uc.repos {
|
||||
|
|
@ -293,7 +373,7 @@ func newFixUpdateConfiguration(cmd command, args []string, cexts []config.Config
|
|||
if repoPrefixes[imp] {
|
||||
continue
|
||||
}
|
||||
repo := repos.Repo{
|
||||
repo := repo.Repo{
|
||||
Name: label.ImportPathToBazelRepoName(imp),
|
||||
GoPrefix: imp,
|
||||
}
|
||||
|
|
@ -338,7 +418,7 @@ func fixWorkspace(c *config.Config, workspace *rule.File, loads []rule.LoadInfo)
|
|||
return nil
|
||||
}
|
||||
shouldFix := false
|
||||
for _, d := range c.Dirs {
|
||||
for _, d := range uc.dirs {
|
||||
if d == c.RepoRoot {
|
||||
shouldFix = true
|
||||
}
|
||||
|
|
@ -352,7 +432,7 @@ func fixWorkspace(c *config.Config, workspace *rule.File, loads []rule.LoadInfo)
|
|||
if err := merger.CheckGazelleLoaded(workspace); err != nil {
|
||||
return err
|
||||
}
|
||||
return uc.emit(workspace.Path, workspace.Format())
|
||||
return uc.emit(c, workspace)
|
||||
}
|
||||
|
||||
func findWorkspaceName(f *rule.File) string {
|
||||
|
|
@ -396,3 +476,51 @@ func findOutputPath(c *config.Config, f *rule.File) string {
|
|||
}
|
||||
return outputPath
|
||||
}
|
||||
|
||||
func unionKindInfoMaps(a, b map[string]rule.KindInfo) map[string]rule.KindInfo {
|
||||
if len(a) == 0 {
|
||||
return b
|
||||
}
|
||||
if len(b) == 0 {
|
||||
return a
|
||||
}
|
||||
result := make(map[string]rule.KindInfo, len(a)+len(b))
|
||||
for _, m := range []map[string]rule.KindInfo{a, b} {
|
||||
for k, v := range m {
|
||||
result[k] = v
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
// applyKindMappings returns a copy of LoadInfo that includes c.KindMap.
|
||||
func applyKindMappings(mappedKinds []config.MappedKind, loads []rule.LoadInfo) []rule.LoadInfo {
|
||||
if len(mappedKinds) == 0 {
|
||||
return loads
|
||||
}
|
||||
|
||||
// Add new RuleInfos or replace existing ones with merged ones.
|
||||
mappedLoads := make([]rule.LoadInfo, len(loads))
|
||||
copy(mappedLoads, loads)
|
||||
for _, mappedKind := range mappedKinds {
|
||||
mappedLoads = appendOrMergeKindMapping(mappedLoads, mappedKind)
|
||||
}
|
||||
return mappedLoads
|
||||
}
|
||||
|
||||
// appendOrMergeKindMapping adds LoadInfo for the given replacement.
|
||||
func appendOrMergeKindMapping(mappedLoads []rule.LoadInfo, mappedKind config.MappedKind) []rule.LoadInfo {
|
||||
// If mappedKind.KindLoad already exists in the list, create a merged copy.
|
||||
for _, load := range mappedLoads {
|
||||
if load.Name == mappedKind.KindLoad {
|
||||
load.Symbols = append(load.Symbols, mappedKind.KindName)
|
||||
return mappedLoads
|
||||
}
|
||||
}
|
||||
|
||||
// Add a new LoadInfo.
|
||||
return append(mappedLoads, rule.LoadInfo{
|
||||
Name: mappedKind.KindLoad,
|
||||
Symbols: []string{mappedKind.KindName},
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -19,11 +19,15 @@ import (
|
|||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func fixFile(path string, data []byte) error {
|
||||
if err := os.MkdirAll(filepath.Dir(path), 0777); err != nil {
|
||||
func fixFile(c *config.Config, f *rule.File) error {
|
||||
outPath := findOutputPath(c, f)
|
||||
if err := os.MkdirAll(filepath.Dir(outPath), 0777); err != nil {
|
||||
return err
|
||||
}
|
||||
return ioutil.WriteFile(path, data, 0666)
|
||||
return ioutil.WriteFile(outPath, f.Format(), 0666)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -56,8 +56,12 @@ func main() {
|
|||
log.SetPrefix("gazelle: ")
|
||||
log.SetFlags(0) // don't print timestamps
|
||||
|
||||
if err := run(os.Args[1:]); err != nil {
|
||||
log.Fatal(err)
|
||||
if err := run(os.Args[1:]); err != nil && err != flag.ErrHelp {
|
||||
if err == exitError {
|
||||
os.Exit(1)
|
||||
} else {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -112,7 +116,7 @@ For example:
|
|||
|
||||
gazelle update -h
|
||||
|
||||
Gazelle is under active delevopment, and its interface may change
|
||||
Gazelle is under active development, and its interface may change
|
||||
without notice.
|
||||
|
||||
`)
|
||||
|
|
|
|||
|
|
@ -16,12 +16,12 @@ limitations under the License.
|
|||
package main
|
||||
|
||||
import (
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/go"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/language"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/go"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
)
|
||||
|
||||
var languages = []language.Language{
|
||||
proto.New(),
|
||||
golang.New(),
|
||||
proto.NewLanguage(),
|
||||
golang.NewLanguage(),
|
||||
}
|
||||
|
|
|
|||
64
vendor/github.com/bazelbuild/bazel-gazelle/cmd/gazelle/metaresolver.go
generated
vendored
Normal file
64
vendor/github.com/bazelbuild/bazel-gazelle/cmd/gazelle/metaresolver.go
generated
vendored
Normal file
|
|
@ -0,0 +1,64 @@
|
|||
/* Copyright 2019 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 (
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// metaResolver provides a rule.Resolver for any rule.Rule.
|
||||
type metaResolver struct {
|
||||
// builtins provides a map of the language kinds to their resolver.
|
||||
builtins map[string]resolve.Resolver
|
||||
|
||||
// mappedKinds provides a list of replacements used by File.Pkg.
|
||||
mappedKinds map[string][]config.MappedKind
|
||||
}
|
||||
|
||||
func newMetaResolver() *metaResolver {
|
||||
return &metaResolver{
|
||||
builtins: make(map[string]resolve.Resolver),
|
||||
mappedKinds: make(map[string][]config.MappedKind),
|
||||
}
|
||||
}
|
||||
|
||||
// AddBuiltin registers a builtin kind with its info.
|
||||
func (mr *metaResolver) AddBuiltin(kindName string, resolver resolve.Resolver) {
|
||||
mr.builtins[kindName] = resolver
|
||||
}
|
||||
|
||||
// MappedKind records the fact that the given mapping was applied while
|
||||
// processing the given file.
|
||||
func (mr *metaResolver) MappedKind(f *rule.File, kind config.MappedKind) {
|
||||
mr.mappedKinds[f.Pkg] = append(mr.mappedKinds[f.Pkg], kind)
|
||||
}
|
||||
|
||||
// Resolver returns a resolver for the given rule and file, and a bool
|
||||
// indicating whether one was found. If f is nil, mapped kinds are disregarded.
|
||||
func (mr metaResolver) Resolver(r *rule.Rule, f *rule.File) resolve.Resolver {
|
||||
// If f is provided, check the replacements used while processing that package.
|
||||
// If the rule is a kind that was mapped, return the resolver for the kind it was mapped from.
|
||||
if f != nil {
|
||||
for _, mappedKind := range mr.mappedKinds[f.Pkg] {
|
||||
if mappedKind.KindName == r.Kind() {
|
||||
return mr.builtins[mappedKind.FromKind]
|
||||
}
|
||||
}
|
||||
}
|
||||
return mr.builtins[r.Kind()]
|
||||
}
|
||||
|
|
@ -17,9 +17,13 @@ package main
|
|||
|
||||
import (
|
||||
"os"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func printFile(_ string, data []byte) error {
|
||||
_, err := os.Stdout.Write(data)
|
||||
func printFile(c *config.Config, f *rule.File) error {
|
||||
content := f.Format()
|
||||
_, err := os.Stdout.Write(content)
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
|
|
@ -23,20 +23,31 @@ import (
|
|||
"path/filepath"
|
||||
"sync"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/merger"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/merger"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
type updateReposFn func(c *updateReposConfig, oldFile *rule.File, kinds map[string]rule.KindInfo) error
|
||||
|
||||
type updateReposConfig struct {
|
||||
fn updateReposFn
|
||||
lockFilename string
|
||||
importPaths []string
|
||||
fn updateReposFn
|
||||
lockFilename string
|
||||
importPaths []string
|
||||
buildExternalAttr string
|
||||
buildFileNamesAttr string
|
||||
buildFileGenerationAttr string
|
||||
buildTagsAttr string
|
||||
buildFileProtoModeAttr string
|
||||
buildExtraArgsAttr string
|
||||
}
|
||||
|
||||
var validBuildExternalAttr = []string{"external", "vendored"}
|
||||
var validBuildFileGenerationAttr = []string{"auto", "on", "off"}
|
||||
var validBuildFileProtoModeAttr = []string{"default", "legacy", "disable", "disable_global", "package"}
|
||||
|
||||
const updateReposName = "_update-repos"
|
||||
|
||||
func getUpdateReposConfig(c *config.Config) *updateReposConfig {
|
||||
|
|
@ -49,6 +60,12 @@ func (_ *updateReposConfigurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *c
|
|||
uc := &updateReposConfig{}
|
||||
c.Exts[updateReposName] = uc
|
||||
fs.StringVar(&uc.lockFilename, "from_file", "", "Gazelle will translate repositories listed in this file into repository rules in WORKSPACE. Currently only dep's Gopkg.lock is supported.")
|
||||
fs.StringVar(&uc.buildFileNamesAttr, "build_file_names", "", "Sets the build_file_name attribute for the generated go_repository rule(s).")
|
||||
fs.Var(&gzflag.AllowedStringFlag{Value: &uc.buildExternalAttr, Allowed: validBuildExternalAttr}, "build_external", "Sets the build_external attribute for the generated go_repository rule(s).")
|
||||
fs.Var(&gzflag.AllowedStringFlag{Value: &uc.buildFileGenerationAttr, Allowed: validBuildFileGenerationAttr}, "build_file_generation", "Sets the build_file_generation attribute for the generated go_repository rule(s).")
|
||||
fs.StringVar(&uc.buildTagsAttr, "build_tags", "", "Sets the build_tags attribute for the generated go_repository rule(s).")
|
||||
fs.Var(&gzflag.AllowedStringFlag{Value: &uc.buildFileProtoModeAttr, Allowed: validBuildFileProtoModeAttr}, "build_file_proto_mode", "Sets the build_file_proto_mode attribute for the generated go_repository rule(s).")
|
||||
fs.StringVar(&uc.buildExtraArgsAttr, "build_extra_args", "", "Sets the build_extra_args attribute for the generated go_repository rule(s).")
|
||||
}
|
||||
|
||||
func (_ *updateReposConfigurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error {
|
||||
|
|
@ -75,12 +92,11 @@ func (_ *updateReposConfigurer) KnownDirectives() []string { return nil }
|
|||
func (_ *updateReposConfigurer) Configure(c *config.Config, rel string, f *rule.File) {}
|
||||
|
||||
func updateRepos(args []string) error {
|
||||
cexts := make([]config.Configurer, 0, len(languages)+2)
|
||||
cexts := make([]config.Configurer, 0, 2)
|
||||
cexts = append(cexts, &config.CommonConfigurer{}, &updateReposConfigurer{})
|
||||
kinds := make(map[string]rule.KindInfo)
|
||||
loads := []rule.LoadInfo{}
|
||||
for _, lang := range languages {
|
||||
cexts = append(cexts, lang)
|
||||
loads = append(loads, lang.Loads()...)
|
||||
for kind, info := range lang.Kinds() {
|
||||
kinds[kind] = info
|
||||
|
|
@ -93,7 +109,7 @@ func updateRepos(args []string) error {
|
|||
uc := getUpdateReposConfig(c)
|
||||
|
||||
workspacePath := filepath.Join(c.RepoRoot, "WORKSPACE")
|
||||
f, err := rule.LoadFile(workspacePath, "")
|
||||
f, err := rule.LoadWorkspaceFile(workspacePath, "")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error loading %q: %v", workspacePath, err)
|
||||
}
|
||||
|
|
@ -154,11 +170,12 @@ file (currently only deps' Gopkg.lock is supported).
|
|||
FLAGS:
|
||||
|
||||
`)
|
||||
fs.PrintDefaults()
|
||||
}
|
||||
|
||||
func updateImportPaths(c *updateReposConfig, f *rule.File, kinds map[string]rule.KindInfo) error {
|
||||
rs := repos.ListRepositories(f)
|
||||
rc := repos.NewRemoteCache(rs)
|
||||
rs := repo.ListRepositories(f)
|
||||
rc := repo.NewRemoteCache(rs)
|
||||
|
||||
genRules := make([]*rule.Rule, len(c.importPaths))
|
||||
errs := make([]error, len(c.importPaths))
|
||||
|
|
@ -167,14 +184,15 @@ func updateImportPaths(c *updateReposConfig, f *rule.File, kinds map[string]rule
|
|||
for i, imp := range c.importPaths {
|
||||
go func(i int, imp string) {
|
||||
defer wg.Done()
|
||||
repo, err := repos.UpdateRepo(rc, imp)
|
||||
r, err := repo.UpdateRepo(rc, imp)
|
||||
if err != nil {
|
||||
errs[i] = err
|
||||
return
|
||||
}
|
||||
repo.Remote = "" // don't set these explicitly
|
||||
repo.VCS = ""
|
||||
rule := repos.GenerateRule(repo)
|
||||
r.Remote = "" // don't set these explicitly
|
||||
r.VCS = ""
|
||||
rule := repo.GenerateRule(r)
|
||||
applyBuildAttributes(c, rule)
|
||||
genRules[i] = rule
|
||||
}(i, imp)
|
||||
}
|
||||
|
|
@ -190,11 +208,37 @@ func updateImportPaths(c *updateReposConfig, f *rule.File, kinds map[string]rule
|
|||
}
|
||||
|
||||
func importFromLockFile(c *updateReposConfig, f *rule.File, kinds map[string]rule.KindInfo) error {
|
||||
genRules, err := repos.ImportRepoRules(c.lockFilename)
|
||||
rs := repo.ListRepositories(f)
|
||||
rc := repo.NewRemoteCache(rs)
|
||||
genRules, err := repo.ImportRepoRules(c.lockFilename, rc)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for i := range genRules {
|
||||
applyBuildAttributes(c, genRules[i])
|
||||
}
|
||||
|
||||
merger.MergeFile(f, nil, genRules, merger.PreResolve, kinds)
|
||||
return nil
|
||||
}
|
||||
|
||||
func applyBuildAttributes(c *updateReposConfig, r *rule.Rule) {
|
||||
if c.buildExternalAttr != "" {
|
||||
r.SetAttr("build_external", c.buildExternalAttr)
|
||||
}
|
||||
if c.buildFileNamesAttr != "" {
|
||||
r.SetAttr("build_file_name", c.buildFileNamesAttr)
|
||||
}
|
||||
if c.buildFileGenerationAttr != "" {
|
||||
r.SetAttr("build_file_generation", c.buildFileGenerationAttr)
|
||||
}
|
||||
if c.buildTagsAttr != "" {
|
||||
r.SetAttr("build_tags", c.buildTagsAttr)
|
||||
}
|
||||
if c.buildFileProtoModeAttr != "" {
|
||||
r.SetAttr("build_file_proto_mode", c.buildFileProtoModeAttr)
|
||||
}
|
||||
if c.buildExtraArgsAttr != "" {
|
||||
r.SetAttr("build_extra_args", c.buildExtraArgsAttr)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -21,9 +21,9 @@ import (
|
|||
"path/filepath"
|
||||
"regexp"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/version"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
)
|
||||
|
||||
var minimumRulesGoVersion = version.Version{0, 13, 0}
|
||||
|
|
@ -39,7 +39,7 @@ func checkRulesGoVersion(repoRoot string) {
|
|||
const message = `Gazelle may not be compatible with this version of rules_go.
|
||||
Update io_bazel_rules_go to a newer version in your WORKSPACE file.`
|
||||
|
||||
rulesGoPath, err := repos.FindExternalRepo(repoRoot, config.RulesGoRepoName)
|
||||
rulesGoPath, err := repo.FindExternalRepo(repoRoot, config.RulesGoRepoName)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@ go_library(
|
|||
"config.go",
|
||||
"constants.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/config",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/config",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/config",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/config",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/wspace:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -13,17 +13,28 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package config provides extensible configuration for Gazelle libraries.
|
||||
//
|
||||
// Packages may define Configurers which add support for new command-line
|
||||
// options and directive comments in build files. Note that the
|
||||
// language.Language interface embeds Configurer, so each language extension
|
||||
// has the opportunity
|
||||
//
|
||||
// When Gazelle walks the directory trees in a repository, it calls the
|
||||
// Configure method of each Configurer to produce a Config object.
|
||||
// Config objects are passed as arguments to most functions in Gazelle, so
|
||||
// this mechanism may be used to control many aspects of Gazelle's behavior.
|
||||
package config
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"go/build"
|
||||
"log"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/wspace"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// Config holds information about how Gazelle should run. This is based on
|
||||
|
|
@ -36,10 +47,6 @@ import (
|
|||
// information is language-specific and is stored in Exts. This information
|
||||
// is modified by extensions that implement Configurer.
|
||||
type Config struct {
|
||||
// Dirs is a list of absolute, canonical paths to directories where Gazelle
|
||||
// should run.
|
||||
Dirs []string
|
||||
|
||||
// RepoRoot is the absolute, canonical path to the root directory of the
|
||||
// repository with all symlinks resolved.
|
||||
RepoRoot string
|
||||
|
|
@ -64,6 +71,15 @@ type Config struct {
|
|||
// usage of deprecated rules.
|
||||
ShouldFix bool
|
||||
|
||||
// IndexLibraries determines whether Gazelle should build an index of
|
||||
// libraries in the workspace for dependency resolution
|
||||
IndexLibraries bool
|
||||
|
||||
// KindMap maps from a kind name to its replacement. It provides a way for
|
||||
// users to customize the kind of rules created by Gazelle, via
|
||||
// # gazelle:map_kind.
|
||||
KindMap map[string]MappedKind
|
||||
|
||||
// Exts is a set of configurable extensions. Generally, each language
|
||||
// has its own set of extensions, but other modules may provide their own
|
||||
// extensions as well. Values in here may be populated by command line
|
||||
|
|
@ -71,6 +87,11 @@ type Config struct {
|
|||
Exts map[string]interface{}
|
||||
}
|
||||
|
||||
// MappedKind describes a replacement to use for a built-in kind.
|
||||
type MappedKind struct {
|
||||
FromKind, KindName, KindLoad string
|
||||
}
|
||||
|
||||
func New() *Config {
|
||||
return &Config{
|
||||
ValidBuildFileNames: DefaultValidBuildFileNames,
|
||||
|
|
@ -87,11 +108,17 @@ func (c *Config) Clone() *Config {
|
|||
for k, v := range c.Exts {
|
||||
cc.Exts[k] = v
|
||||
}
|
||||
cc.KindMap = make(map[string]MappedKind)
|
||||
for k, v := range c.KindMap {
|
||||
cc.KindMap[k] = v
|
||||
}
|
||||
return &cc
|
||||
}
|
||||
|
||||
var DefaultValidBuildFileNames = []string{"BUILD.bazel", "BUILD"}
|
||||
|
||||
// IsValidBuildFileName returns true if a file with the given base name
|
||||
// should be treated as a build file.
|
||||
func (c *Config) IsValidBuildFileName(name string) bool {
|
||||
for _, n := range c.ValidBuildFileNames {
|
||||
if name == n {
|
||||
|
|
@ -101,6 +128,7 @@ func (c *Config) IsValidBuildFileName(name string) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// DefaultBuildFileName returns the base name used to create new build files.
|
||||
func (c *Config) DefaultBuildFileName() string {
|
||||
return c.ValidBuildFileNames[0]
|
||||
}
|
||||
|
|
@ -143,11 +171,13 @@ type Configurer interface {
|
|||
// i.e., those that apply to Config itself and not to Config.Exts.
|
||||
type CommonConfigurer struct {
|
||||
repoRoot, buildFileNames, readBuildFilesDir, writeBuildFilesDir string
|
||||
indexLibraries bool
|
||||
}
|
||||
|
||||
func (cc *CommonConfigurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *Config) {
|
||||
fs.StringVar(&cc.repoRoot, "repo_root", "", "path to a directory which corresponds to go_prefix, otherwise gazelle searches for it.")
|
||||
fs.StringVar(&cc.buildFileNames, "build_file_name", strings.Join(DefaultValidBuildFileNames, ","), "comma-separated list of valid build file names.\nThe first element of the list is the name of output build files to generate.")
|
||||
fs.BoolVar(&cc.indexLibraries, "index", true, "when true, gazelle will build an index of libraries in the workspace for dependency resolution")
|
||||
fs.StringVar(&cc.readBuildFilesDir, "experimental_read_build_files_dir", "", "path to a directory where build files should be read from (instead of -repo_root)")
|
||||
fs.StringVar(&cc.writeBuildFilesDir, "experimental_write_build_files_dir", "", "path to a directory where build files should be written to (instead of -repo_root)")
|
||||
}
|
||||
|
|
@ -181,12 +211,12 @@ func (cc *CommonConfigurer) CheckFlags(fs *flag.FlagSet, c *Config) error {
|
|||
return fmt.Errorf("%s: failed to find absolute path of -write_build_files_dir: %v", cc.writeBuildFilesDir, err)
|
||||
}
|
||||
}
|
||||
|
||||
c.IndexLibraries = cc.indexLibraries
|
||||
return nil
|
||||
}
|
||||
|
||||
func (cc *CommonConfigurer) KnownDirectives() []string {
|
||||
return []string{"build_file_name"}
|
||||
return []string{"build_file_name", "map_kind"}
|
||||
}
|
||||
|
||||
func (cc *CommonConfigurer) Configure(c *Config, rel string, f *rule.File) {
|
||||
|
|
@ -194,76 +224,24 @@ func (cc *CommonConfigurer) Configure(c *Config, rel string, f *rule.File) {
|
|||
return
|
||||
}
|
||||
for _, d := range f.Directives {
|
||||
if d.Key == "build_file_name" {
|
||||
switch d.Key {
|
||||
case "build_file_name":
|
||||
c.ValidBuildFileNames = strings.Split(d.Value, ",")
|
||||
|
||||
case "map_kind":
|
||||
vals := strings.Fields(d.Value)
|
||||
if len(vals) != 3 {
|
||||
log.Printf("expected three arguments (gazelle:map_kind from_kind to_kind load_file), got %v", vals)
|
||||
continue
|
||||
}
|
||||
if c.KindMap == nil {
|
||||
c.KindMap = make(map[string]MappedKind)
|
||||
}
|
||||
c.KindMap[vals[0]] = MappedKind{
|
||||
FromKind: vals[0],
|
||||
KindName: vals[1],
|
||||
KindLoad: vals[2],
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// CheckPrefix checks that a string may be used as a prefix. We forbid local
|
||||
// (relative) imports and those beginning with "/". We allow the empty string,
|
||||
// but generated rules must not have an empty importpath.
|
||||
func CheckPrefix(prefix string) error {
|
||||
if strings.HasPrefix(prefix, "/") || build.IsLocalImport(prefix) {
|
||||
return fmt.Errorf("invalid prefix: %q", prefix)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// DependencyMode determines how imports of packages outside of the prefix
|
||||
// are resolved.
|
||||
type DependencyMode int
|
||||
|
||||
const (
|
||||
// ExternalMode indicates imports should be resolved to external dependencies
|
||||
// (declared in WORKSPACE).
|
||||
ExternalMode DependencyMode = iota
|
||||
|
||||
// VendorMode indicates imports should be resolved to libraries in the
|
||||
// vendor directory.
|
||||
VendorMode
|
||||
)
|
||||
|
||||
// DependencyModeFromString converts a string from the command line
|
||||
// to a DependencyMode. Valid strings are "external", "vendor". An error will
|
||||
// be returned for an invalid string.
|
||||
func DependencyModeFromString(s string) (DependencyMode, error) {
|
||||
switch s {
|
||||
case "external":
|
||||
return ExternalMode, nil
|
||||
case "vendored":
|
||||
return VendorMode, nil
|
||||
default:
|
||||
return 0, fmt.Errorf("unrecognized dependency mode: %q", s)
|
||||
}
|
||||
}
|
||||
|
||||
// ProtoMode determines how proto rules are generated.
|
||||
type ProtoMode int
|
||||
|
||||
const (
|
||||
// DefaultProtoMode generates proto_library and new grpc_proto_library rules.
|
||||
// .pb.go files are excluded when there is a .proto file with a similar name.
|
||||
DefaultProtoMode ProtoMode = iota
|
||||
|
||||
// DisableProtoMode ignores .proto files. .pb.go files are treated
|
||||
// as normal sources.
|
||||
DisableProtoMode
|
||||
|
||||
// LegacyProtoMode generates filegroups for .proto files if .pb.go files
|
||||
// are present in the same directory.
|
||||
LegacyProtoMode
|
||||
)
|
||||
|
||||
func ProtoModeFromString(s string) (ProtoMode, error) {
|
||||
switch s {
|
||||
case "default":
|
||||
return DefaultProtoMode, nil
|
||||
case "disable":
|
||||
return DisableProtoMode, nil
|
||||
case "legacy":
|
||||
return LegacyProtoMode, nil
|
||||
default:
|
||||
return 0, fmt.Errorf("unrecognized proto mode: %q", s)
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
/* Copyright 2017 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 config
|
||||
|
||||
const (
|
||||
// RulesGoRepoName is the canonical name of the rules_go repository. It must
|
||||
// match the workspace name in WORKSPACE.
|
||||
// TODO(jayconrod): move to language/go.
|
||||
RulesGoRepoName = "io_bazel_rules_go"
|
||||
|
||||
// GazelleImportsKey is an internal attribute that lists imported packages
|
||||
// on generated rules. It is replaced with "deps" during import resolution.
|
||||
GazelleImportsKey = "_gazelle_imports"
|
||||
)
|
||||
|
|
@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
|||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["flag.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/flag",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/flag",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/flag",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/flag",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
|
@ -12,21 +12,29 @@
|
|||
// See the License for the specific language governing permissions and
|
||||
// limitations under the License.
|
||||
|
||||
// Package flag provides some general-purpose types which satisfy the
|
||||
// flag.Value interface.
|
||||
package flag
|
||||
|
||||
import (
|
||||
stdflag "flag"
|
||||
"fmt"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// MultiFlag allows repeated string flags to be collected into a slice
|
||||
// MultiFlag collects repeated string flags into a slice.
|
||||
type MultiFlag struct {
|
||||
IsSet *bool
|
||||
Values *[]string
|
||||
}
|
||||
|
||||
var _ stdflag.Value = (*MultiFlag)(nil)
|
||||
|
||||
func (m *MultiFlag) Set(v string) error {
|
||||
if m.IsSet != nil && !*m.IsSet {
|
||||
*m.IsSet = true
|
||||
*m.Values = nil // clear any default values
|
||||
}
|
||||
*m.Values = append(*m.Values, v)
|
||||
return nil
|
||||
}
|
||||
|
|
@ -58,3 +66,27 @@ func (f *ExplicitFlag) String() string {
|
|||
}
|
||||
return *f.Value
|
||||
}
|
||||
|
||||
var _ stdflag.Value = (*AllowedStringFlag)(nil)
|
||||
|
||||
type AllowedStringFlag struct {
|
||||
Allowed []string
|
||||
Value *string
|
||||
}
|
||||
|
||||
func (f *AllowedStringFlag) Set(v string) error {
|
||||
for _, a := range f.Allowed {
|
||||
if v == a {
|
||||
*f.Value = v
|
||||
return nil
|
||||
}
|
||||
}
|
||||
return fmt.Errorf("Invalid argument %q. Possible values are: %s", v, strings.Join(f.Allowed, ", "))
|
||||
}
|
||||
|
||||
func (f *AllowedStringFlag) String() string {
|
||||
if f == nil || f.Value == nil {
|
||||
return ""
|
||||
}
|
||||
return *f.Value
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
/* Copyright 2017 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 config
|
||||
|
||||
const (
|
||||
// RulesGoRepoName is the canonical name of the rules_go repository. It must
|
||||
// match the workspace name in WORKSPACE.
|
||||
RulesGoRepoName = "io_bazel_rules_go"
|
||||
// DefaultLibName is the name of the default go_library rule in a Go
|
||||
// package directory. It must be consistent to DEFAULT_LIB in go/private/common.bf.
|
||||
DefaultLibName = "go_default_library"
|
||||
// DefaultTestName is a name of an internal test corresponding to
|
||||
// DefaultLibName. It does not need to be consistent to something but it
|
||||
// just needs to be unique in the Bazel package
|
||||
DefaultTestName = "go_default_test"
|
||||
// DefaultXTestName is a name of an external test corresponding to
|
||||
// DefaultLibName.
|
||||
DefaultXTestName = "go_default_xtest"
|
||||
// DefaultProtosName is the name of a filegroup created
|
||||
// whenever the library contains .pb.go files
|
||||
DefaultProtosName = "go_default_library_protos"
|
||||
// DefaultCgoLibName is the name of the default cgo_library rule in a Go package directory.
|
||||
DefaultCgoLibName = "cgo_default_library"
|
||||
|
||||
// GrpcCompilerLabel is the label for the gRPC compiler plugin, used in the
|
||||
// "compilers" attribute of go_proto_library rules.
|
||||
GrpcCompilerLabel = "@io_bazel_rules_go//proto:go_grpc"
|
||||
|
||||
// GazelleImportsKey is an internal attribute that lists imported packages
|
||||
// on generated rules. It is replaced with "deps" during import resolution.
|
||||
GazelleImportsKey = "_gazelle_imports"
|
||||
)
|
||||
|
||||
// Language is the name of a programming langauge that Gazelle knows about.
|
||||
// This is used to specify import paths.
|
||||
type Language int
|
||||
|
||||
const (
|
||||
// GoLang marks Go targets.
|
||||
GoLang Language = iota
|
||||
|
||||
// ProtoLang marks protocol buffer targets.
|
||||
ProtoLang
|
||||
)
|
||||
|
||||
func (l Language) String() string {
|
||||
switch l {
|
||||
case GoLang:
|
||||
return "go"
|
||||
case ProtoLang:
|
||||
return "proto"
|
||||
default:
|
||||
return "unknown"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["label.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/label",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/label",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = ["//vendor/github.com/bazelbuild/bazel-gazelle/internal/pathtools:go_default_library"],
|
||||
)
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["lang.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/language",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/language",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"constants.go",
|
||||
"fileinfo.go",
|
||||
"fix.go",
|
||||
"generate.go",
|
||||
"kinds.go",
|
||||
"known_go_imports.go",
|
||||
"known_proto_imports.go",
|
||||
"lang.go",
|
||||
"package.go",
|
||||
"resolve.go",
|
||||
"std_package_list.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/language/go",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/flag:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/repos:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/buildtools/build:go_default_library",
|
||||
],
|
||||
)
|
||||
136
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go/known_go_imports.go
generated
vendored
136
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go/known_go_imports.go
generated
vendored
|
|
@ -1,136 +0,0 @@
|
|||
|
||||
// Generated by internal/language/proto/gen/gen_known_imports.go
|
||||
// From internal/language/proto/proto.csv
|
||||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
|
||||
var knownGoProtoImports = map[string]label.Label{
|
||||
|
||||
"github.com/golang/protobuf/ptypes/any": label.New("io_bazel_rules_go", "proto/wkt", "any_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/api": label.New("io_bazel_rules_go", "proto/wkt", "api_go_proto"),
|
||||
"github.com/golang/protobuf/protoc-gen-go/plugin": label.New("io_bazel_rules_go", "proto/wkt", "compiler_plugin_go_proto"),
|
||||
"github.com/golang/protobuf/protoc-gen-go/descriptor": label.New("io_bazel_rules_go", "proto/wkt", "descriptor_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/duration": label.New("io_bazel_rules_go", "proto/wkt", "duration_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/empty": label.New("io_bazel_rules_go", "proto/wkt", "empty_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/field_mask": label.New("io_bazel_rules_go", "proto/wkt", "field_mask_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/source_context": label.New("io_bazel_rules_go", "proto/wkt", "source_context_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/struct": label.New("io_bazel_rules_go", "proto/wkt", "struct_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/timestamp": label.New("io_bazel_rules_go", "proto/wkt", "timestamp_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/ptype": label.New("io_bazel_rules_go", "proto/wkt", "type_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/wrappers": label.New("io_bazel_rules_go", "proto/wkt", "wrappers_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/home/graph/v1": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/genomics/v1": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/genomics/v1alpha2": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/v1": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/v2": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/table/v1": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/v2": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/privacy/dlp/v2": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/watcher/v1": label.New("go_googleapis", "google/watcher/v1", "watcher_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/admin/v1beta1": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/v1beta1": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/example/library/v1": label.New("go_googleapis", "google/example/library/v1", "library_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/v1": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/legacy": label.New("go_googleapis", "google/appengine/legacy", "legacy_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/logging/v1": label.New("go_googleapis", "google/appengine/logging/v1", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/storagetransfer/v1": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/longrunning": label.New("go_googleapis", "google/longrunning", "longrunning_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1": label.New("go_googleapis", "google/container/v1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1beta1": label.New("go_googleapis", "google/container/v1beta1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1alpha1": label.New("go_googleapis", "google/container/v1alpha1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/v1beta3": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/v1": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/admin/v1": label.New("go_googleapis", "google/datastore/admin/v1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/admin/v1beta1": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bytestream": label.New("go_googleapis", "google/bytestream", "bytestream_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/v1": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/v1/logging": label.New("go_googleapis", "google/iam/v1/logging", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/admin/v1": label.New("go_googleapis", "google/iam/admin/v1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/money": label.New("go_googleapis", "google/type", "money_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/latlng": label.New("go_googleapis", "google/type", "latlng_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/color": label.New("go_googleapis", "google/type", "color_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/timeofday": label.New("go_googleapis", "google/type", "timeofday_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/date": label.New("go_googleapis", "google/type", "date_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/dayofweek": label.New("go_googleapis", "google/type", "dayofweek_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/postaladdress": label.New("go_googleapis", "google/type", "postaladdress_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/resultstore/v2": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/source/v1": label.New("go_googleapis", "google/devtools/source/v1", "source_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudbuild/v1": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/sourcerepo/v1": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudtrace/v1": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudtrace/v2": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/build/v1": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/clouddebugger/v2": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/resourcemanager/v2": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/kms/v1": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/tasks/v2beta2": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/common": label.New("go_googleapis", "google/cloud/oslogin/common", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1beta": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dialogflow/v2": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/redis/v1beta1": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/location": label.New("go_googleapis", "google/cloud/location", "location_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1": label.New("go_googleapis", "google/cloud/language/v1", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1beta2": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1beta1": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/speech/v1": label.New("go_googleapis", "google/cloud/speech/v1", "speech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/speech/v1beta1": label.New("go_googleapis", "google/cloud/speech/v1beta1", "speech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/iot/v1": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1p1beta1": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/audit": label.New("go_googleapis", "google/cloud/audit", "audit_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/support/common": label.New("go_googleapis", "google/cloud/support", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/support/v1alpha1": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/ml/v1": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/texttospeech/v1": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/texttospeech/v1beta1": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/functions/v1beta2": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/billing/v1": label.New("go_googleapis", "google/cloud/billing/v1", "billing_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dataproc/v1": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/serviceconfig": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/annotations": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/configchange": label.New("go_googleapis", "google/api", "configchange_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/distribution": label.New("go_googleapis", "google/api", "distribution_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/monitoredres": label.New("go_googleapis", "google/api", "monitoredres_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/metric": label.New("go_googleapis", "google/api", "metric_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/label": label.New("go_googleapis", "google/api", "label_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/httpbody": label.New("go_googleapis", "google/api", "httpbody_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api": label.New("go_googleapis", "google/api/experimental", "api_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/servicemanagement/v1": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/servicecontrol/v1": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/pubsub/v1": label.New("go_googleapis", "google/pubsub/v1", "pubsub_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/pubsub/v1beta2": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/v1": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/admin/database/v1": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/admin/instance/v1": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/monitoring/v3": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/code": label.New("go_googleapis", "google/rpc", "code_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/status": label.New("go_googleapis", "google/rpc", "status_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/errdetails": label.New("go_googleapis", "google/rpc", "errdetails_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/streetview/publish/v1": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/logging/v2": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/logging/type": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
}
|
||||
300
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go/known_proto_imports.go
generated
vendored
300
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/go/known_proto_imports.go
generated
vendored
|
|
@ -1,300 +0,0 @@
|
|||
|
||||
// Generated by internal/language/proto/gen/gen_known_imports.go
|
||||
// From internal/language/proto/proto.csv
|
||||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
|
||||
var knownProtoImports = map[string]label.Label{
|
||||
|
||||
"google/protobuf/any.proto": label.New("io_bazel_rules_go", "proto/wkt", "any_go_proto"),
|
||||
"google/protobuf/api.proto": label.New("io_bazel_rules_go", "proto/wkt", "api_go_proto"),
|
||||
"google/protobuf/compiler/plugin.proto": label.New("io_bazel_rules_go", "proto/wkt", "compiler_plugin_go_proto"),
|
||||
"google/protobuf/descriptor.proto": label.New("io_bazel_rules_go", "proto/wkt", "descriptor_go_proto"),
|
||||
"google/protobuf/duration.proto": label.New("io_bazel_rules_go", "proto/wkt", "duration_go_proto"),
|
||||
"google/protobuf/empty.proto": label.New("io_bazel_rules_go", "proto/wkt", "empty_go_proto"),
|
||||
"google/protobuf/field_mask.proto": label.New("io_bazel_rules_go", "proto/wkt", "field_mask_go_proto"),
|
||||
"google/protobuf/source_context.proto": label.New("io_bazel_rules_go", "proto/wkt", "source_context_go_proto"),
|
||||
"google/protobuf/struct.proto": label.New("io_bazel_rules_go", "proto/wkt", "struct_go_proto"),
|
||||
"google/protobuf/timestamp.proto": label.New("io_bazel_rules_go", "proto/wkt", "timestamp_go_proto"),
|
||||
"google/protobuf/type.proto": label.New("io_bazel_rules_go", "proto/wkt", "type_go_proto"),
|
||||
"google/protobuf/wrappers.proto": label.New("io_bazel_rules_go", "proto/wkt", "wrappers_go_proto"),
|
||||
"google/assistant/embedded/v1alpha2/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_go_proto"),
|
||||
"google/assistant/embedded/v1alpha1/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_go_proto"),
|
||||
"google/home/graph/v1/device.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google/home/graph/v1/homegraph.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google/genomics/v1/operations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/variants.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/position.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/references.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/cigar.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/datasets.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readalignment.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/annotations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/reads.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readgroup.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readgroupset.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/range.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1alpha2/pipelines.proto": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_go_proto"),
|
||||
"google/bigtable/v1/bigtable_service_messages.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/v1/bigtable_service.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/v1/bigtable_data.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_instance_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/instance.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/table.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_table_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/common.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_data.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/v2/bigtable.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google/bigtable/v2/data.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google/privacy/dlp/v2/storage.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google/privacy/dlp/v2/dlp.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google/watcher/v1/watch.proto": label.New("go_googleapis", "google/watcher/v1", "watcher_go_proto"),
|
||||
"google/firestore/admin/v1beta1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/firestore/v1beta1/write.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/document.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/firestore.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/query.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/common.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/example/library/v1/library.proto": label.New("go_googleapis", "google/example/library/v1", "library_go_proto"),
|
||||
"google/appengine/v1/instance.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/audit_data.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/appengine.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/application.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/operation.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/app_yaml.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/location.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/service.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/deploy.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/version.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/legacy/audit_data.proto": label.New("go_googleapis", "google/appengine/legacy", "legacy_go_proto"),
|
||||
"google/appengine/logging/v1/request_log.proto": label.New("go_googleapis", "google/appengine/logging/v1", "logging_go_proto"),
|
||||
"google/storagetransfer/v1/transfer.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google/storagetransfer/v1/transfer_types.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google/longrunning/operations.proto": label.New("go_googleapis", "google/longrunning", "longrunning_go_proto"),
|
||||
"google/container/v1/cluster_service.proto": label.New("go_googleapis", "google/container/v1", "container_go_proto"),
|
||||
"google/container/v1beta1/cluster_service.proto": label.New("go_googleapis", "google/container/v1beta1", "container_go_proto"),
|
||||
"google/container/v1alpha1/cluster_service.proto": label.New("go_googleapis", "google/container/v1alpha1", "container_go_proto"),
|
||||
"google/datastore/v1beta3/datastore.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/datastore/v1beta3/query.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/datastore/v1beta3/entity.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/datastore/v1/datastore.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/v1/query.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/v1/entity.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/admin/v1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_go_proto"),
|
||||
"google/datastore/admin/v1beta1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/bytestream/bytestream.proto": label.New("go_googleapis", "google/bytestream", "bytestream_go_proto"),
|
||||
"google/iam/v1/iam_policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google/iam/v1/policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google/iam/v1/logging/audit_data.proto": label.New("go_googleapis", "google/iam/v1/logging", "logging_go_proto"),
|
||||
"google/iam/admin/v1/iam.proto": label.New("go_googleapis", "google/iam/admin/v1", "admin_go_proto"),
|
||||
"google/type/money.proto": label.New("go_googleapis", "google/type", "money_go_proto"),
|
||||
"google/type/latlng.proto": label.New("go_googleapis", "google/type", "latlng_go_proto"),
|
||||
"google/type/color.proto": label.New("go_googleapis", "google/type", "color_go_proto"),
|
||||
"google/type/timeofday.proto": label.New("go_googleapis", "google/type", "timeofday_go_proto"),
|
||||
"google/type/date.proto": label.New("go_googleapis", "google/type", "date_go_proto"),
|
||||
"google/type/dayofweek.proto": label.New("go_googleapis", "google/type", "dayofweek_go_proto"),
|
||||
"google/type/postal_address.proto": label.New("go_googleapis", "google/type", "postaladdress_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_group_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/common.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/resultstore/v2/file.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/configuration.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/action.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_file_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/test_suite.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/file_set.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/coverage.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/coverage_summary.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/configured_target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/invocation.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/common.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/source/v1/source_context.proto": label.New("go_googleapis", "google/devtools/source/v1", "source_go_proto"),
|
||||
"google/devtools/remoteexecution/v1test/remote_execution.proto": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_go_proto"),
|
||||
"google/devtools/cloudbuild/v1/cloudbuild.proto": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_go_proto"),
|
||||
"google/devtools/sourcerepo/v1/sourcerepo.proto": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/worker.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/tasks.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/bots.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/command.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/cloudtrace/v1/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_go_proto"),
|
||||
"google/devtools/cloudtrace/v2/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google/devtools/cloudtrace/v2/tracing.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google/devtools/cloudprofiler/v2/profiler.proto": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/source_context.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/image_basis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/build/v1/build_events.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/build/v1/build_status.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/build/v1/publish_build_event.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/debugger.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/data.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/controller.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/cloud/resourcemanager/v2/folders.proto": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_go_proto"),
|
||||
"google/cloud/kms/v1/resources.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google/cloud/kms/v1/service.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/resources.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/oslogin/v1/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_go_proto"),
|
||||
"google/cloud/oslogin/v1alpha/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_go_proto"),
|
||||
"google/cloud/oslogin/common/common.proto": label.New("go_googleapis", "google/cloud/oslogin/common", "common_go_proto"),
|
||||
"google/cloud/oslogin/v1beta/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/redis/v1beta1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_go_proto"),
|
||||
"google/cloud/location/locations.proto": label.New("go_googleapis", "google/cloud/location", "location_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_config.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/crawled_url.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_run.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_addon.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/language/v1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1", "language_go_proto"),
|
||||
"google/cloud/language/v1beta2/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_go_proto"),
|
||||
"google/cloud/language/v1beta1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_go_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/transfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/datatransfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google/cloud/bigquery/logging/v1/audit_data.proto": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_go_proto"),
|
||||
"google/cloud/vision/v1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/speech/v1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1", "speech_go_proto"),
|
||||
"google/cloud/speech/v1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1beta1", "speech_go_proto"),
|
||||
"google/cloud/speech/v1p1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_go_proto"),
|
||||
"google/cloud/iot/v1/device_manager.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google/cloud/iot/v1/resources.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google/cloud/videointelligence/v1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1beta2/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1p1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_go_proto"),
|
||||
"google/cloud/audit/audit_log.proto": label.New("go_googleapis", "google/cloud/audit", "audit_go_proto"),
|
||||
"google/cloud/support/common.proto": label.New("go_googleapis", "google/cloud/support", "common_go_proto"),
|
||||
"google/cloud/support/v1alpha1/cloud_support.proto": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_go_proto"),
|
||||
"google/cloud/ml/v1/operation_metadata.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/job_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/prediction_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/model_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/project_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/texttospeech/v1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_go_proto"),
|
||||
"google/cloud/texttospeech/v1beta1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_go_proto"),
|
||||
"google/cloud/functions/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google/cloud/functions/v1beta2/functions.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google/cloud/billing/v1/cloud_billing.proto": label.New("go_googleapis", "google/cloud/billing/v1", "billing_go_proto"),
|
||||
"google/cloud/dataproc/v1/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/shared.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/api/context.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/http.proto": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google/api/config_change.proto": label.New("go_googleapis", "google/api", "configchange_go_proto"),
|
||||
"google/api/system_parameter.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/monitoring.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/distribution.proto": label.New("go_googleapis", "google/api", "distribution_go_proto"),
|
||||
"google/api/endpoint.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/usage.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/monitored_resource.proto": label.New("go_googleapis", "google/api", "monitoredres_go_proto"),
|
||||
"google/api/annotations.proto": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google/api/control.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/metric.proto": label.New("go_googleapis", "google/api", "metric_go_proto"),
|
||||
"google/api/label.proto": label.New("go_googleapis", "google/api", "label_go_proto"),
|
||||
"google/api/consumer.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/log.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/billing.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/service.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/logging.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/documentation.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/quota.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/auth.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/backend.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/source_info.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/httpbody.proto": label.New("go_googleapis", "google/api", "httpbody_go_proto"),
|
||||
"google/api/experimental/authorization_config.proto": label.New("go_googleapis", "google/api/experimental", "api_go_proto"),
|
||||
"google/api/experimental/experimental.proto": label.New("go_googleapis", "google/api/experimental", "api_go_proto"),
|
||||
"google/api/servicemanagement/v1/servicemanager.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google/api/servicemanagement/v1/resources.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google/api/servicecontrol/v1/quota_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/distribution.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/check_error.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/operation.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/metric_value.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/log_entry.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/service_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/pubsub/v1/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1", "pubsub_go_proto"),
|
||||
"google/pubsub/v1beta2/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_go_proto"),
|
||||
"google/spanner/v1/mutation.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/spanner.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/transaction.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/keys.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/type.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/query_plan.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/result_set.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/admin/database/v1/spanner_database_admin.proto": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_go_proto"),
|
||||
"google/spanner/admin/instance/v1/spanner_instance_admin.proto": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_go_proto"),
|
||||
"google/monitoring/v3/group.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/mutation_record.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/notification.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/alert_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/uptime_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/group_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/alert.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/uptime.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/metric.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/notification_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/metric_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/common.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/rpc/code.proto": label.New("go_googleapis", "google/rpc", "code_go_proto"),
|
||||
"google/rpc/status.proto": label.New("go_googleapis", "google/rpc", "status_go_proto"),
|
||||
"google/rpc/error_details.proto": label.New("go_googleapis", "google/rpc", "errdetails_go_proto"),
|
||||
"google/streetview/publish/v1/resources.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/streetview/publish/v1/rpcmessages.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/streetview/publish/v1/streetview_publish.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/logging/v2/logging_metrics.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/logging_config.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/log_entry.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/logging.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/type/log_severity.proto": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
"google/logging/type/http_request.proto": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
}
|
||||
|
|
@ -1,96 +0,0 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 language
|
||||
|
||||
import (
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
)
|
||||
|
||||
// Language describes an extension for Gazelle that provides support for
|
||||
// a set of Bazel rules.
|
||||
//
|
||||
// Languages are used primarily by the fix and update commands. The order
|
||||
// in which languages are used matters, since languages may depend on
|
||||
// one another. For example, go depends on proto, since go_proto_libraries
|
||||
// are generated from metadata stored in proto_libraries.
|
||||
//
|
||||
// A single instance of Language is created for each fix / update run. Some
|
||||
// state may be stored in this instance, but stateless behavior is encouraged,
|
||||
// especially since some operations may be concurrent in the future.
|
||||
//
|
||||
// Tasks languages are used for
|
||||
//
|
||||
// * Configuration (embedded interface config.Configurer). Languages may
|
||||
// define command line flags and alter the configuration in a directory
|
||||
// based on directives in build files.
|
||||
//
|
||||
// * Fixing deprecated usage of rules in build files.
|
||||
//
|
||||
// * Generating rules from source files in a directory.
|
||||
//
|
||||
// * Resolving library imports (embedded interface resolve.Resolver). For
|
||||
// example, import strings like "github.com/foo/bar" in Go can be resolved
|
||||
// into Bazel labels like "@com_github_foo_bar//:go_default_library".
|
||||
//
|
||||
// Tasks languages support
|
||||
//
|
||||
// * Generating load statements: languages list files and symbols that may
|
||||
// be loaded.
|
||||
//
|
||||
// * Merging generated rules into existing rules: languages provide metadata
|
||||
// that helps with rule matching, merging, and deletion.
|
||||
type Language interface {
|
||||
config.Configurer
|
||||
resolve.Resolver
|
||||
|
||||
// Kinds returns a map of maps rule names (kinds) and information on how to
|
||||
// match and merge attributes that may be found in rules of those kinds. All
|
||||
// kinds of rules generated for this language may be found here.
|
||||
Kinds() map[string]rule.KindInfo
|
||||
|
||||
// Loads returns .bzl files and symbols they define. Every rule generated by
|
||||
// GenerateRules, now or in the past, should be loadable from one of these
|
||||
// files.
|
||||
Loads() []rule.LoadInfo
|
||||
|
||||
// GenerateRules extracts build metadata from source files in a directory.
|
||||
// GenerateRules is called in each directory where an update is requested
|
||||
// in depth-first post-order.
|
||||
//
|
||||
// c is the configuration for the current directory.
|
||||
// dir is the absolute path to the directory to scan.
|
||||
// rel is the relative path to the directory from the repository root.
|
||||
// f is the build file. It may be nil. It should not be modified.
|
||||
// subdirs is a list of subdirectory names.
|
||||
// regularFiles is a list of normal files in the directory.
|
||||
// genFiles is a list of generated files, found in outputs of rules.
|
||||
// otherEmpty and otherGen are lists of empty and generated rules created
|
||||
// by other languages processed before this language.
|
||||
//
|
||||
// empty is a list of empty rules that may be deleted after merge.
|
||||
// gen is a list of generated rules that may be updated or added.
|
||||
//
|
||||
// Any non-fatal errors this function encounters should be logged using
|
||||
// log.Print.
|
||||
GenerateRules(c *config.Config, dir, rel string, f *rule.File, subdirs, regularFiles, genFiles []string, otherEmpty, otherGen []*rule.Rule) (empty, gen []*rule.Rule)
|
||||
|
||||
// Fix repairs deprecated usage of language-specific rules in f. This is
|
||||
// called before the file is indexed. Unless c.ShouldFix is true, fixes
|
||||
// that delete or rename rules should not be performed.
|
||||
Fix(c *config.Config, f *rule.File)
|
||||
}
|
||||
28
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto/BUILD.bazel
generated
vendored
28
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto/BUILD.bazel
generated
vendored
|
|
@ -1,28 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"constants.go",
|
||||
"fileinfo.go",
|
||||
"fix.go",
|
||||
"generate.go",
|
||||
"kinds.go",
|
||||
"known_imports.go",
|
||||
"lang.go",
|
||||
"package.go",
|
||||
"resolve.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/language/proto",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/repos:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
300
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto/known_imports.go
generated
vendored
300
vendor/github.com/bazelbuild/bazel-gazelle/internal/language/proto/known_imports.go
generated
vendored
|
|
@ -1,300 +0,0 @@
|
|||
|
||||
// Generated by internal/language/proto/gen/gen_known_imports.go
|
||||
// From internal/language/proto/proto.csv
|
||||
|
||||
package proto
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
|
||||
var knownImports = map[string]label.Label{
|
||||
|
||||
"google/protobuf/any.proto": label.New("com_google_protobuf", "", "any_proto"),
|
||||
"google/protobuf/api.proto": label.New("com_google_protobuf", "", "api_proto"),
|
||||
"google/protobuf/compiler/plugin.proto": label.New("com_google_protobuf", "", "compiler_plugin_proto"),
|
||||
"google/protobuf/descriptor.proto": label.New("com_google_protobuf", "", "descriptor_proto"),
|
||||
"google/protobuf/duration.proto": label.New("com_google_protobuf", "", "duration_proto"),
|
||||
"google/protobuf/empty.proto": label.New("com_google_protobuf", "", "empty_proto"),
|
||||
"google/protobuf/field_mask.proto": label.New("com_google_protobuf", "", "field_mask_proto"),
|
||||
"google/protobuf/source_context.proto": label.New("com_google_protobuf", "", "source_context_proto"),
|
||||
"google/protobuf/struct.proto": label.New("com_google_protobuf", "", "struct_proto"),
|
||||
"google/protobuf/timestamp.proto": label.New("com_google_protobuf", "", "timestamp_proto"),
|
||||
"google/protobuf/type.proto": label.New("com_google_protobuf", "", "type_proto"),
|
||||
"google/protobuf/wrappers.proto": label.New("com_google_protobuf", "", "wrappers_proto"),
|
||||
"google/assistant/embedded/v1alpha2/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_proto"),
|
||||
"google/assistant/embedded/v1alpha1/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_proto"),
|
||||
"google/home/graph/v1/device.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_proto"),
|
||||
"google/home/graph/v1/homegraph.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_proto"),
|
||||
"google/genomics/v1/operations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/variants.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/position.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/references.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/cigar.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/datasets.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readalignment.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/annotations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/reads.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readgroup.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readgroupset.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/range.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1alpha2/pipelines.proto": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_proto"),
|
||||
"google/bigtable/v1/bigtable_service_messages.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/v1/bigtable_service.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/v1/bigtable_data.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_instance_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/instance.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/table.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_table_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/common.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_data.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/v2/bigtable.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_proto"),
|
||||
"google/bigtable/v2/data.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_proto"),
|
||||
"google/privacy/dlp/v2/storage.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_proto"),
|
||||
"google/privacy/dlp/v2/dlp.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_proto"),
|
||||
"google/watcher/v1/watch.proto": label.New("go_googleapis", "google/watcher/v1", "watcher_proto"),
|
||||
"google/firestore/admin/v1beta1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_proto"),
|
||||
"google/firestore/admin/v1beta1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_proto"),
|
||||
"google/firestore/v1beta1/write.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/document.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/firestore.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/query.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/common.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/example/library/v1/library.proto": label.New("go_googleapis", "google/example/library/v1", "library_proto"),
|
||||
"google/appengine/v1/instance.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/audit_data.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/appengine.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/application.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/operation.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/app_yaml.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/location.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/service.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/deploy.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/version.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/legacy/audit_data.proto": label.New("go_googleapis", "google/appengine/legacy", "legacy_proto"),
|
||||
"google/appengine/logging/v1/request_log.proto": label.New("go_googleapis", "google/appengine/logging/v1", "logging_proto"),
|
||||
"google/storagetransfer/v1/transfer.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_proto"),
|
||||
"google/storagetransfer/v1/transfer_types.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_proto"),
|
||||
"google/longrunning/operations.proto": label.New("go_googleapis", "google/longrunning", "longrunning_proto"),
|
||||
"google/container/v1/cluster_service.proto": label.New("go_googleapis", "google/container/v1", "container_proto"),
|
||||
"google/container/v1beta1/cluster_service.proto": label.New("go_googleapis", "google/container/v1beta1", "container_proto"),
|
||||
"google/container/v1alpha1/cluster_service.proto": label.New("go_googleapis", "google/container/v1alpha1", "container_proto"),
|
||||
"google/datastore/v1beta3/datastore.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/datastore/v1beta3/query.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/datastore/v1beta3/entity.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/datastore/v1/datastore.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/v1/query.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/v1/entity.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/admin/v1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_proto"),
|
||||
"google/datastore/admin/v1beta1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_proto"),
|
||||
"google/bytestream/bytestream.proto": label.New("go_googleapis", "google/bytestream", "bytestream_proto"),
|
||||
"google/iam/v1/iam_policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_proto"),
|
||||
"google/iam/v1/policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_proto"),
|
||||
"google/iam/v1/logging/audit_data.proto": label.New("go_googleapis", "google/iam/v1/logging", "logging_proto"),
|
||||
"google/iam/admin/v1/iam.proto": label.New("go_googleapis", "google/iam/admin/v1", "admin_proto"),
|
||||
"google/type/money.proto": label.New("go_googleapis", "google/type", "money_proto"),
|
||||
"google/type/latlng.proto": label.New("go_googleapis", "google/type", "latlng_proto"),
|
||||
"google/type/color.proto": label.New("go_googleapis", "google/type", "color_proto"),
|
||||
"google/type/timeofday.proto": label.New("go_googleapis", "google/type", "timeofday_proto"),
|
||||
"google/type/date.proto": label.New("go_googleapis", "google/type", "date_proto"),
|
||||
"google/type/dayofweek.proto": label.New("go_googleapis", "google/type", "dayofweek_proto"),
|
||||
"google/type/postal_address.proto": label.New("go_googleapis", "google/type", "postaladdress_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_group_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/common.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/resultstore/v2/file.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/configuration.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/action.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_file_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/test_suite.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/file_set.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/coverage.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/coverage_summary.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/configured_target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/invocation.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/common.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/source/v1/source_context.proto": label.New("go_googleapis", "google/devtools/source/v1", "source_proto"),
|
||||
"google/devtools/remoteexecution/v1test/remote_execution.proto": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_proto"),
|
||||
"google/devtools/cloudbuild/v1/cloudbuild.proto": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_proto"),
|
||||
"google/devtools/sourcerepo/v1/sourcerepo.proto": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/worker.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/tasks.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/bots.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/command.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/cloudtrace/v1/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_proto"),
|
||||
"google/devtools/cloudtrace/v2/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_proto"),
|
||||
"google/devtools/cloudtrace/v2/tracing.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_proto"),
|
||||
"google/devtools/cloudprofiler/v2/profiler.proto": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/source_context.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/image_basis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/build/v1/build_events.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/build/v1/build_status.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/build/v1/publish_build_event.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/clouddebugger/v2/debugger.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/devtools/clouddebugger/v2/data.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/devtools/clouddebugger/v2/controller.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/cloud/resourcemanager/v2/folders.proto": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_proto"),
|
||||
"google/cloud/kms/v1/resources.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_proto"),
|
||||
"google/cloud/kms/v1/service.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/resources.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_proto"),
|
||||
"google/cloud/tasks/v2beta2/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/oslogin/v1/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_proto"),
|
||||
"google/cloud/oslogin/v1alpha/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_proto"),
|
||||
"google/cloud/oslogin/common/common.proto": label.New("go_googleapis", "google/cloud/oslogin/common", "common_proto"),
|
||||
"google/cloud/oslogin/v1beta/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/redis/v1beta1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_proto"),
|
||||
"google/cloud/location/locations.proto": label.New("go_googleapis", "google/cloud/location", "location_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_config.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/crawled_url.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_run.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_addon.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/language/v1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1", "language_proto"),
|
||||
"google/cloud/language/v1beta2/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_proto"),
|
||||
"google/cloud/language/v1beta1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/transfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/datatransfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_proto"),
|
||||
"google/cloud/bigquery/logging/v1/audit_data.proto": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_proto"),
|
||||
"google/cloud/vision/v1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/speech/v1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1", "speech_proto"),
|
||||
"google/cloud/speech/v1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1beta1", "speech_proto"),
|
||||
"google/cloud/speech/v1p1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_proto"),
|
||||
"google/cloud/iot/v1/device_manager.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_proto"),
|
||||
"google/cloud/iot/v1/resources.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_proto"),
|
||||
"google/cloud/videointelligence/v1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1beta2/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1p1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_proto"),
|
||||
"google/cloud/audit/audit_log.proto": label.New("go_googleapis", "google/cloud/audit", "audit_proto"),
|
||||
"google/cloud/support/common.proto": label.New("go_googleapis", "google/cloud/support", "common_proto"),
|
||||
"google/cloud/support/v1alpha1/cloud_support.proto": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_proto"),
|
||||
"google/cloud/ml/v1/operation_metadata.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/job_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/prediction_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/model_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/project_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/texttospeech/v1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_proto"),
|
||||
"google/cloud/texttospeech/v1beta1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_proto"),
|
||||
"google/cloud/functions/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_proto"),
|
||||
"google/cloud/functions/v1beta2/functions.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_proto"),
|
||||
"google/cloud/billing/v1/cloud_billing.proto": label.New("go_googleapis", "google/cloud/billing/v1", "billing_proto"),
|
||||
"google/cloud/dataproc/v1/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/shared.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/api/context.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/http.proto": label.New("go_googleapis", "google/api", "annotations_proto"),
|
||||
"google/api/config_change.proto": label.New("go_googleapis", "google/api", "configchange_proto"),
|
||||
"google/api/system_parameter.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/monitoring.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/distribution.proto": label.New("go_googleapis", "google/api", "distribution_proto"),
|
||||
"google/api/endpoint.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/usage.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/monitored_resource.proto": label.New("go_googleapis", "google/api", "monitoredres_proto"),
|
||||
"google/api/annotations.proto": label.New("go_googleapis", "google/api", "annotations_proto"),
|
||||
"google/api/control.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/metric.proto": label.New("go_googleapis", "google/api", "metric_proto"),
|
||||
"google/api/label.proto": label.New("go_googleapis", "google/api", "label_proto"),
|
||||
"google/api/consumer.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/log.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/billing.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/service.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/logging.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/documentation.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/quota.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/auth.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/backend.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/source_info.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/httpbody.proto": label.New("go_googleapis", "google/api", "httpbody_proto"),
|
||||
"google/api/experimental/authorization_config.proto": label.New("go_googleapis", "google/api/experimental", "api_proto"),
|
||||
"google/api/experimental/experimental.proto": label.New("go_googleapis", "google/api/experimental", "api_proto"),
|
||||
"google/api/servicemanagement/v1/servicemanager.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_proto"),
|
||||
"google/api/servicemanagement/v1/resources.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_proto"),
|
||||
"google/api/servicecontrol/v1/quota_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/distribution.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/check_error.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/operation.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/metric_value.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/log_entry.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/service_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/pubsub/v1/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1", "pubsub_proto"),
|
||||
"google/pubsub/v1beta2/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_proto"),
|
||||
"google/spanner/v1/mutation.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/spanner.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/transaction.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/keys.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/type.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/query_plan.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/result_set.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/admin/database/v1/spanner_database_admin.proto": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_proto"),
|
||||
"google/spanner/admin/instance/v1/spanner_instance_admin.proto": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_proto"),
|
||||
"google/monitoring/v3/group.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/mutation_record.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/notification.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/alert_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/uptime_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/group_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/alert.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/uptime.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/metric.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/notification_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/metric_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/common.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/rpc/code.proto": label.New("go_googleapis", "google/rpc", "code_proto"),
|
||||
"google/rpc/status.proto": label.New("go_googleapis", "google/rpc", "status_proto"),
|
||||
"google/rpc/error_details.proto": label.New("go_googleapis", "google/rpc", "errdetails_proto"),
|
||||
"google/streetview/publish/v1/resources.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/streetview/publish/v1/rpcmessages.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/streetview/publish/v1/streetview_publish.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/logging/v2/logging_metrics.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/logging_config.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/log_entry.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/logging.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/type/log_severity.proto": label.New("go_googleapis", "google/logging/type", "ltype_proto"),
|
||||
"google/logging/type/http_request.proto": label.New("go_googleapis", "google/logging/type", "ltype_proto"),
|
||||
}
|
||||
|
|
@ -1,293 +0,0 @@
|
|||
# This file lists special protos that Gazelle knows how to import. This is used to generate
|
||||
# code for proto and Go resolvers.
|
||||
#
|
||||
# proto name,proto label,go import path,go proto label
|
||||
google/protobuf/any.proto,@com_google_protobuf//:any_proto,github.com/golang/protobuf/ptypes/any,@io_bazel_rules_go//proto/wkt:any_go_proto
|
||||
google/protobuf/api.proto,@com_google_protobuf//:api_proto,google.golang.org/genproto/protobuf/api,@io_bazel_rules_go//proto/wkt:api_go_proto
|
||||
google/protobuf/compiler/plugin.proto,@com_google_protobuf//:compiler_plugin_proto,github.com/golang/protobuf/protoc-gen-go/plugin,@io_bazel_rules_go//proto/wkt:compiler_plugin_go_proto
|
||||
google/protobuf/descriptor.proto,@com_google_protobuf//:descriptor_proto,github.com/golang/protobuf/protoc-gen-go/descriptor,@io_bazel_rules_go//proto/wkt:descriptor_go_proto
|
||||
google/protobuf/duration.proto,@com_google_protobuf//:duration_proto,github.com/golang/protobuf/ptypes/duration,@io_bazel_rules_go//proto/wkt:duration_go_proto
|
||||
google/protobuf/empty.proto,@com_google_protobuf//:empty_proto,github.com/golang/protobuf/ptypes/empty,@io_bazel_rules_go//proto/wkt:empty_go_proto
|
||||
google/protobuf/field_mask.proto,@com_google_protobuf//:field_mask_proto,google.golang.org/genproto/protobuf/field_mask,@io_bazel_rules_go//proto/wkt:field_mask_go_proto
|
||||
google/protobuf/source_context.proto,@com_google_protobuf//:source_context_proto,google.golang.org/genproto/protobuf/source_context,@io_bazel_rules_go//proto/wkt:source_context_go_proto
|
||||
google/protobuf/struct.proto,@com_google_protobuf//:struct_proto,github.com/golang/protobuf/ptypes/struct,@io_bazel_rules_go//proto/wkt:struct_go_proto
|
||||
google/protobuf/timestamp.proto,@com_google_protobuf//:timestamp_proto,github.com/golang/protobuf/ptypes/timestamp,@io_bazel_rules_go//proto/wkt:timestamp_go_proto
|
||||
google/protobuf/type.proto,@com_google_protobuf//:type_proto,google.golang.org/genproto/protobuf/ptype,@io_bazel_rules_go//proto/wkt:type_go_proto
|
||||
google/protobuf/wrappers.proto,@com_google_protobuf//:wrappers_proto,github.com/golang/protobuf/ptypes/wrappers,@io_bazel_rules_go//proto/wkt:wrappers_go_proto
|
||||
google/assistant/embedded/v1alpha2/embedded_assistant.proto,@go_googleapis//google/assistant/embedded/v1alpha2:embedded_proto,google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2,@go_googleapis//google/assistant/embedded/v1alpha2:embedded_go_proto
|
||||
google/assistant/embedded/v1alpha1/embedded_assistant.proto,@go_googleapis//google/assistant/embedded/v1alpha1:embedded_proto,google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1,@go_googleapis//google/assistant/embedded/v1alpha1:embedded_go_proto
|
||||
google/home/graph/v1/device.proto,@go_googleapis//google/home/graph/v1:graph_proto,google.golang.org/genproto/googleapis/home/graph/v1,@go_googleapis//google/home/graph/v1:graph_go_proto
|
||||
google/home/graph/v1/homegraph.proto,@go_googleapis//google/home/graph/v1:graph_proto,google.golang.org/genproto/googleapis/home/graph/v1,@go_googleapis//google/home/graph/v1:graph_go_proto
|
||||
google/genomics/v1/operations.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/variants.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/position.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/references.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/cigar.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/datasets.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readalignment.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/annotations.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/reads.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readgroup.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readgroupset.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/range.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1alpha2/pipelines.proto,@go_googleapis//google/genomics/v1alpha2:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1alpha2,@go_googleapis//google/genomics/v1alpha2:genomics_go_proto
|
||||
google/bigtable/v1/bigtable_service_messages.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/v1/bigtable_service.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/v1/bigtable_data.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/v2/bigtable_instance_admin.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/instance.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/table.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/bigtable_table_admin.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/common.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_service_messages.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_service.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_data.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/v2/bigtable.proto,@go_googleapis//google/bigtable/v2:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v2,@go_googleapis//google/bigtable/v2:bigtable_go_proto
|
||||
google/bigtable/v2/data.proto,@go_googleapis//google/bigtable/v2:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v2,@go_googleapis//google/bigtable/v2:bigtable_go_proto
|
||||
google/privacy/dlp/v2/storage.proto,@go_googleapis//google/privacy/dlp/v2:dlp_proto,google.golang.org/genproto/googleapis/privacy/dlp/v2,@go_googleapis//google/privacy/dlp/v2:dlp_go_proto
|
||||
google/privacy/dlp/v2/dlp.proto,@go_googleapis//google/privacy/dlp/v2:dlp_proto,google.golang.org/genproto/googleapis/privacy/dlp/v2,@go_googleapis//google/privacy/dlp/v2:dlp_go_proto
|
||||
google/watcher/v1/watch.proto,@go_googleapis//google/watcher/v1:watcher_proto,google.golang.org/genproto/googleapis/watcher/v1,@go_googleapis//google/watcher/v1:watcher_go_proto
|
||||
google/firestore/admin/v1beta1/firestore_admin.proto,@go_googleapis//google/firestore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta1,@go_googleapis//google/firestore/admin/v1beta1:admin_go_proto
|
||||
google/firestore/admin/v1beta1/index.proto,@go_googleapis//google/firestore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta1,@go_googleapis//google/firestore/admin/v1beta1:admin_go_proto
|
||||
google/firestore/v1beta1/write.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/document.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/firestore.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/query.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/common.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/example/library/v1/library.proto,@go_googleapis//google/example/library/v1:library_proto,google.golang.org/genproto/googleapis/example/library/v1,@go_googleapis//google/example/library/v1:library_go_proto
|
||||
google/appengine/v1/instance.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/audit_data.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/appengine.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/application.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/operation.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/app_yaml.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/location.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/service.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/deploy.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/version.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/legacy/audit_data.proto,@go_googleapis//google/appengine/legacy:legacy_proto,google.golang.org/genproto/googleapis/appengine/legacy,@go_googleapis//google/appengine/legacy:legacy_go_proto
|
||||
google/appengine/logging/v1/request_log.proto,@go_googleapis//google/appengine/logging/v1:logging_proto,google.golang.org/genproto/googleapis/appengine/logging/v1,@go_googleapis//google/appengine/logging/v1:logging_go_proto
|
||||
google/storagetransfer/v1/transfer.proto,@go_googleapis//google/storagetransfer/v1:storagetransfer_proto,google.golang.org/genproto/googleapis/storagetransfer/v1,@go_googleapis//google/storagetransfer/v1:storagetransfer_go_proto
|
||||
google/storagetransfer/v1/transfer_types.proto,@go_googleapis//google/storagetransfer/v1:storagetransfer_proto,google.golang.org/genproto/googleapis/storagetransfer/v1,@go_googleapis//google/storagetransfer/v1:storagetransfer_go_proto
|
||||
google/longrunning/operations.proto,@go_googleapis//google/longrunning:longrunning_proto,google.golang.org/genproto/googleapis/longrunning,@go_googleapis//google/longrunning:longrunning_go_proto
|
||||
google/container/v1/cluster_service.proto,@go_googleapis//google/container/v1:container_proto,google.golang.org/genproto/googleapis/container/v1,@go_googleapis//google/container/v1:container_go_proto
|
||||
google/container/v1beta1/cluster_service.proto,@go_googleapis//google/container/v1beta1:container_proto,google.golang.org/genproto/googleapis/container/v1beta1,@go_googleapis//google/container/v1beta1:container_go_proto
|
||||
google/container/v1alpha1/cluster_service.proto,@go_googleapis//google/container/v1alpha1:container_proto,google.golang.org/genproto/googleapis/container/v1alpha1,@go_googleapis//google/container/v1alpha1:container_go_proto
|
||||
google/datastore/v1beta3/datastore.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/datastore/v1beta3/query.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/datastore/v1beta3/entity.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/datastore/v1/datastore.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/v1/query.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/v1/entity.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/admin/v1/datastore_admin.proto,@go_googleapis//google/datastore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/datastore/admin/v1,@go_googleapis//google/datastore/admin/v1:admin_go_proto
|
||||
google/datastore/admin/v1beta1/datastore_admin.proto,@go_googleapis//google/datastore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/datastore/admin/v1beta1,@go_googleapis//google/datastore/admin/v1beta1:admin_go_proto
|
||||
google/bytestream/bytestream.proto,@go_googleapis//google/bytestream:bytestream_proto,google.golang.org/genproto/googleapis/bytestream,@go_googleapis//google/bytestream:bytestream_go_proto
|
||||
google/iam/v1/iam_policy.proto,@go_googleapis//google/iam/v1:iam_proto,google.golang.org/genproto/googleapis/iam/v1,@go_googleapis//google/iam/v1:iam_go_proto
|
||||
google/iam/v1/policy.proto,@go_googleapis//google/iam/v1:iam_proto,google.golang.org/genproto/googleapis/iam/v1,@go_googleapis//google/iam/v1:iam_go_proto
|
||||
google/iam/v1/logging/audit_data.proto,@go_googleapis//google/iam/v1/logging:logging_proto,google.golang.org/genproto/googleapis/iam/v1/logging,@go_googleapis//google/iam/v1/logging:logging_go_proto
|
||||
google/iam/admin/v1/iam.proto,@go_googleapis//google/iam/admin/v1:admin_proto,google.golang.org/genproto/googleapis/iam/admin/v1,@go_googleapis//google/iam/admin/v1:admin_go_proto
|
||||
google/type/money.proto,@go_googleapis//google/type:money_proto,google.golang.org/genproto/googleapis/type/money,@go_googleapis//google/type:money_go_proto
|
||||
google/type/latlng.proto,@go_googleapis//google/type:latlng_proto,google.golang.org/genproto/googleapis/type/latlng,@go_googleapis//google/type:latlng_go_proto
|
||||
google/type/color.proto,@go_googleapis//google/type:color_proto,google.golang.org/genproto/googleapis/type/color,@go_googleapis//google/type:color_go_proto
|
||||
google/type/timeofday.proto,@go_googleapis//google/type:timeofday_proto,google.golang.org/genproto/googleapis/type/timeofday,@go_googleapis//google/type:timeofday_go_proto
|
||||
google/type/date.proto,@go_googleapis//google/type:date_proto,google.golang.org/genproto/googleapis/type/date,@go_googleapis//google/type:date_go_proto
|
||||
google/type/dayofweek.proto,@go_googleapis//google/type:dayofweek_proto,google.golang.org/genproto/googleapis/type/dayofweek,@go_googleapis//google/type:dayofweek_go_proto
|
||||
google/type/postal_address.proto,@go_googleapis//google/type:postaladdress_proto,google.golang.org/genproto/googleapis/type/postaladdress,@go_googleapis//google/type:postaladdress_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/error_group_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/common.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/resultstore/v2/file.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/resultstore_download.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/configuration.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/action.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/resultstore_file_download.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/test_suite.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/file_set.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/coverage.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/coverage_summary.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/configured_target.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/target.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/invocation.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/common.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/source/v1/source_context.proto,@go_googleapis//google/devtools/source/v1:source_proto,google.golang.org/genproto/googleapis/devtools/source/v1,@go_googleapis//google/devtools/source/v1:source_go_proto
|
||||
google/devtools/remoteexecution/v1test/remote_execution.proto,@go_googleapis//google/devtools/remoteexecution/v1test:remoteexecution_proto,google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test,@go_googleapis//google/devtools/remoteexecution/v1test:remoteexecution_go_proto
|
||||
google/devtools/cloudbuild/v1/cloudbuild.proto,@go_googleapis//google/devtools/cloudbuild/v1:cloudbuild_proto,google.golang.org/genproto/googleapis/devtools/cloudbuild/v1,@go_googleapis//google/devtools/cloudbuild/v1:cloudbuild_go_proto
|
||||
google/devtools/sourcerepo/v1/sourcerepo.proto,@go_googleapis//google/devtools/sourcerepo/v1:sourcerepo_proto,google.golang.org/genproto/googleapis/devtools/sourcerepo/v1,@go_googleapis//google/devtools/sourcerepo/v1:sourcerepo_go_proto
|
||||
google/devtools/remoteworkers/v1test2/worker.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/tasks.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/bots.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/command.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/cloudtrace/v1/trace.proto,@go_googleapis//google/devtools/cloudtrace/v1:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v1,@go_googleapis//google/devtools/cloudtrace/v1:cloudtrace_go_proto
|
||||
google/devtools/cloudtrace/v2/trace.proto,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v2,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_go_proto
|
||||
google/devtools/cloudtrace/v2/tracing.proto,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v2,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_go_proto
|
||||
google/devtools/cloudprofiler/v2/profiler.proto,@go_googleapis//google/devtools/cloudprofiler/v2:cloudprofiler_proto,google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2,@go_googleapis//google/devtools/cloudprofiler/v2:cloudprofiler_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/containeranalysis.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/provenance.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/source_context.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/image_basis.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/build/v1/build_events.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/build/v1/build_status.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/build/v1/publish_build_event.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/clouddebugger/v2/debugger.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/devtools/clouddebugger/v2/data.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/devtools/clouddebugger/v2/controller.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/cloud/resourcemanager/v2/folders.proto,@go_googleapis//google/cloud/resourcemanager/v2:resourcemanager_proto,google.golang.org/genproto/googleapis/cloud/resourcemanager/v2,@go_googleapis//google/cloud/resourcemanager/v2:resourcemanager_go_proto
|
||||
google/cloud/kms/v1/resources.proto,@go_googleapis//google/cloud/kms/v1:kms_proto,google.golang.org/genproto/googleapis/cloud/kms/v1,@go_googleapis//google/cloud/kms/v1:kms_go_proto
|
||||
google/cloud/kms/v1/service.proto,@go_googleapis//google/cloud/kms/v1:kms_proto,google.golang.org/genproto/googleapis/cloud/kms/v1,@go_googleapis//google/cloud/kms/v1:kms_go_proto
|
||||
google/cloud/runtimeconfig/v1beta1/resources.proto,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_proto,google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_go_proto
|
||||
google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_proto,google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_go_proto
|
||||
google/cloud/tasks/v2beta2/queue.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/task.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/target.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/cloudtasks.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/oslogin/v1/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1,@go_googleapis//google/cloud/oslogin/v1:oslogin_go_proto
|
||||
google/cloud/oslogin/v1alpha/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1alpha:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha,@go_googleapis//google/cloud/oslogin/v1alpha:oslogin_go_proto
|
||||
google/cloud/oslogin/common/common.proto,@go_googleapis//google/cloud/oslogin/common:common_proto,google.golang.org/genproto/googleapis/cloud/oslogin/common,@go_googleapis//google/cloud/oslogin/common:common_go_proto
|
||||
google/cloud/oslogin/v1beta/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1beta:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1beta,@go_googleapis//google/cloud/oslogin/v1beta:oslogin_go_proto
|
||||
google/cloud/dialogflow/v2beta1/context.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/session_entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/intent.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/webhook.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/session.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/agent.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/context.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/session_entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/intent.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/webhook.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/session.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/agent.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/redis/v1beta1/cloud_redis.proto,@go_googleapis//google/cloud/redis/v1beta1:redis_proto,google.golang.org/genproto/googleapis/cloud/redis/v1beta1,@go_googleapis//google/cloud/redis/v1beta1:redis_go_proto
|
||||
google/cloud/location/locations.proto,@go_googleapis//google/cloud/location:location_proto,google.golang.org/genproto/googleapis/cloud/location,@go_googleapis//google/cloud/location:location_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/scan_config.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/crawled_url.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/scan_run.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding_addon.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/language/v1/language_service.proto,@go_googleapis//google/cloud/language/v1:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1,@go_googleapis//google/cloud/language/v1:language_go_proto
|
||||
google/cloud/language/v1beta2/language_service.proto,@go_googleapis//google/cloud/language/v1beta2:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1beta2,@go_googleapis//google/cloud/language/v1beta2:language_go_proto
|
||||
google/cloud/language/v1beta1/language_service.proto,@go_googleapis//google/cloud/language/v1beta1:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1beta1,@go_googleapis//google/cloud/language/v1beta1:language_go_proto
|
||||
google/cloud/bigquery/datatransfer/v1/transfer.proto,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_proto,google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_go_proto
|
||||
google/cloud/bigquery/datatransfer/v1/datatransfer.proto,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_proto,google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_go_proto
|
||||
google/cloud/bigquery/logging/v1/audit_data.proto,@go_googleapis//google/cloud/bigquery/logging/v1:logging_proto,google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1,@go_googleapis//google/cloud/bigquery/logging/v1:logging_go_proto
|
||||
google/cloud/vision/v1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/geometry.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/web_detection.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/geometry.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/web_detection.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/geometry.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/web_detection.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/speech/v1/cloud_speech.proto,@go_googleapis//google/cloud/speech/v1:speech_proto,google.golang.org/genproto/googleapis/cloud/speech/v1,@go_googleapis//google/cloud/speech/v1:speech_go_proto
|
||||
google/cloud/speech/v1beta1/cloud_speech.proto,@go_googleapis//google/cloud/speech/v1beta1:speech_proto,google.golang.org/genproto/googleapis/cloud/speech/v1beta1,@go_googleapis//google/cloud/speech/v1beta1:speech_go_proto
|
||||
google/cloud/speech/v1p1beta1/cloud_speech.proto,@go_googleapis//google/cloud/speech/v1p1beta1:speech_proto,google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1,@go_googleapis//google/cloud/speech/v1p1beta1:speech_go_proto
|
||||
google/cloud/iot/v1/device_manager.proto,@go_googleapis//google/cloud/iot/v1:iot_proto,google.golang.org/genproto/googleapis/cloud/iot/v1,@go_googleapis//google/cloud/iot/v1:iot_go_proto
|
||||
google/cloud/iot/v1/resources.proto,@go_googleapis//google/cloud/iot/v1:iot_proto,google.golang.org/genproto/googleapis/cloud/iot/v1,@go_googleapis//google/cloud/iot/v1:iot_go_proto
|
||||
google/cloud/videointelligence/v1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1,@go_googleapis//google/cloud/videointelligence/v1:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1beta2/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1beta2:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2,@go_googleapis//google/cloud/videointelligence/v1beta2:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1beta1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1beta1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1,@go_googleapis//google/cloud/videointelligence/v1beta1:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1p1beta1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1p1beta1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1p1beta1,@go_googleapis//google/cloud/videointelligence/v1p1beta1:videointelligence_go_proto
|
||||
google/cloud/audit/audit_log.proto,@go_googleapis//google/cloud/audit:audit_proto,google.golang.org/genproto/googleapis/cloud/audit,@go_googleapis//google/cloud/audit:audit_go_proto
|
||||
google/cloud/support/common.proto,@go_googleapis//google/cloud/support:common_proto,google.golang.org/genproto/googleapis/cloud/support/common,@go_googleapis//google/cloud/support:common_go_proto
|
||||
google/cloud/support/v1alpha1/cloud_support.proto,@go_googleapis//google/cloud/support/v1alpha1:support_proto,google.golang.org/genproto/googleapis/cloud/support/v1alpha1,@go_googleapis//google/cloud/support/v1alpha1:support_go_proto
|
||||
google/cloud/ml/v1/operation_metadata.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/job_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/prediction_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/model_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/project_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/texttospeech/v1/cloud_tts.proto,@go_googleapis//google/cloud/texttospeech/v1:texttospeech_proto,google.golang.org/genproto/googleapis/cloud/texttospeech/v1,@go_googleapis//google/cloud/texttospeech/v1:texttospeech_go_proto
|
||||
google/cloud/texttospeech/v1beta1/cloud_tts.proto,@go_googleapis//google/cloud/texttospeech/v1beta1:texttospeech_proto,google.golang.org/genproto/googleapis/cloud/texttospeech/v1beta1,@go_googleapis//google/cloud/texttospeech/v1beta1:texttospeech_go_proto
|
||||
google/cloud/functions/v1beta2/operations.proto,@go_googleapis//google/cloud/functions/v1beta2:functions_proto,google.golang.org/genproto/googleapis/cloud/functions/v1beta2,@go_googleapis//google/cloud/functions/v1beta2:functions_go_proto
|
||||
google/cloud/functions/v1beta2/functions.proto,@go_googleapis//google/cloud/functions/v1beta2:functions_proto,google.golang.org/genproto/googleapis/cloud/functions/v1beta2,@go_googleapis//google/cloud/functions/v1beta2:functions_go_proto
|
||||
google/cloud/billing/v1/cloud_billing.proto,@go_googleapis//google/cloud/billing/v1:billing_proto,google.golang.org/genproto/googleapis/cloud/billing/v1,@go_googleapis//google/cloud/billing/v1:billing_go_proto
|
||||
google/cloud/dataproc/v1/operations.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1/clusters.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1/jobs.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/operations.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/clusters.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/jobs.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/workflow_templates.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/shared.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/api/context.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/http.proto,@go_googleapis//google/api:annotations_proto,google.golang.org/genproto/googleapis/api/annotations,@go_googleapis//google/api:annotations_go_proto
|
||||
google/api/config_change.proto,@go_googleapis//google/api:configchange_proto,google.golang.org/genproto/googleapis/api/configchange,@go_googleapis//google/api:configchange_go_proto
|
||||
google/api/system_parameter.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/monitoring.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/distribution.proto,@go_googleapis//google/api:distribution_proto,google.golang.org/genproto/googleapis/api/distribution,@go_googleapis//google/api:distribution_go_proto
|
||||
google/api/endpoint.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/usage.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/monitored_resource.proto,@go_googleapis//google/api:monitoredres_proto,google.golang.org/genproto/googleapis/api/monitoredres,@go_googleapis//google/api:monitoredres_go_proto
|
||||
google/api/annotations.proto,@go_googleapis//google/api:annotations_proto,google.golang.org/genproto/googleapis/api/annotations,@go_googleapis//google/api:annotations_go_proto
|
||||
google/api/control.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/metric.proto,@go_googleapis//google/api:metric_proto,google.golang.org/genproto/googleapis/api/metric,@go_googleapis//google/api:metric_go_proto
|
||||
google/api/label.proto,@go_googleapis//google/api:label_proto,google.golang.org/genproto/googleapis/api/label,@go_googleapis//google/api:label_go_proto
|
||||
google/api/consumer.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/log.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/billing.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/service.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/logging.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/documentation.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/quota.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/auth.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/backend.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/source_info.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/httpbody.proto,@go_googleapis//google/api:httpbody_proto,google.golang.org/genproto/googleapis/api/httpbody,@go_googleapis//google/api:httpbody_go_proto
|
||||
google/api/experimental/authorization_config.proto,@go_googleapis//google/api/experimental:api_proto,google.golang.org/genproto/googleapis/api,@go_googleapis//google/api/experimental:api_go_proto
|
||||
google/api/experimental/experimental.proto,@go_googleapis//google/api/experimental:api_proto,google.golang.org/genproto/googleapis/api,@go_googleapis//google/api/experimental:api_go_proto
|
||||
google/api/servicemanagement/v1/servicemanager.proto,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_proto,google.golang.org/genproto/googleapis/api/servicemanagement/v1,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_go_proto
|
||||
google/api/servicemanagement/v1/resources.proto,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_proto,google.golang.org/genproto/googleapis/api/servicemanagement/v1,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_go_proto
|
||||
google/api/servicecontrol/v1/quota_controller.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/distribution.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/check_error.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/operation.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/metric_value.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/log_entry.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/service_controller.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/pubsub/v1/pubsub.proto,@go_googleapis//google/pubsub/v1:pubsub_proto,google.golang.org/genproto/googleapis/pubsub/v1,@go_googleapis//google/pubsub/v1:pubsub_go_proto
|
||||
google/pubsub/v1beta2/pubsub.proto,@go_googleapis//google/pubsub/v1beta2:pubsub_proto,google.golang.org/genproto/googleapis/pubsub/v1beta2,@go_googleapis//google/pubsub/v1beta2:pubsub_go_proto
|
||||
google/spanner/v1/mutation.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/spanner.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/transaction.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/keys.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/type.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/query_plan.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/result_set.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/admin/database/v1/spanner_database_admin.proto,@go_googleapis//google/spanner/admin/database/v1:database_proto,google.golang.org/genproto/googleapis/spanner/admin/database/v1,@go_googleapis//google/spanner/admin/database/v1:database_go_proto
|
||||
google/spanner/admin/instance/v1/spanner_instance_admin.proto,@go_googleapis//google/spanner/admin/instance/v1:instance_proto,google.golang.org/genproto/googleapis/spanner/admin/instance/v1,@go_googleapis//google/spanner/admin/instance/v1:instance_go_proto
|
||||
google/monitoring/v3/group.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/mutation_record.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/notification.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/alert_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/uptime_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/group_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/alert.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/uptime.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/metric.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/notification_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/metric_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/common.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/rpc/code.proto,@go_googleapis//google/rpc:code_proto,google.golang.org/genproto/googleapis/rpc/code,@go_googleapis//google/rpc:code_go_proto
|
||||
google/rpc/status.proto,@go_googleapis//google/rpc:status_proto,google.golang.org/genproto/googleapis/rpc/status,@go_googleapis//google/rpc:status_go_proto
|
||||
google/rpc/error_details.proto,@go_googleapis//google/rpc:errdetails_proto,google.golang.org/genproto/googleapis/rpc/errdetails,@go_googleapis//google/rpc:errdetails_go_proto
|
||||
google/streetview/publish/v1/resources.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/streetview/publish/v1/rpcmessages.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/streetview/publish/v1/streetview_publish.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/logging/v2/logging_metrics.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/logging_config.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/log_entry.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/logging.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/type/log_severity.proto,@go_googleapis//google/logging/type:ltype_proto,google.golang.org/genproto/googleapis/logging/type,@go_googleapis//google/logging/type:ltype_go_proto
|
||||
google/logging/type/http_request.proto,@go_googleapis//google/logging/type:ltype_proto,google.golang.org/genproto/googleapis/logging/type,@go_googleapis//google/logging/type:ltype_go_proto
|
||||
|
|
|
@ -1,13 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"fix.go",
|
||||
"merger.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/merger",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/merger",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = ["//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library"],
|
||||
)
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"dep.go",
|
||||
"remote.go",
|
||||
"repo.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/repos",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/repos",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
"//vendor/github.com/pelletier/go-toml:go_default_library",
|
||||
"//vendor/golang.org/x/tools/go/vcs:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["index.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/resolve",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/resolve",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/repos:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"walk.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/walk",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/walk",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -1,86 +0,0 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 walk
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
)
|
||||
|
||||
type walkConfig struct {
|
||||
excludes []string
|
||||
ignore bool
|
||||
}
|
||||
|
||||
const walkName = "_walk"
|
||||
|
||||
func getWalkConfig(c *config.Config) walkConfig {
|
||||
return c.Exts[walkName].(walkConfig)
|
||||
}
|
||||
|
||||
func (wc *walkConfig) isExcluded(base string) bool {
|
||||
for _, x := range wc.excludes {
|
||||
if base == x {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type walkConfigurer struct{}
|
||||
|
||||
func (_ *walkConfigurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) {}
|
||||
|
||||
func (_ *walkConfigurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error { return nil }
|
||||
|
||||
func (_ *walkConfigurer) KnownDirectives() []string {
|
||||
return []string{"exclude", "ignore"}
|
||||
}
|
||||
|
||||
func (_ *walkConfigurer) Configure(c *config.Config, rel string, f *rule.File) {
|
||||
var wc walkConfig
|
||||
if raw, ok := c.Exts[walkName]; ok {
|
||||
wc = raw.(walkConfig)
|
||||
wc.ignore = false
|
||||
if rel != "" {
|
||||
prefix := path.Base(rel) + "/"
|
||||
excludes := make([]string, 0, len(wc.excludes))
|
||||
for _, x := range wc.excludes {
|
||||
if strings.HasPrefix(x, prefix) {
|
||||
excludes = append(excludes, x[len(prefix):])
|
||||
}
|
||||
}
|
||||
wc.excludes = excludes
|
||||
}
|
||||
}
|
||||
|
||||
if f != nil {
|
||||
for _, d := range f.Directives {
|
||||
switch d.Key {
|
||||
case "exclude":
|
||||
wc.excludes = append(wc.excludes, d.Value)
|
||||
case "ignore":
|
||||
wc.ignore = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c.Exts[walkName] = wc
|
||||
}
|
||||
|
|
@ -1,251 +0,0 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 walk
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
)
|
||||
|
||||
// WalkFunc is a callback called by Walk in each visited directory.
|
||||
//
|
||||
// dir is the absolute file system path to the directory being visited.
|
||||
//
|
||||
// rel is the relative slash-separated path to the directory from the
|
||||
// repository root. Will be "" for the repository root directory itself.
|
||||
//
|
||||
// c is the configuration for the current directory. This may have been
|
||||
// modified by directives in the directory's build file.
|
||||
//
|
||||
// update is true when the build file may be updated.
|
||||
//
|
||||
// f is the existing build file in the directory. Will be nil if there
|
||||
// was no file.
|
||||
//
|
||||
// subdirs is a list of base names of subdirectories within dir, not
|
||||
// including excluded files.
|
||||
//
|
||||
// regularFiles is a list of base names of regular files within dir, not
|
||||
// including excluded files.
|
||||
//
|
||||
// genFiles is a list of names of generated files, found by reading
|
||||
// "out" and "outs" attributes of rules in f.
|
||||
type WalkFunc func(dir, rel string, c *config.Config, update bool, f *rule.File, subdirs, regularFiles, genFiles []string)
|
||||
|
||||
// Walk traverses the directory tree rooted at c.RepoRoot in depth-first order.
|
||||
//
|
||||
// Walk calls the Configure method on each configuration extension in cexts
|
||||
// in each directory in pre-order, whether a build file is present in the
|
||||
// directory or not.
|
||||
//
|
||||
// Walk calls the callback wf in post-order.
|
||||
func Walk(c *config.Config, cexts []config.Configurer, wf WalkFunc) {
|
||||
cexts = append(cexts, &walkConfigurer{})
|
||||
knownDirectives := make(map[string]bool)
|
||||
for _, cext := range cexts {
|
||||
for _, d := range cext.KnownDirectives() {
|
||||
knownDirectives[d] = true
|
||||
}
|
||||
}
|
||||
|
||||
updateRels := buildUpdateRels(c.RepoRoot, c.Dirs)
|
||||
symlinks := symlinkResolver{root: c.RepoRoot, visited: []string{c.RepoRoot}}
|
||||
|
||||
var visit func(*config.Config, string, string, bool)
|
||||
visit = func(c *config.Config, dir, rel string, isUpdateDir bool) {
|
||||
haveError := false
|
||||
|
||||
if !isUpdateDir {
|
||||
isUpdateDir = shouldUpdateDir(rel, updateRels)
|
||||
}
|
||||
|
||||
// TODO: OPT: ReadDir stats all the files, which is slow. We just care about
|
||||
// names and modes, so we should use something like
|
||||
// golang.org/x/tools/internal/fastwalk to speed this up.
|
||||
files, err := ioutil.ReadDir(dir)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
|
||||
f, err := loadBuildFile(c, rel, dir, files)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
haveError = true
|
||||
}
|
||||
|
||||
c = configure(cexts, knownDirectives, c, rel, f)
|
||||
wc := getWalkConfig(c)
|
||||
|
||||
var subdirs, regularFiles []string
|
||||
for _, fi := range files {
|
||||
base := fi.Name()
|
||||
switch {
|
||||
case base == "" || base[0] == '.' || base[0] == '_' || wc.isExcluded(base):
|
||||
continue
|
||||
|
||||
case fi.IsDir() || fi.Mode()&os.ModeSymlink != 0 && symlinks.follow(dir, base):
|
||||
subdirs = append(subdirs, base)
|
||||
|
||||
default:
|
||||
regularFiles = append(regularFiles, base)
|
||||
}
|
||||
}
|
||||
|
||||
for _, sub := range subdirs {
|
||||
visit(c, filepath.Join(dir, sub), path.Join(rel, sub), isUpdateDir)
|
||||
}
|
||||
|
||||
genFiles := findGenFiles(wc, f)
|
||||
update := !haveError && isUpdateDir && !wc.ignore
|
||||
wf(dir, rel, c, update, f, subdirs, regularFiles, genFiles)
|
||||
}
|
||||
visit(c, c.RepoRoot, "", false)
|
||||
}
|
||||
|
||||
// buildUpdateRels builds a list of relative paths from the repository root
|
||||
// directory (passed as an absolute file path) to directories that Gazelle
|
||||
// may update. The relative paths are slash-separated. "" represents the
|
||||
// root directory itself.
|
||||
func buildUpdateRels(root string, dirs []string) []string {
|
||||
var updateRels []string
|
||||
for _, dir := range dirs {
|
||||
rel, err := filepath.Rel(root, dir)
|
||||
if err != nil {
|
||||
// This should have been verified when c was built.
|
||||
log.Panicf("%s: not a subdirectory of repository root %q", dir, root)
|
||||
}
|
||||
rel = filepath.ToSlash(rel)
|
||||
if rel == "." || rel == "/" {
|
||||
rel = ""
|
||||
}
|
||||
updateRels = append(updateRels, rel)
|
||||
}
|
||||
return updateRels
|
||||
}
|
||||
|
||||
func shouldUpdateDir(rel string, updateRels []string) bool {
|
||||
for _, r := range updateRels {
|
||||
if pathtools.HasPrefix(rel, r) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func loadBuildFile(c *config.Config, pkg, dir string, files []os.FileInfo) (*rule.File, error) {
|
||||
var err error
|
||||
readDir := dir
|
||||
readFiles := files
|
||||
if c.ReadBuildFilesDir != "" {
|
||||
readDir = filepath.Join(c.ReadBuildFilesDir, filepath.FromSlash(pkg))
|
||||
readFiles, err = ioutil.ReadDir(readDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
path := rule.MatchBuildFileName(readDir, c.ValidBuildFileNames, readFiles)
|
||||
if path == "" {
|
||||
return nil, nil
|
||||
}
|
||||
return rule.LoadFile(path, pkg)
|
||||
}
|
||||
|
||||
func configure(cexts []config.Configurer, knownDirectives map[string]bool, c *config.Config, rel string, f *rule.File) *config.Config {
|
||||
if rel != "" {
|
||||
c = c.Clone()
|
||||
}
|
||||
if f != nil {
|
||||
for _, d := range f.Directives {
|
||||
if !knownDirectives[d.Key] {
|
||||
log.Printf("%s: unknown directive: gazelle:%s", f.Path, d.Key)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, cext := range cexts {
|
||||
cext.Configure(c, rel, f)
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func findGenFiles(wc walkConfig, f *rule.File) []string {
|
||||
if f == nil {
|
||||
return nil
|
||||
}
|
||||
var strs []string
|
||||
for _, r := range f.Rules {
|
||||
for _, key := range []string{"out", "outs"} {
|
||||
if s := r.AttrString(key); s != "" {
|
||||
strs = append(strs, s)
|
||||
} else if ss := r.AttrStrings(key); len(ss) > 0 {
|
||||
strs = append(strs, ss...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var genFiles []string
|
||||
for _, s := range strs {
|
||||
if !wc.isExcluded(s) {
|
||||
genFiles = append(genFiles, s)
|
||||
}
|
||||
}
|
||||
return genFiles
|
||||
}
|
||||
|
||||
type symlinkResolver struct {
|
||||
root string
|
||||
visited []string
|
||||
}
|
||||
|
||||
// Decide if symlink dir/base should be followed.
|
||||
func (r *symlinkResolver) follow(dir, base string) bool {
|
||||
if dir == r.root && strings.HasPrefix(base, "bazel-") {
|
||||
// Links such as bazel-<workspace>, bazel-out, bazel-genfiles are created by
|
||||
// Bazel to point to internal build directories.
|
||||
return false
|
||||
}
|
||||
// See if the symlink points to a tree that has been already visited.
|
||||
fullpath := filepath.Join(dir, base)
|
||||
dest, err := filepath.EvalSymlinks(fullpath)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if !filepath.IsAbs(dest) {
|
||||
dest, err = filepath.Abs(filepath.Join(dir, dest))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
}
|
||||
for _, p := range r.visited {
|
||||
if pathtools.HasPrefix(dest, p) || pathtools.HasPrefix(p, dest) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
r.visited = append(r.visited, dest)
|
||||
stat, err := os.Stat(fullpath)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return stat.IsDir()
|
||||
}
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["label.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/label",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/label",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = ["//vendor/github.com/bazelbuild/bazel-gazelle/pathtools:go_default_library"],
|
||||
)
|
||||
|
|
@ -13,6 +13,10 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package label provides utilities for parsing and manipulating
|
||||
// Bazel labels. See
|
||||
// https://docs.bazel.build/versions/master/build-ref.html#labels
|
||||
// for more information.
|
||||
package label
|
||||
|
||||
import (
|
||||
|
|
@ -22,20 +26,36 @@ import (
|
|||
"regexp"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/pathtools"
|
||||
)
|
||||
|
||||
// A Label represents a label of a build target in Bazel.
|
||||
// A Label represents a label of a build target in Bazel. Labels have three
|
||||
// parts: a repository name, a package name, and a target name, formatted
|
||||
// as @repo//pkg:target.
|
||||
type Label struct {
|
||||
Repo, Pkg, Name string
|
||||
Relative bool
|
||||
// Repo is the repository name. If omitted, the label refers to a target
|
||||
// in the current repository.
|
||||
Repo string
|
||||
|
||||
// Pkg is the package name, which is usually the directory that contains
|
||||
// the target. If both Repo and Pkg are omitted, the label is relative.
|
||||
Pkg string
|
||||
|
||||
// Name is the name of the target the label refers to. If omitted, Name
|
||||
// is assumed to be the same as Pkg.
|
||||
Name string
|
||||
|
||||
// Relative indicates whether the label refers to a target in the current
|
||||
// package. Relative is true if and only if Repo and Pkg are both omitted.
|
||||
Relative bool
|
||||
}
|
||||
|
||||
// New constructs a new label from components.
|
||||
func New(repo, pkg, name string) Label {
|
||||
return Label{Repo: repo, Pkg: pkg, Name: name}
|
||||
}
|
||||
|
||||
// NoLabel is the nil value of Label. It is not a valid label and may be
|
||||
// NoLabel is the zero value of Label. It is not a valid label and may be
|
||||
// returned when an error occurs.
|
||||
var NoLabel = Label{}
|
||||
|
||||
|
|
@ -120,6 +140,9 @@ func (l Label) String() string {
|
|||
return fmt.Sprintf("%s//%s:%s", repo, l.Pkg, l.Name)
|
||||
}
|
||||
|
||||
// Abs computes an absolute label (one with a repository and package name)
|
||||
// from this label. If this label is already absolute, it is returned
|
||||
// unchanged.
|
||||
func (l Label) Abs(repo, pkg string) Label {
|
||||
if !l.Relative {
|
||||
return l
|
||||
|
|
@ -127,6 +150,9 @@ func (l Label) Abs(repo, pkg string) Label {
|
|||
return Label{Repo: repo, Pkg: pkg, Name: l.Name}
|
||||
}
|
||||
|
||||
// Rel attempts to compute a relative label from this label. If this label
|
||||
// is already relative or is in a different package, this label may be
|
||||
// returned unchanged.
|
||||
func (l Label) Rel(repo, pkg string) Label {
|
||||
if l.Relative || l.Repo != repo {
|
||||
return l
|
||||
|
|
@ -137,6 +163,8 @@ func (l Label) Rel(repo, pkg string) Label {
|
|||
return Label{Pkg: l.Pkg, Name: l.Name}
|
||||
}
|
||||
|
||||
// Equal returns whether two labels are exactly the same. It does not return
|
||||
// true for different labels that refer to the same target.
|
||||
func (l Label) Equal(other Label) bool {
|
||||
return l.Repo == other.Repo &&
|
||||
l.Pkg == other.Pkg &&
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["lang.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/language",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/language",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
34
vendor/github.com/bazelbuild/bazel-gazelle/language/go/BUILD.bazel
generated
vendored
Normal file
34
vendor/github.com/bazelbuild/bazel-gazelle/language/go/BUILD.bazel
generated
vendored
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"constants.go",
|
||||
"fileinfo.go",
|
||||
"fix.go",
|
||||
"generate.go",
|
||||
"kinds.go",
|
||||
"known_go_imports.go",
|
||||
"known_proto_imports.go",
|
||||
"lang.go",
|
||||
"package.go",
|
||||
"resolve.go",
|
||||
"std_package_list.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/language/go",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/language/go",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/flag:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language/proto:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/repo:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/buildtools/build:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -23,10 +23,10 @@ import (
|
|||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/internal/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
bzl "github.com/bazelbuild/buildtools/build"
|
||||
)
|
||||
|
||||
|
|
@ -59,10 +59,30 @@ type goConfig struct {
|
|||
// depMode determines how imports that are not standard, indexed, or local
|
||||
// (under the current prefix) should be resolved.
|
||||
depMode dependencyMode
|
||||
|
||||
// goProtoCompilers is the protocol buffers compiler(s) to use for go code.
|
||||
goProtoCompilers []string
|
||||
|
||||
// goProtoCompilersSet indicates whether goProtoCompiler was set explicitly.
|
||||
goProtoCompilersSet bool
|
||||
|
||||
// goGrpcCompilers is the gRPC compiler(s) to use for go code.
|
||||
goGrpcCompilers []string
|
||||
|
||||
// goGrpcCompilersSet indicates whether goGrpcCompiler was set explicitly.
|
||||
goGrpcCompilersSet bool
|
||||
}
|
||||
|
||||
var (
|
||||
defaultGoProtoCompilers = []string{"@io_bazel_rules_go//proto:go_proto"}
|
||||
defaultGoGrpcCompilers = []string{"@io_bazel_rules_go//proto:go_grpc"}
|
||||
)
|
||||
|
||||
func newGoConfig() *goConfig {
|
||||
gc := &goConfig{}
|
||||
gc := &goConfig{
|
||||
goProtoCompilers: defaultGoProtoCompilers,
|
||||
goGrpcCompilers: defaultGoGrpcCompilers,
|
||||
}
|
||||
gc.preprocessTags()
|
||||
return gc
|
||||
}
|
||||
|
|
@ -105,6 +125,14 @@ func (gc *goConfig) setBuildTags(tags string) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func getProtoMode(c *config.Config) proto.Mode {
|
||||
if pc := proto.GetProtoConfig(c); pc != nil {
|
||||
return pc.Mode
|
||||
} else {
|
||||
return proto.DisableGlobalMode
|
||||
}
|
||||
}
|
||||
|
||||
// dependencyMode determines how imports of packages outside of the prefix
|
||||
// are resolved.
|
||||
type dependencyMode int
|
||||
|
|
@ -163,6 +191,8 @@ func (f tagsFlag) String() string {
|
|||
func (_ *goLang) KnownDirectives() []string {
|
||||
return []string{
|
||||
"build_tags",
|
||||
"go_grpc_compilers",
|
||||
"go_proto_compilers",
|
||||
"importmap_prefix",
|
||||
"prefix",
|
||||
}
|
||||
|
|
@ -184,6 +214,14 @@ func (_ *goLang) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) {
|
|||
&externalFlag{&gc.depMode},
|
||||
"external",
|
||||
"external: resolve external packages with go_repository\n\tvendored: resolve external packages as packages in vendor/")
|
||||
fs.Var(
|
||||
&gzflag.MultiFlag{Values: &gc.goProtoCompilers, IsSet: &gc.goProtoCompilersSet},
|
||||
"go_proto_compiler",
|
||||
"go_proto_library compiler to use (may be repeated)")
|
||||
fs.Var(
|
||||
&gzflag.MultiFlag{Values: &gc.goGrpcCompilers, IsSet: &gc.goGrpcCompilersSet},
|
||||
"go_grpc_compiler",
|
||||
"go_proto_library compiler to use for gRPC (may be repeated)")
|
||||
}
|
||||
c.Exts[goName] = gc
|
||||
}
|
||||
|
|
@ -194,8 +232,9 @@ func (_ *goLang) CheckFlags(fs *flag.FlagSet, c *config.Config) error {
|
|||
// or when the package name can't be determined.
|
||||
// TODO(jayconrod): deprecate and remove this behavior.
|
||||
gc := getGoConfig(c)
|
||||
pc := proto.GetProtoConfig(c)
|
||||
pc.GoPrefix = gc.prefix
|
||||
if pc := proto.GetProtoConfig(c); pc != nil {
|
||||
pc.GoPrefix = gc.prefix
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -234,6 +273,24 @@ func (_ *goLang) Configure(c *config.Config, rel string, f *rule.File) {
|
|||
}
|
||||
gc.preprocessTags()
|
||||
gc.setBuildTags(d.Value)
|
||||
case "go_grpc_compilers":
|
||||
// Special syntax (empty value) to reset directive.
|
||||
if d.Value == "" {
|
||||
gc.goGrpcCompilersSet = false
|
||||
gc.goGrpcCompilers = defaultGoGrpcCompilers
|
||||
} else {
|
||||
gc.goGrpcCompilersSet = true
|
||||
gc.goGrpcCompilers = splitValue(d.Value)
|
||||
}
|
||||
case "go_proto_compilers":
|
||||
// Special syntax (empty value) to reset directive.
|
||||
if d.Value == "" {
|
||||
gc.goProtoCompilersSet = false
|
||||
gc.goProtoCompilers = defaultGoProtoCompilers
|
||||
} else {
|
||||
gc.goProtoCompilersSet = true
|
||||
gc.goProtoCompilers = splitValue(d.Value)
|
||||
}
|
||||
case "importmap_prefix":
|
||||
gc.importMapPrefix = d.Value
|
||||
gc.importMapPrefixRel = rel
|
||||
|
|
@ -274,3 +331,14 @@ func checkPrefix(prefix string) error {
|
|||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// splitDirective splits a comma-separated directive value into its component
|
||||
// parts, trimming each of any whitespace characters.
|
||||
func splitValue(value string) []string {
|
||||
parts := strings.Split(value, ",")
|
||||
values := make([]string, 0, len(parts))
|
||||
for _, part := range parts {
|
||||
values = append(values, strings.TrimSpace(part))
|
||||
}
|
||||
return values
|
||||
}
|
||||
|
|
@ -16,12 +16,29 @@ limitations under the License.
|
|||
package golang
|
||||
|
||||
const (
|
||||
// defaultLibName is the name of the default go_library rule in a Go
|
||||
// package directory. This name was originally chosen so that rules_go
|
||||
// could translate between Bazel labels and Go import paths using go_prefix.
|
||||
// It is no longer needed since go_prefix was deleted.
|
||||
defaultLibName = "go_default_library"
|
||||
|
||||
// defaultTestName is a name of an internal test corresponding to
|
||||
// defaultLibName. It does not need to be consistent to something but it
|
||||
// just needs to be unique in the Bazel package
|
||||
defaultTestName = "go_default_test"
|
||||
|
||||
// legacyProtoFilegroupName is the anme of a filegroup created in legacy
|
||||
// mode for libraries that contained .pb.go files and .proto files.
|
||||
legacyProtoFilegroupName = "go_default_library_protos"
|
||||
|
||||
// grpcCompilerLabel is the label for the gRPC compiler plugin, used in the
|
||||
// "compilers" attribute of go_proto_library rules.
|
||||
grpcCompilerLabel = "@io_bazel_rules_go//proto:go_grpc"
|
||||
|
||||
// wellKnownTypesGoPrefix is the import path for the Go repository containing
|
||||
// pre-generated code for the Well Known Types.
|
||||
wellKnownTypesGoPrefix = "github.com/golang/protobuf"
|
||||
|
||||
// wellKnownTypesPkg is the package name for the predefined WKTs in rules_go.
|
||||
wellKnownTypesPkg = "proto/wkt"
|
||||
)
|
||||
|
|
@ -18,7 +18,7 @@ std_package_list = go_rule(
|
|||
attrs = {
|
||||
"out": attr.output(mandatory = True),
|
||||
"_gen_std_package_list": attr.label(
|
||||
default = "//internal/language/go/gen_std_package_list",
|
||||
default = "//language/go/gen_std_package_list",
|
||||
cfg = "host",
|
||||
executable = True,
|
||||
),
|
||||
|
|
@ -32,9 +32,9 @@ import (
|
|||
"unicode"
|
||||
"unicode/utf8"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// fileInfo holds information used to decide how to build a file. This
|
||||
|
|
@ -215,6 +215,9 @@ func fileNameInfo(path_ string) fileInfo {
|
|||
default:
|
||||
ext = unknownExt
|
||||
}
|
||||
if strings.HasPrefix(name, ".") || strings.HasPrefix(name, "_") {
|
||||
ext = unknownExt
|
||||
}
|
||||
|
||||
// Determine test, goos, and goarch. This is intended to match the logic
|
||||
// in goodOSArchFile in go/build.
|
||||
|
|
@ -462,6 +465,9 @@ func expandSrcDir(str string, srcdir string) (string, bool) {
|
|||
// so convert native paths with a different delimiter
|
||||
// to "/" before starting (eg: on windows).
|
||||
srcdir = filepath.ToSlash(srcdir)
|
||||
if srcdir == "" {
|
||||
srcdir = "."
|
||||
}
|
||||
|
||||
// Spaces are tolerated in ${SRCDIR}, but not anywhere else.
|
||||
chunks := strings.Split(str, "${SRCDIR}")
|
||||
|
|
@ -18,9 +18,9 @@ package golang
|
|||
import (
|
||||
"log"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
bzl "github.com/bazelbuild/buildtools/build"
|
||||
)
|
||||
|
||||
|
|
@ -59,7 +59,7 @@ func migrateGrpcCompilers(c *config.Config, f *rule.File) {
|
|||
continue
|
||||
}
|
||||
r.SetKind("go_proto_library")
|
||||
r.SetAttr("compilers", []string{config.GrpcCompilerLabel})
|
||||
r.SetAttr("compilers", []string{grpcCompilerLabel})
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -74,7 +74,7 @@ func squashCgoLibrary(c *config.Config, f *rule.File) {
|
|||
// Find the default cgo_library and go_library rules.
|
||||
var cgoLibrary, goLibrary *rule.Rule
|
||||
for _, r := range f.Rules {
|
||||
if r.Kind() == "cgo_library" && r.Name() == config.DefaultCgoLibName && !r.ShouldKeep() {
|
||||
if r.Kind() == "cgo_library" && r.Name() == "cgo_default_library" && !r.ShouldKeep() {
|
||||
if cgoLibrary != nil {
|
||||
log.Printf("%s: when fixing existing file, multiple cgo_library rules with default name found", f.Path)
|
||||
continue
|
||||
|
|
@ -82,7 +82,7 @@ func squashCgoLibrary(c *config.Config, f *rule.File) {
|
|||
cgoLibrary = r
|
||||
continue
|
||||
}
|
||||
if r.Kind() == "go_library" && r.Name() == config.DefaultLibName {
|
||||
if r.Kind() == "go_library" && r.Name() == defaultLibName {
|
||||
if goLibrary != nil {
|
||||
log.Printf("%s: when fixing existing file, multiple go_library rules with default name referencing cgo_library found", f.Path)
|
||||
}
|
||||
|
|
@ -101,7 +101,7 @@ func squashCgoLibrary(c *config.Config, f *rule.File) {
|
|||
|
||||
if goLibrary == nil {
|
||||
cgoLibrary.SetKind("go_library")
|
||||
cgoLibrary.SetName(config.DefaultLibName)
|
||||
cgoLibrary.SetName(defaultLibName)
|
||||
cgoLibrary.SetAttr("cgo", true)
|
||||
return
|
||||
}
|
||||
|
|
@ -126,9 +126,9 @@ func squashXtest(c *config.Config, f *rule.File) {
|
|||
if r.Kind() != "go_test" {
|
||||
continue
|
||||
}
|
||||
if r.Name() == config.DefaultTestName {
|
||||
if r.Name() == defaultTestName {
|
||||
itest = r
|
||||
} else if r.Name() == config.DefaultXTestName {
|
||||
} else if r.Name() == "go_default_xtest" {
|
||||
xtest = r
|
||||
}
|
||||
}
|
||||
|
|
@ -147,7 +147,7 @@ func squashXtest(c *config.Config, f *rule.File) {
|
|||
|
||||
// If there was no internal test, we can just rename the external test.
|
||||
if itest == nil {
|
||||
xtest.SetName(config.DefaultTestName)
|
||||
xtest.SetName(defaultTestName)
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -187,8 +187,7 @@ func flattenSrcs(c *config.Config, f *rule.File) {
|
|||
// are not migrated.
|
||||
func removeLegacyProto(c *config.Config, f *rule.File) {
|
||||
// Don't fix if the proto mode was set to something other than the default.
|
||||
pc := proto.GetProtoConfig(c)
|
||||
if pc.Mode != proto.DefaultMode {
|
||||
if pcMode := getProtoMode(c); pcMode != proto.DefaultMode {
|
||||
return
|
||||
}
|
||||
|
||||
|
|
@ -16,7 +16,6 @@ limitations under the License.
|
|||
package golang
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"go/build"
|
||||
"log"
|
||||
"path"
|
||||
|
|
@ -25,21 +24,23 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/language"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File, subdirs, regularFiles, genFiles []string, otherEmpty, otherGen []*rule.Rule) (empty, gen []*rule.Rule) {
|
||||
func (gl *goLang) GenerateRules(args language.GenerateArgs) language.GenerateResult {
|
||||
// Extract information about proto files. We need this to exclude .pb.go
|
||||
// files and generate go_proto_library rules.
|
||||
c := args.Config
|
||||
gc := getGoConfig(c)
|
||||
pc := proto.GetProtoConfig(c)
|
||||
pcMode := getProtoMode(c)
|
||||
var protoRuleNames []string
|
||||
protoPackages := make(map[string]proto.Package)
|
||||
protoFileInfo := make(map[string]proto.FileInfo)
|
||||
for _, r := range otherGen {
|
||||
for _, r := range args.OtherGen {
|
||||
if r.Kind() != "proto_library" {
|
||||
continue
|
||||
}
|
||||
|
|
@ -52,7 +53,7 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
}
|
||||
sort.Strings(protoRuleNames)
|
||||
var emptyProtoRuleNames []string
|
||||
for _, r := range otherEmpty {
|
||||
for _, r := range args.OtherEmpty {
|
||||
if r.Kind() == "proto_library" {
|
||||
emptyProtoRuleNames = append(emptyProtoRuleNames, r.Name())
|
||||
}
|
||||
|
|
@ -60,7 +61,9 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
|
||||
// If proto rule generation is enabled, exclude .pb.go files that correspond
|
||||
// to any .proto files present.
|
||||
if !pc.Mode.ShouldIncludePregeneratedFiles() {
|
||||
regularFiles := append([]string{}, args.RegularFiles...)
|
||||
genFiles := append([]string{}, args.GenFiles...)
|
||||
if !pcMode.ShouldIncludePregeneratedFiles() {
|
||||
keep := func(f string) bool {
|
||||
if strings.HasSuffix(f, ".pb.go") {
|
||||
_, ok := protoFileInfo[strings.TrimSuffix(f, ".pb.go")+".proto"]
|
||||
|
|
@ -86,34 +89,34 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
// Look for a subdirectory named testdata. Only treat it as data if it does
|
||||
// not contain a buildable package.
|
||||
var hasTestdata bool
|
||||
for _, sub := range subdirs {
|
||||
for _, sub := range args.Subdirs {
|
||||
if sub == "testdata" {
|
||||
hasTestdata = !gl.goPkgRels[path.Join(rel, "testdata")]
|
||||
hasTestdata = !gl.goPkgRels[path.Join(args.Rel, "testdata")]
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
// Build a set of packages from files in this directory.
|
||||
goPackageMap, goFilesWithUnknownPackage := buildPackages(c, dir, rel, goFiles, hasTestdata)
|
||||
goPackageMap, goFilesWithUnknownPackage := buildPackages(c, args.Dir, args.Rel, goFiles, hasTestdata)
|
||||
|
||||
// Select a package to generate rules for. If there is no package, create
|
||||
// an empty package so we can generate empty rules.
|
||||
var protoName string
|
||||
pkg, err := selectPackage(c, dir, goPackageMap)
|
||||
pkg, err := selectPackage(c, args.Dir, goPackageMap)
|
||||
if err != nil {
|
||||
if _, ok := err.(*build.NoGoError); ok {
|
||||
if len(protoPackages) == 1 {
|
||||
for name, ppkg := range protoPackages {
|
||||
pkg = &goPackage{
|
||||
name: goProtoPackageName(ppkg),
|
||||
importPath: goProtoImportPath(gc, ppkg, rel),
|
||||
importPath: goProtoImportPath(gc, ppkg, args.Rel),
|
||||
proto: protoTargetFromProtoPackage(name, ppkg),
|
||||
}
|
||||
protoName = name
|
||||
break
|
||||
}
|
||||
} else {
|
||||
pkg = emptyPackage(c, dir, rel)
|
||||
pkg = emptyPackage(c, args.Dir, args.Rel)
|
||||
}
|
||||
} else {
|
||||
log.Print(err)
|
||||
|
|
@ -129,7 +132,7 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
}
|
||||
for _, name := range protoRuleNames {
|
||||
ppkg := protoPackages[name]
|
||||
if pkg.importPath == goProtoImportPath(gc, ppkg, rel) {
|
||||
if pkg.importPath == goProtoImportPath(gc, ppkg, args.Rel) {
|
||||
protoName = name
|
||||
pkg.proto = protoTargetFromProtoPackage(name, ppkg)
|
||||
break
|
||||
|
|
@ -139,26 +142,31 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
|
||||
// Generate rules for proto packages. These should come before the other
|
||||
// Go rules.
|
||||
g := newGenerator(c, f, rel)
|
||||
g := &generator{
|
||||
c: c,
|
||||
rel: args.Rel,
|
||||
shouldSetVisibility: args.File == nil || !args.File.HasDefaultVisibility(),
|
||||
}
|
||||
var res language.GenerateResult
|
||||
var rules []*rule.Rule
|
||||
var protoEmbed string
|
||||
for _, name := range protoRuleNames {
|
||||
ppkg := protoPackages[name]
|
||||
var rs []*rule.Rule
|
||||
if name == protoName {
|
||||
protoEmbed, rs = g.generateProto(pc.Mode, pkg.proto, pkg.importPath)
|
||||
protoEmbed, rs = g.generateProto(pcMode, pkg.proto, pkg.importPath)
|
||||
} else {
|
||||
target := protoTargetFromProtoPackage(name, ppkg)
|
||||
importPath := goProtoImportPath(gc, ppkg, rel)
|
||||
_, rs = g.generateProto(pc.Mode, target, importPath)
|
||||
importPath := goProtoImportPath(gc, ppkg, args.Rel)
|
||||
_, rs = g.generateProto(pcMode, target, importPath)
|
||||
}
|
||||
rules = append(rules, rs...)
|
||||
}
|
||||
for _, name := range emptyProtoRuleNames {
|
||||
goProtoName := strings.TrimSuffix(name, "_proto") + "_go_proto"
|
||||
empty = append(empty, rule.NewRule("go_proto_library", goProtoName))
|
||||
res.Empty = append(res.Empty, rule.NewRule("go_proto_library", goProtoName))
|
||||
}
|
||||
if pkg != nil && pc.Mode == proto.PackageMode && pkg.firstGoFile() == "" {
|
||||
if pkg != nil && pcMode == proto.PackageMode && pkg.firstGoFile() == "" {
|
||||
// In proto package mode, don't generate a go_library embedding a
|
||||
// go_proto_library unless there are actually go files.
|
||||
protoEmbed = ""
|
||||
|
|
@ -178,7 +186,7 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
|
||||
// Process the other static files.
|
||||
for _, file := range otherFiles {
|
||||
info := otherFileInfo(filepath.Join(dir, file))
|
||||
info := otherFileInfo(filepath.Join(args.Dir, file))
|
||||
if err := pkg.addFile(c, info, cgo); err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
|
|
@ -195,7 +203,7 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
if regularFileSet[f] {
|
||||
continue
|
||||
}
|
||||
info := fileNameInfo(filepath.Join(dir, f))
|
||||
info := fileNameInfo(filepath.Join(args.Dir, f))
|
||||
if err := pkg.addFile(c, info, cgo); err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
|
|
@ -204,7 +212,7 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
// Generate Go rules.
|
||||
if protoName == "" {
|
||||
// Empty proto rules for deletion.
|
||||
_, rs := g.generateProto(pc.Mode, pkg.proto, pkg.importPath)
|
||||
_, rs := g.generateProto(pcMode, pkg.proto, pkg.importPath)
|
||||
rules = append(rules, rs...)
|
||||
}
|
||||
lib := g.generateLib(pkg, protoEmbed)
|
||||
|
|
@ -220,24 +228,25 @@ func (gl *goLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File,
|
|||
|
||||
for _, r := range rules {
|
||||
if r.IsEmpty(goKinds[r.Kind()]) {
|
||||
empty = append(empty, r)
|
||||
res.Empty = append(res.Empty, r)
|
||||
} else {
|
||||
gen = append(gen, r)
|
||||
res.Gen = append(res.Gen, r)
|
||||
res.Imports = append(res.Imports, r.PrivateAttr(config.GazelleImportsKey))
|
||||
}
|
||||
}
|
||||
|
||||
if f != nil || len(gen) > 0 {
|
||||
gl.goPkgRels[rel] = true
|
||||
if args.File != nil || len(res.Gen) > 0 {
|
||||
gl.goPkgRels[args.Rel] = true
|
||||
} else {
|
||||
for _, sub := range subdirs {
|
||||
if gl.goPkgRels[path.Join(rel, sub)] {
|
||||
gl.goPkgRels[rel] = true
|
||||
for _, sub := range args.Subdirs {
|
||||
if gl.goPkgRels[path.Join(args.Rel, sub)] {
|
||||
gl.goPkgRels[args.Rel] = true
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return empty, gen
|
||||
return res
|
||||
}
|
||||
|
||||
func filterFiles(files *[]string, pred func(string) bool) {
|
||||
|
|
@ -336,40 +345,12 @@ func defaultPackageName(c *config.Config, rel string) string {
|
|||
return pathtools.RelBaseName(rel, gc.prefix, "")
|
||||
}
|
||||
|
||||
// hasDefaultVisibility returns whether oldFile contains a "package" rule with
|
||||
// a "default_visibility" attribute. Rules generated by Gazelle should not
|
||||
// have their own visibility attributes if this is the case.
|
||||
func hasDefaultVisibility(oldFile *rule.File) bool {
|
||||
for _, r := range oldFile.Rules {
|
||||
if r.Kind() == "package" && r.Attr("default_visibility") != nil {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// checkInternalVisibility overrides the given visibility if the package is
|
||||
// internal.
|
||||
func checkInternalVisibility(rel, visibility string) string {
|
||||
if i := strings.LastIndex(rel, "/internal/"); i >= 0 {
|
||||
visibility = fmt.Sprintf("//%s:__subpackages__", rel[:i])
|
||||
} else if strings.HasPrefix(rel, "internal/") {
|
||||
visibility = "//:__subpackages__"
|
||||
}
|
||||
return visibility
|
||||
}
|
||||
|
||||
type generator struct {
|
||||
c *config.Config
|
||||
rel string
|
||||
shouldSetVisibility bool
|
||||
}
|
||||
|
||||
func newGenerator(c *config.Config, f *rule.File, rel string) *generator {
|
||||
shouldSetVisibility := f == nil || !hasDefaultVisibility(f)
|
||||
return &generator{c: c, rel: rel, shouldSetVisibility: shouldSetVisibility}
|
||||
}
|
||||
|
||||
func (g *generator) generateProto(mode proto.Mode, target protoTarget, importPath string) (string, []*rule.Rule) {
|
||||
if !mode.ShouldGenerateRules() && mode != proto.LegacyMode {
|
||||
// Don't create or delete proto rules in this mode. Any existing rules
|
||||
|
|
@ -377,14 +358,15 @@ func (g *generator) generateProto(mode proto.Mode, target protoTarget, importPat
|
|||
return "", nil
|
||||
}
|
||||
|
||||
filegroupName := config.DefaultProtosName
|
||||
gc := getGoConfig(g.c)
|
||||
filegroupName := legacyProtoFilegroupName
|
||||
protoName := target.name
|
||||
if protoName == "" {
|
||||
importPath := inferImportPath(getGoConfig(g.c), g.rel)
|
||||
importPath := inferImportPath(gc, g.rel)
|
||||
protoName = proto.RuleName(importPath)
|
||||
}
|
||||
goProtoName := strings.TrimSuffix(protoName, "_proto") + "_go_proto"
|
||||
visibility := []string{checkInternalVisibility(g.rel, "//visibility:public")}
|
||||
visibility := []string{rule.CheckInternalVisibility(g.rel, "//visibility:public")}
|
||||
|
||||
if mode == proto.LegacyMode {
|
||||
filegroup := rule.NewRule("filegroup", filegroupName)
|
||||
|
|
@ -409,7 +391,9 @@ func (g *generator) generateProto(mode proto.Mode, target protoTarget, importPat
|
|||
goProtoLibrary.SetAttr("proto", ":"+protoName)
|
||||
g.setImportAttrs(goProtoLibrary, importPath)
|
||||
if target.hasServices {
|
||||
goProtoLibrary.SetAttr("compilers", []string{"@io_bazel_rules_go//proto:go_grpc"})
|
||||
goProtoLibrary.SetAttr("compilers", gc.goGrpcCompilers)
|
||||
} else if gc.goProtoCompilersSet {
|
||||
goProtoLibrary.SetAttr("compilers", gc.goProtoCompilers)
|
||||
}
|
||||
if g.shouldSetVisibility {
|
||||
goProtoLibrary.SetAttr("visibility", visibility)
|
||||
|
|
@ -419,7 +403,7 @@ func (g *generator) generateProto(mode proto.Mode, target protoTarget, importPat
|
|||
}
|
||||
|
||||
func (g *generator) generateLib(pkg *goPackage, embed string) *rule.Rule {
|
||||
goLibrary := rule.NewRule("go_library", config.DefaultLibName)
|
||||
goLibrary := rule.NewRule("go_library", defaultLibName)
|
||||
if !pkg.library.sources.hasGo() && embed == "" {
|
||||
return goLibrary // empty
|
||||
}
|
||||
|
|
@ -428,7 +412,7 @@ func (g *generator) generateLib(pkg *goPackage, embed string) *rule.Rule {
|
|||
// Libraries made for a go_binary should not be exposed to the public.
|
||||
visibility = "//visibility:private"
|
||||
} else {
|
||||
visibility = checkInternalVisibility(pkg.rel, "//visibility:public")
|
||||
visibility = rule.CheckInternalVisibility(pkg.rel, "//visibility:public")
|
||||
}
|
||||
g.setCommonAttrs(goLibrary, pkg.rel, visibility, pkg.library, embed)
|
||||
g.setImportAttrs(goLibrary, pkg.importPath)
|
||||
|
|
@ -441,13 +425,13 @@ func (g *generator) generateBin(pkg *goPackage, library string) *rule.Rule {
|
|||
if !pkg.isCommand() || pkg.binary.sources.isEmpty() && library == "" {
|
||||
return goBinary // empty
|
||||
}
|
||||
visibility := checkInternalVisibility(pkg.rel, "//visibility:public")
|
||||
visibility := rule.CheckInternalVisibility(pkg.rel, "//visibility:public")
|
||||
g.setCommonAttrs(goBinary, pkg.rel, visibility, pkg.binary, library)
|
||||
return goBinary
|
||||
}
|
||||
|
||||
func (g *generator) generateTest(pkg *goPackage, library string) *rule.Rule {
|
||||
goTest := rule.NewRule("go_test", config.DefaultTestName)
|
||||
goTest := rule.NewRule("go_test", defaultTestName)
|
||||
if !pkg.test.sources.hasGo() {
|
||||
return goTest // empty
|
||||
}
|
||||
|
|
@ -15,7 +15,7 @@ limitations under the License.
|
|||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
import "github.com/bazelbuild/bazel-gazelle/rule"
|
||||
|
||||
var goKinds = map[string]rule.KindInfo{
|
||||
"filegroup": {
|
||||
|
|
@ -78,6 +78,7 @@ var goKinds = map[string]rule.KindInfo{
|
|||
"copts": true,
|
||||
"embed": true,
|
||||
"proto": true,
|
||||
"compilers": true,
|
||||
},
|
||||
ResolveAttrs: map[string]bool{"deps": true},
|
||||
},
|
||||
166
vendor/github.com/bazelbuild/bazel-gazelle/language/go/known_go_imports.go
generated
vendored
Normal file
166
vendor/github.com/bazelbuild/bazel-gazelle/language/go/known_go_imports.go
generated
vendored
Normal file
|
|
@ -0,0 +1,166 @@
|
|||
// Generated by language/proto/gen/gen_known_imports.go
|
||||
// From language/proto/proto.csv
|
||||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/label"
|
||||
|
||||
var knownGoProtoImports = map[string]label.Label{
|
||||
|
||||
"github.com/golang/protobuf/ptypes/any": label.New("io_bazel_rules_go", "proto/wkt", "any_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/api": label.New("io_bazel_rules_go", "proto/wkt", "api_go_proto"),
|
||||
"github.com/golang/protobuf/protoc-gen-go/plugin": label.New("io_bazel_rules_go", "proto/wkt", "compiler_plugin_go_proto"),
|
||||
"github.com/golang/protobuf/protoc-gen-go/descriptor": label.New("io_bazel_rules_go", "proto/wkt", "descriptor_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/duration": label.New("io_bazel_rules_go", "proto/wkt", "duration_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/empty": label.New("io_bazel_rules_go", "proto/wkt", "empty_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/field_mask": label.New("io_bazel_rules_go", "proto/wkt", "field_mask_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/source_context": label.New("io_bazel_rules_go", "proto/wkt", "source_context_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/struct": label.New("io_bazel_rules_go", "proto/wkt", "struct_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/timestamp": label.New("io_bazel_rules_go", "proto/wkt", "timestamp_go_proto"),
|
||||
"google.golang.org/genproto/protobuf/ptype": label.New("io_bazel_rules_go", "proto/wkt", "type_go_proto"),
|
||||
"github.com/golang/protobuf/ptypes/wrappers": label.New("io_bazel_rules_go", "proto/wkt", "wrappers_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/ads/googleads/v0/common": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/ads/googleads/v0/enums": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/ads/googleads/v0/errors": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/ads/googleads/v0/resources": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/ads/googleads/v0/services": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/annotations": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/serviceconfig": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/configchange": label.New("go_googleapis", "google/api", "configchange_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/distribution": label.New("go_googleapis", "google/api", "distribution_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api": label.New("go_googleapis", "google/api", "api_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/expr/v1alpha1": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/expr/v1beta1": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/httpbody": label.New("go_googleapis", "google/api", "httpbody_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/label": label.New("go_googleapis", "google/api", "label_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/metric": label.New("go_googleapis", "google/api", "metric_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/monitoredres": label.New("go_googleapis", "google/api", "monitoredres_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/servicecontrol/v1": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/api/servicemanagement/v1": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/legacy": label.New("go_googleapis", "google/appengine/legacy", "legacy_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/logging/v1": label.New("go_googleapis", "google/appengine/logging/v1", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/appengine/v1": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/table/v1": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/admin/v2": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/v1": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bigtable/v2": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/bytestream": label.New("go_googleapis", "google/bytestream", "bytestream_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/asset/v1beta1": label.New("go_googleapis", "google/cloud/asset/v1beta1", "asset_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/audit": label.New("go_googleapis", "google/cloud/audit", "audit_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/automl/v1beta1": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/billing/v1": label.New("go_googleapis", "google/cloud/billing/v1", "billing_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dataproc/v1": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dialogflow/v2": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/functions/v1beta2": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/iot/v1": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/kms/v1": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1": label.New("go_googleapis", "google/cloud/language/v1", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1beta1": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/language/v1beta2": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/location": label.New("go_googleapis", "google/cloud/location", "location_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/ml/v1": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/common": label.New("go_googleapis", "google/cloud/oslogin/common", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/oslogin/v1beta": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/redis/v1": label.New("go_googleapis", "google/cloud/redis/v1", "redis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/redis/v1beta1": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/resourcemanager/v2": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/speech/v1": label.New("go_googleapis", "google/cloud/speech/v1", "speech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/support/common": label.New("go_googleapis", "google/cloud/support", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/support/v1alpha1": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/tasks/v2beta2": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/tasks/v2beta3": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/texttospeech/v1": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/texttospeech/v1beta1": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1p1beta1": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/videointelligence/v1p2beta1": label.New("go_googleapis", "google/cloud/videointelligence/v1p2beta1", "videointelligence_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1": label.New("go_googleapis", "google/container/v1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1alpha1": label.New("go_googleapis", "google/container/v1alpha1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/container/v1beta1": label.New("go_googleapis", "google/container/v1beta1", "container_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/admin/v1": label.New("go_googleapis", "google/datastore/admin/v1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/admin/v1beta1": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/v1": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/datastore/v1beta3": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/build/v1": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudbuild/v1": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/clouddebugger/v2": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudtrace/v1": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/cloudtrace/v2": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/attestation": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/attestation", "attestation_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/build": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/build", "build_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/common": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/common", "common_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1", "containeranalysis_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/deployment": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/deployment", "deployment_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/discovery": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/discovery", "discovery_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/grafeas": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/grafeas", "grafeas_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/image": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/image", "image_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/package": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/package", "package_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/provenance": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/provenance", "provenance_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/source": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/source", "source_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/vulnerability": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/vulnerability", "vulnerability_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/resultstore/v2": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/source/v1": label.New("go_googleapis", "google/devtools/source/v1", "source_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/devtools/sourcerepo/v1": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/example/library/v1": label.New("go_googleapis", "google/example/library/v1", "library_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/admin/v1": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/admin/v1beta1": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/admin/v1beta2": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/v1": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/firestore/v1beta1": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/genomics/v1": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/genomics/v1alpha2": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/home/graph/v1": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/admin/v1": label.New("go_googleapis", "google/iam/admin/v1", "admin_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/credentials/v1": label.New("go_googleapis", "google/iam/credentials/v1", "credentials_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/v1": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/iam/v1/logging": label.New("go_googleapis", "google/iam/v1/logging", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/logging/type": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/logging/v2": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/longrunning": label.New("go_googleapis", "google/longrunning", "longrunning_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/monitoring/v3": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/privacy/dlp/v2": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/pubsub/v1": label.New("go_googleapis", "google/pubsub/v1", "pubsub_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/pubsub/v1beta2": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/code": label.New("go_googleapis", "google/rpc", "code_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/errdetails": label.New("go_googleapis", "google/rpc", "errdetails_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/rpc/status": label.New("go_googleapis", "google/rpc", "status_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/admin/database/v1": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/admin/instance/v1": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/spanner/v1": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/storagetransfer/v1": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/streetview/publish/v1": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/color": label.New("go_googleapis", "google/type", "color_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/date": label.New("go_googleapis", "google/type", "date_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/dayofweek": label.New("go_googleapis", "google/type", "dayofweek_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/latlng": label.New("go_googleapis", "google/type", "latlng_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/money": label.New("go_googleapis", "google/type", "money_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/postaladdress": label.New("go_googleapis", "google/type", "postaladdress_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/type/timeofday": label.New("go_googleapis", "google/type", "timeofday_go_proto"),
|
||||
"google.golang.org/genproto/googleapis/watcher/v1": label.New("go_googleapis", "google/watcher/v1", "watcher_go_proto"),
|
||||
}
|
||||
727
vendor/github.com/bazelbuild/bazel-gazelle/language/go/known_proto_imports.go
generated
vendored
Normal file
727
vendor/github.com/bazelbuild/bazel-gazelle/language/go/known_proto_imports.go
generated
vendored
Normal file
|
|
@ -0,0 +1,727 @@
|
|||
// Generated by language/proto/gen/gen_known_imports.go
|
||||
// From language/proto/proto.csv
|
||||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/label"
|
||||
|
||||
var knownProtoImports = map[string]label.Label{
|
||||
|
||||
"google/protobuf/any.proto": label.New("io_bazel_rules_go", "proto/wkt", "any_go_proto"),
|
||||
"google/protobuf/api.proto": label.New("io_bazel_rules_go", "proto/wkt", "api_go_proto"),
|
||||
"google/protobuf/compiler/plugin.proto": label.New("io_bazel_rules_go", "proto/wkt", "compiler_plugin_go_proto"),
|
||||
"google/protobuf/descriptor.proto": label.New("io_bazel_rules_go", "proto/wkt", "descriptor_go_proto"),
|
||||
"google/protobuf/duration.proto": label.New("io_bazel_rules_go", "proto/wkt", "duration_go_proto"),
|
||||
"google/protobuf/empty.proto": label.New("io_bazel_rules_go", "proto/wkt", "empty_go_proto"),
|
||||
"google/protobuf/field_mask.proto": label.New("io_bazel_rules_go", "proto/wkt", "field_mask_go_proto"),
|
||||
"google/protobuf/source_context.proto": label.New("io_bazel_rules_go", "proto/wkt", "source_context_go_proto"),
|
||||
"google/protobuf/struct.proto": label.New("io_bazel_rules_go", "proto/wkt", "struct_go_proto"),
|
||||
"google/protobuf/timestamp.proto": label.New("io_bazel_rules_go", "proto/wkt", "timestamp_go_proto"),
|
||||
"google/protobuf/type.proto": label.New("io_bazel_rules_go", "proto/wkt", "type_go_proto"),
|
||||
"google/protobuf/wrappers.proto": label.New("io_bazel_rules_go", "proto/wkt", "wrappers_go_proto"),
|
||||
"google/ads/googleads/v0/common/ad_type_infos.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/bidding.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/criteria.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/criterion_category_availability.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/custom_parameter.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/dates.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/explorer_auto_optimizer_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/feed_common.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/frequency_cap.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/keyword_plan_common.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/matching_function.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/metrics.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/policy.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/real_time_bidding_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/tag_snippet.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/user_lists.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/common/value.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_go_proto"),
|
||||
"google/ads/googleads/v0/enums/access_reason.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_proposal_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_proposal_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_customizer_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_ad_rotation_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_ad_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_criterion_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_network_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_serving_optimization_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/advertising_channel_sub_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/advertising_channel_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/affiliate_location_feed_relationship_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/age_range_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/app_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/attribution_model.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/bid_modifier_source.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/bidding_source.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/bidding_strategy_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/billing_setup_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/budget_delivery_method.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/budget_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/call_conversion_reporting_state.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/call_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/callout_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_group_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_serving_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_shared_set_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/change_status_operation.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/change_status_resource_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/content_label_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_category.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_counting_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_category_channel_availability_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_category_locale_availability_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/custom_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/customer_match_upload_key_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/data_driven_model_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/day_of_week.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/device.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/display_ad_format_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/education_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_attribute_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_item_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_link_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_mapping_criterion_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_mapping_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_origin.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/flight_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_event_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_time_unit.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/gender_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/geo_target_constant_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/geo_targeting_restriction.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/google_ads_field_category.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/google_ads_field_data_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/hotel_date_selection_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/hotel_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/income_range_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/interaction_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/job_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_match_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_competition_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_forecast_interval.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_network.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/listing_custom_attribute_index.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/listing_group_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/local_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/manager_link_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/media_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/message_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/mime_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/minute_of_hour.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/month_of_year.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/page_one_promoted_strategy_goal.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/parental_status_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/placeholder_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_approval_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_review_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_topic_entry_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_topic_evidence_destination_mismatch_url_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/preferred_content_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/price_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/product_channel.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/product_channel_exclusivity.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/product_condition.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/product_type_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/promotion_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/proximity_radius_units.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/quality_score_bucket.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/real_estate_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/recommendation_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/search_term_match_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/search_term_targeting_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/shared_set_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/shared_set_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/sitelink_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/slot.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/spending_limit_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/structured_snippet_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/target_cpa_opt_in_recommendation_goal.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/targeting_dimension.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/time_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/tracking_code_page_format.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/tracking_code_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/travel_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_interest_taxonomy_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_access_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_closing_reason.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_crm_data_source_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_membership_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_size_range.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_go_proto"),
|
||||
"google/ads/googleads/v0/errors/account_budget_proposal_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_customizer_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_ad_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_bid_modifier_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_sharing_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/adx_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/authentication_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/authorization_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/bidding_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/bidding_strategy_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/billing_setup_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_budget_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_shared_set_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/change_status_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/collection_size_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/context_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/conversion_action_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_client_link_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_manager_link_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/database_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/date_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/date_range_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/distinct_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/enum_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/errors.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_attribute_reference_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_item_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_mapping_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/field_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/field_mask_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/function_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/function_parsing_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/geo_target_constant_suggestion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/header_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/id_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/image_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/internal_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_ad_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_campaign_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_idea_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_keyword_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_negative_keyword_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/list_operation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/media_bundle_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/media_file_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/multiplier_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/mutate_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/new_resource_creation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/not_empty_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/null_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/operation_access_denied_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/operator_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/policy_finding_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/query_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/quota_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/range_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/recommendation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/region_code_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/request_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/resource_access_denied_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/resource_count_limit_exceeded_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/setting_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/shared_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/shared_set_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/string_format_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/string_length_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/url_field_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/errors/user_list_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_go_proto"),
|
||||
"google/ads/googleads/v0/resources/account_budget.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/account_budget_proposal.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_ad.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_audience_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_bid_modifier.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/age_range_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/bidding_strategy.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/billing_setup.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_audience_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_bid_modifier.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_budget.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_shared_set.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/carrier_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/change_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/conversion_action.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/customer.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_client.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_client_link.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_manager_link.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/display_keyword_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/feed_item.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/feed_mapping.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/gender_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/geo_target_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/google_ads_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/hotel_group_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/hotel_performance_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_ad_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_campaign.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_keyword.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_negative_keyword.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/language_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/managed_placement_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/media_file.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/parental_status_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/payments_account.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/product_group_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/recommendation.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/search_term_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/shared_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/shared_set.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/topic_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/topic_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/user_interest.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/user_list.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/resources/video.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_go_proto"),
|
||||
"google/ads/googleads/v0/services/account_budget_proposal_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/account_budget_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_ad_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_audience_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_bid_modifier_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/age_range_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/bidding_strategy_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/billing_setup_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_audience_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_bid_modifier_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_budget_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_shared_set_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/carrier_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/change_status_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/conversion_action_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/customer_client_link_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/customer_client_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/customer_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/customer_manager_link_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/customer_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/display_keyword_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/feed_item_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/feed_mapping_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/gender_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/geo_target_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/google_ads_field_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/google_ads_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/hotel_group_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/hotel_performance_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_ad_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_campaign_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_idea_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_keyword_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_negative_keyword_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/language_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/managed_placement_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/media_file_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/parental_status_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/payments_account_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/product_group_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/recommendation_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/search_term_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/shared_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/shared_set_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/topic_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/topic_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/user_interest_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/user_list_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/ads/googleads/v0/services/video_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_go_proto"),
|
||||
"google/api/annotations.proto": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google/api/auth.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/backend.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/billing.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/config_change.proto": label.New("go_googleapis", "google/api", "configchange_go_proto"),
|
||||
"google/api/consumer.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/context.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/control.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/distribution.proto": label.New("go_googleapis", "google/api", "distribution_go_proto"),
|
||||
"google/api/documentation.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/endpoint.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/experimental/authorization_config.proto": label.New("go_googleapis", "google/api", "api_go_proto"),
|
||||
"google/api/experimental/experimental.proto": label.New("go_googleapis", "google/api", "api_go_proto"),
|
||||
"google/api/expr/v1alpha1/cel_service.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/checked.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/conformance_service.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/eval.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/explain.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/syntax.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1alpha1/value.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_go_proto"),
|
||||
"google/api/expr/v1beta1/decl.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google/api/expr/v1beta1/eval.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google/api/expr/v1beta1/expr.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google/api/expr/v1beta1/source.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google/api/expr/v1beta1/value.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_go_proto"),
|
||||
"google/api/http.proto": label.New("go_googleapis", "google/api", "annotations_go_proto"),
|
||||
"google/api/httpbody.proto": label.New("go_googleapis", "google/api", "httpbody_go_proto"),
|
||||
"google/api/label.proto": label.New("go_googleapis", "google/api", "label_go_proto"),
|
||||
"google/api/launch_stage.proto": label.New("go_googleapis", "google/api", "api_go_proto"),
|
||||
"google/api/log.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/logging.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/metric.proto": label.New("go_googleapis", "google/api", "metric_go_proto"),
|
||||
"google/api/monitored_resource.proto": label.New("go_googleapis", "google/api", "monitoredres_go_proto"),
|
||||
"google/api/monitoring.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/quota.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/service.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/servicecontrol/v1/check_error.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/distribution.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/log_entry.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/metric_value.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/operation.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/quota_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicecontrol/v1/service_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_go_proto"),
|
||||
"google/api/servicemanagement/v1/resources.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google/api/servicemanagement/v1/servicemanager.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_go_proto"),
|
||||
"google/api/source_info.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/system_parameter.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/api/usage.proto": label.New("go_googleapis", "google/api", "serviceconfig_go_proto"),
|
||||
"google/appengine/legacy/audit_data.proto": label.New("go_googleapis", "google/appengine/legacy", "legacy_go_proto"),
|
||||
"google/appengine/logging/v1/request_log.proto": label.New("go_googleapis", "google/appengine/logging/v1", "logging_go_proto"),
|
||||
"google/appengine/v1/app_yaml.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/appengine.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/application.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/audit_data.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/deploy.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/instance.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/location.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/operation.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/service.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/appengine/v1/version.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_go_proto"),
|
||||
"google/assistant/embedded/v1alpha1/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_go_proto"),
|
||||
"google/assistant/embedded/v1alpha2/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_data.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_go_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_instance_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_table_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/common.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/instance.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/admin/v2/table.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_go_proto"),
|
||||
"google/bigtable/v1/bigtable_data.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/v1/bigtable_service.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/v1/bigtable_service_messages.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_go_proto"),
|
||||
"google/bigtable/v2/bigtable.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google/bigtable/v2/data.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_go_proto"),
|
||||
"google/bytestream/bytestream.proto": label.New("go_googleapis", "google/bytestream", "bytestream_go_proto"),
|
||||
"google/cloud/asset/v1beta1/asset_service.proto": label.New("go_googleapis", "google/cloud/asset/v1beta1", "asset_go_proto"),
|
||||
"google/cloud/asset/v1beta1/assets.proto": label.New("go_googleapis", "google/cloud/asset/v1beta1", "asset_go_proto"),
|
||||
"google/cloud/audit/audit_log.proto": label.New("go_googleapis", "google/cloud/audit", "audit_go_proto"),
|
||||
"google/cloud/automl/v1beta1/annotation_payload.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/classification.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/data_items.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/dataset.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/image.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/io.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/model.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/model_evaluation.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/operations.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/prediction_service.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/service.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/text.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/automl/v1beta1/translation.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_go_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/datatransfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/transfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_go_proto"),
|
||||
"google/cloud/bigquery/logging/v1/audit_data.proto": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_go_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/avro.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_go_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/read_options.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_go_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/storage.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_go_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/table_reference.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_go_proto"),
|
||||
"google/cloud/billing/v1/cloud_billing.proto": label.New("go_googleapis", "google/cloud/billing/v1", "billing_go_proto"),
|
||||
"google/cloud/dataproc/v1/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/shared.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dataproc/v1beta2/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_go_proto"),
|
||||
"google/cloud/dialogflow/v2/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/audio_config.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/document.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/knowledge_base.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_go_proto"),
|
||||
"google/cloud/functions/v1beta2/functions.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google/cloud/functions/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_go_proto"),
|
||||
"google/cloud/iot/v1/device_manager.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google/cloud/iot/v1/resources.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_go_proto"),
|
||||
"google/cloud/kms/v1/resources.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google/cloud/kms/v1/service.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_go_proto"),
|
||||
"google/cloud/language/v1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1", "language_go_proto"),
|
||||
"google/cloud/language/v1beta1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_go_proto"),
|
||||
"google/cloud/language/v1beta2/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_go_proto"),
|
||||
"google/cloud/location/locations.proto": label.New("go_googleapis", "google/cloud/location", "location_go_proto"),
|
||||
"google/cloud/ml/v1/job_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/model_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/operation_metadata.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/prediction_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/ml/v1/project_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_go_proto"),
|
||||
"google/cloud/oslogin/common/common.proto": label.New("go_googleapis", "google/cloud/oslogin/common", "common_go_proto"),
|
||||
"google/cloud/oslogin/v1/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_go_proto"),
|
||||
"google/cloud/oslogin/v1alpha/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_go_proto"),
|
||||
"google/cloud/oslogin/v1beta/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_go_proto"),
|
||||
"google/cloud/redis/v1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1", "redis_go_proto"),
|
||||
"google/cloud/redis/v1beta1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_go_proto"),
|
||||
"google/cloud/resourcemanager/v2/folders.proto": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_go_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/resources.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_go_proto"),
|
||||
"google/cloud/scheduler/v1beta1/cloudscheduler.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_go_proto"),
|
||||
"google/cloud/scheduler/v1beta1/job.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_go_proto"),
|
||||
"google/cloud/scheduler/v1beta1/target.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/asset.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/finding.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/organization_settings.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/security_marks.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/securitycenter_service.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/source.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_go_proto"),
|
||||
"google/cloud/speech/v1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1", "speech_go_proto"),
|
||||
"google/cloud/speech/v1p1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_go_proto"),
|
||||
"google/cloud/support/common.proto": label.New("go_googleapis", "google/cloud/support", "common_go_proto"),
|
||||
"google/cloud/support/v1alpha1/cloud_support.proto": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta2/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta3/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta3/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta3/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_go_proto"),
|
||||
"google/cloud/tasks/v2beta3/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_go_proto"),
|
||||
"google/cloud/texttospeech/v1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_go_proto"),
|
||||
"google/cloud/texttospeech/v1beta1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_go_proto"),
|
||||
"google/cloud/videointelligence/v1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1beta2/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1p1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_go_proto"),
|
||||
"google/cloud/videointelligence/v1p2beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p2beta1", "videointelligence_go_proto"),
|
||||
"google/cloud/vision/v1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/product_search.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/product_search_service.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p1beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p2beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/product_search.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/product_search_service.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/vision/v1p3beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/crawled_url.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_addon.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_config.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_run.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_go_proto"),
|
||||
"google/container/v1/cluster_service.proto": label.New("go_googleapis", "google/container/v1", "container_go_proto"),
|
||||
"google/container/v1alpha1/cluster_service.proto": label.New("go_googleapis", "google/container/v1alpha1", "container_go_proto"),
|
||||
"google/container/v1beta1/cluster_service.proto": label.New("go_googleapis", "google/container/v1beta1", "container_go_proto"),
|
||||
"google/datastore/admin/v1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_go_proto"),
|
||||
"google/datastore/admin/v1/index.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_go_proto"),
|
||||
"google/datastore/admin/v1beta1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/datastore/v1/datastore.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/v1/entity.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/v1/query.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_go_proto"),
|
||||
"google/datastore/v1beta3/datastore.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/datastore/v1beta3/entity.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/datastore/v1beta3/query.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_go_proto"),
|
||||
"google/devtools/build/v1/build_events.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/build/v1/build_status.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/build/v1/publish_build_event.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_go_proto"),
|
||||
"google/devtools/cloudbuild/v1/cloudbuild.proto": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/controller.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/data.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/devtools/clouddebugger/v2/debugger.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/common.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_group_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_go_proto"),
|
||||
"google/devtools/cloudprofiler/v2/profiler.proto": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_go_proto"),
|
||||
"google/devtools/cloudtrace/v1/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_go_proto"),
|
||||
"google/devtools/cloudtrace/v2/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google/devtools/cloudtrace/v2/tracing.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/image_basis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/source_context.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/attestation/attestation.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/attestation", "attestation_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/build/build.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/build", "build_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/common/common.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/common", "common_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1", "containeranalysis_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/deployment/deployment.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/deployment", "deployment_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/discovery/discovery.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/discovery", "discovery_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/grafeas/grafeas.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/grafeas", "grafeas_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/image/image.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/image", "image_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/package/package.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/package", "package_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/provenance/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/provenance", "provenance_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/source/source.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/source", "source_go_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/vulnerability/vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/vulnerability", "vulnerability_go_proto"),
|
||||
"google/devtools/remoteexecution/v1test/remote_execution.proto": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/bots.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/command.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/tasks.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/worker.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_go_proto"),
|
||||
"google/devtools/resultstore/v2/action.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/common.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/configuration.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/configured_target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/coverage.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/coverage_summary.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/file.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/file_set.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/invocation.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_file_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_upload.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/resultstore/v2/test_suite.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_go_proto"),
|
||||
"google/devtools/source/v1/source_context.proto": label.New("go_googleapis", "google/devtools/source/v1", "source_go_proto"),
|
||||
"google/devtools/sourcerepo/v1/sourcerepo.proto": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_go_proto"),
|
||||
"google/example/library/v1/library.proto": label.New("go_googleapis", "google/example/library/v1", "library_go_proto"),
|
||||
"google/firestore/admin/v1/field.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1/location.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1/operation.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta1/location.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta2/field.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta2/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta2/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_go_proto"),
|
||||
"google/firestore/admin/v1beta2/operation.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_go_proto"),
|
||||
"google/firestore/v1/common.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google/firestore/v1/document.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google/firestore/v1/firestore.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google/firestore/v1/query.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google/firestore/v1/write.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/common.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/document.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/firestore.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/query.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/firestore/v1beta1/write.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_go_proto"),
|
||||
"google/genomics/v1/annotations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/cigar.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/datasets.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/operations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/position.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/range.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readalignment.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readgroup.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/readgroupset.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/reads.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/references.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1/variants.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_go_proto"),
|
||||
"google/genomics/v1alpha2/pipelines.proto": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_go_proto"),
|
||||
"google/home/graph/v1/device.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google/home/graph/v1/homegraph.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_go_proto"),
|
||||
"google/iam/admin/v1/iam.proto": label.New("go_googleapis", "google/iam/admin/v1", "admin_go_proto"),
|
||||
"google/iam/credentials/v1/common.proto": label.New("go_googleapis", "google/iam/credentials/v1", "credentials_go_proto"),
|
||||
"google/iam/credentials/v1/iamcredentials.proto": label.New("go_googleapis", "google/iam/credentials/v1", "credentials_go_proto"),
|
||||
"google/iam/v1/iam_policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google/iam/v1/logging/audit_data.proto": label.New("go_googleapis", "google/iam/v1/logging", "logging_go_proto"),
|
||||
"google/iam/v1/policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_go_proto"),
|
||||
"google/logging/type/http_request.proto": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
"google/logging/type/log_severity.proto": label.New("go_googleapis", "google/logging/type", "ltype_go_proto"),
|
||||
"google/logging/v2/log_entry.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/logging.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/logging_config.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/logging/v2/logging_metrics.proto": label.New("go_googleapis", "google/logging/v2", "logging_go_proto"),
|
||||
"google/longrunning/operations.proto": label.New("go_googleapis", "google/longrunning", "longrunning_go_proto"),
|
||||
"google/monitoring/v3/alert.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/alert_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/common.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/dropped_labels.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/group.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/group_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/metric.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/metric_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/mutation_record.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/notification.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/notification_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/span_context.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/uptime.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/monitoring/v3/uptime_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_go_proto"),
|
||||
"google/privacy/dlp/v2/dlp.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google/privacy/dlp/v2/storage.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_go_proto"),
|
||||
"google/pubsub/v1/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1", "pubsub_go_proto"),
|
||||
"google/pubsub/v1beta2/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_go_proto"),
|
||||
"google/rpc/code.proto": label.New("go_googleapis", "google/rpc", "code_go_proto"),
|
||||
"google/rpc/error_details.proto": label.New("go_googleapis", "google/rpc", "errdetails_go_proto"),
|
||||
"google/rpc/status.proto": label.New("go_googleapis", "google/rpc", "status_go_proto"),
|
||||
"google/spanner/admin/database/v1/spanner_database_admin.proto": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_go_proto"),
|
||||
"google/spanner/admin/instance/v1/spanner_instance_admin.proto": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_go_proto"),
|
||||
"google/spanner/v1/keys.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/mutation.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/query_plan.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/result_set.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/spanner.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/transaction.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/spanner/v1/type.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_go_proto"),
|
||||
"google/storagetransfer/v1/transfer.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google/storagetransfer/v1/transfer_types.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_go_proto"),
|
||||
"google/streetview/publish/v1/resources.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/streetview/publish/v1/rpcmessages.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/streetview/publish/v1/streetview_publish.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_go_proto"),
|
||||
"google/type/color.proto": label.New("go_googleapis", "google/type", "color_go_proto"),
|
||||
"google/type/date.proto": label.New("go_googleapis", "google/type", "date_go_proto"),
|
||||
"google/type/dayofweek.proto": label.New("go_googleapis", "google/type", "dayofweek_go_proto"),
|
||||
"google/type/latlng.proto": label.New("go_googleapis", "google/type", "latlng_go_proto"),
|
||||
"google/type/money.proto": label.New("go_googleapis", "google/type", "money_go_proto"),
|
||||
"google/type/postal_address.proto": label.New("go_googleapis", "google/type", "postaladdress_go_proto"),
|
||||
"google/type/timeofday.proto": label.New("go_googleapis", "google/type", "timeofday_go_proto"),
|
||||
"google/watcher/v1/watch.proto": label.New("go_googleapis", "google/watcher/v1", "watcher_go_proto"),
|
||||
}
|
||||
|
|
@ -51,10 +51,9 @@ limitations under the License.
|
|||
//
|
||||
// Gazelle has special cases for import paths associated with proto Well
|
||||
// Known Types and Google APIs. rules_go declares canonical rules for these.
|
||||
|
||||
package golang
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/language"
|
||||
import "github.com/bazelbuild/bazel-gazelle/language"
|
||||
|
||||
const goName = "go"
|
||||
|
||||
|
|
@ -66,6 +65,6 @@ type goLang struct {
|
|||
|
||||
func (_ *goLang) Name() string { return goName }
|
||||
|
||||
func New() language.Language {
|
||||
func NewLanguage() language.Language {
|
||||
return &goLang{goPkgRels: make(map[string]bool)}
|
||||
}
|
||||
|
|
@ -22,9 +22,9 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// goPackage contains metadata for a set of .go and .proto files that can be
|
||||
|
|
@ -92,7 +92,7 @@ func (pkg *goPackage) addFile(c *config.Config, info fileInfo, cgo bool) error {
|
|||
case info.ext == unknownExt || !cgo && (info.ext == cExt || info.ext == csExt):
|
||||
return nil
|
||||
case info.ext == protoExt:
|
||||
if proto.GetProtoConfig(c).Mode == proto.LegacyMode {
|
||||
if pcMode := getProtoMode(c); pcMode == proto.LegacyMode {
|
||||
// Only add files in legacy mode. This is used to generate a filegroup
|
||||
// that contains all protos. In order modes, we get the .proto files
|
||||
// from information emitted by the proto language extension.
|
||||
|
|
@ -23,13 +23,12 @@ import (
|
|||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/language/proto"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
"github.com/bazelbuild/bazel-gazelle/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func (_ *goLang) Imports(_ *config.Config, r *rule.Rule, f *rule.File) []resolve.ImportSpec {
|
||||
|
|
@ -60,8 +59,7 @@ func (_ *goLang) Embeds(r *rule.Rule, from label.Label) []label.Label {
|
|||
return embedLabels
|
||||
}
|
||||
|
||||
func (gl *goLang) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r *rule.Rule, from label.Label) {
|
||||
importsRaw := r.PrivateAttr(config.GazelleImportsKey)
|
||||
func (gl *goLang) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repo.RemoteCache, r *rule.Rule, importsRaw interface{}, from label.Label) {
|
||||
if importsRaw == nil {
|
||||
// may not be set in tests.
|
||||
return
|
||||
|
|
@ -91,7 +89,14 @@ func (gl *goLang) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repos.Rem
|
|||
log.Print(err)
|
||||
}
|
||||
if !deps.IsEmpty() {
|
||||
r.SetAttr("deps", deps)
|
||||
if r.Kind() == "go_proto_library" {
|
||||
// protos may import the same library multiple times by different names,
|
||||
// so we need to de-duplicate them. Protos are not platform-specific,
|
||||
// so it's safe to just flatten them.
|
||||
r.SetAttr("deps", deps.Flat())
|
||||
} else {
|
||||
r.SetAttr("deps", deps)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -100,9 +105,9 @@ var (
|
|||
notFoundError = errors.New("rule not found")
|
||||
)
|
||||
|
||||
func resolveGo(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
func resolveGo(c *config.Config, ix *resolve.RuleIndex, rc *repo.RemoteCache, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
gc := getGoConfig(c)
|
||||
pc := proto.GetProtoConfig(c)
|
||||
pcMode := getProtoMode(c)
|
||||
if build.IsLocalImport(imp) {
|
||||
cleanRel := path.Clean(path.Join(from.Pkg, imp))
|
||||
if build.IsLocalImport(cleanRel) {
|
||||
|
|
@ -115,7 +120,11 @@ func resolveGo(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r
|
|||
return label.NoLabel, skipImportError
|
||||
}
|
||||
|
||||
if pc.Mode.ShouldUseKnownImports() {
|
||||
if l, ok := resolve.FindRuleWithOverride(c, resolve.ImportSpec{Lang: "go", Imp: imp}, "go"); ok {
|
||||
return l, nil
|
||||
}
|
||||
|
||||
if pcMode.ShouldUseKnownImports() {
|
||||
// These are commonly used libraries that depend on Well Known Types.
|
||||
// They depend on the generated versions of these protos to avoid conflicts.
|
||||
// However, since protoc-gen-go depends on these libraries, we generate
|
||||
|
|
@ -123,12 +132,18 @@ func resolveGo(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r
|
|||
// "go_default_library" versions of these libraries depend on the
|
||||
// pre-generated versions of the proto libraries.
|
||||
switch imp {
|
||||
case "github.com/golang/protobuf/proto":
|
||||
return label.New("com_github_golang_protobuf", "proto", "go_default_library"), nil
|
||||
case "github.com/golang/protobuf/jsonpb":
|
||||
return label.New("com_github_golang_protobuf", "jsonpb", "go_default_library_gen"), nil
|
||||
case "github.com/golang/protobuf/descriptor":
|
||||
return label.New("com_github_golang_protobuf", "descriptor", "go_default_library_gen"), nil
|
||||
case "github.com/golang/protobuf/ptypes":
|
||||
return label.New("com_github_golang_protobuf", "ptypes", "go_default_library_gen"), nil
|
||||
case "github.com/golang/protobuf/protoc-gen-go/generator":
|
||||
return label.New("com_github_golang_protobuf", "protoc-gen-go/generator", "go_default_library_gen"), nil
|
||||
case "google.golang.org/grpc":
|
||||
return label.New("org_golang_google_grpc", "", "go_default_library"), nil
|
||||
}
|
||||
if l, ok := knownGoProtoImports[imp]; ok {
|
||||
return l, nil
|
||||
|
|
@ -141,9 +156,25 @@ func resolveGo(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r
|
|||
return label.NoLabel, err
|
||||
}
|
||||
|
||||
if pathtools.HasPrefix(imp, gc.prefix) {
|
||||
pkg := path.Join(gc.prefixRel, pathtools.TrimPrefix(imp, gc.prefix))
|
||||
return label.New("", pkg, config.DefaultLibName), nil
|
||||
// Special cases for rules_go and bazel_gazelle.
|
||||
// These have names that don't following conventions and they're
|
||||
// typeically declared with http_archive, not go_repository, so Gazelle
|
||||
// won't recognize them.
|
||||
if pathtools.HasPrefix(imp, "github.com/bazelbuild/rules_go") {
|
||||
pkg := pathtools.TrimPrefix(imp, "github.com/bazelbuild/rules_go")
|
||||
return label.New("io_bazel_rules_go", pkg, "go_default_library"), nil
|
||||
} else if pathtools.HasPrefix(imp, "github.com/bazelbuild/bazel-gazelle") {
|
||||
pkg := pathtools.TrimPrefix(imp, "github.com/bazelbuild/bazel-gazelle")
|
||||
return label.New("bazel_gazelle", pkg, "go_default_library"), nil
|
||||
}
|
||||
|
||||
if !c.IndexLibraries {
|
||||
// packages in current repo were not indexed, relying on prefix to decide what may have been in
|
||||
// current repo
|
||||
if pathtools.HasPrefix(imp, gc.prefix) {
|
||||
pkg := path.Join(gc.prefixRel, pathtools.TrimPrefix(imp, gc.prefix))
|
||||
return label.New("", pkg, defaultLibName), nil
|
||||
}
|
||||
}
|
||||
|
||||
if gc.depMode == externalMode {
|
||||
|
|
@ -211,7 +242,7 @@ func resolveWithIndexGo(ix *resolve.RuleIndex, imp string, from label.Label) (la
|
|||
return bestMatch.Label, nil
|
||||
}
|
||||
|
||||
func resolveExternal(rc *repos.RemoteCache, imp string) (label.Label, error) {
|
||||
func resolveExternal(rc *repo.RemoteCache, imp string) (label.Label, error) {
|
||||
prefix, repo, err := rc.Root(imp)
|
||||
if err != nil {
|
||||
return label.NoLabel, err
|
||||
|
|
@ -222,21 +253,25 @@ func resolveExternal(rc *repos.RemoteCache, imp string) (label.Label, error) {
|
|||
pkg = pathtools.TrimPrefix(imp, prefix)
|
||||
}
|
||||
|
||||
return label.New(repo, pkg, config.DefaultLibName), nil
|
||||
return label.New(repo, pkg, defaultLibName), nil
|
||||
}
|
||||
|
||||
func resolveVendored(rc *repos.RemoteCache, imp string) (label.Label, error) {
|
||||
return label.New("", path.Join("vendor", imp), config.DefaultLibName), nil
|
||||
func resolveVendored(rc *repo.RemoteCache, imp string) (label.Label, error) {
|
||||
return label.New("", path.Join("vendor", imp), defaultLibName), nil
|
||||
}
|
||||
|
||||
func resolveProto(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
pc := proto.GetProtoConfig(c)
|
||||
func resolveProto(c *config.Config, ix *resolve.RuleIndex, rc *repo.RemoteCache, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
pcMode := getProtoMode(c)
|
||||
|
||||
if wellKnownProtos[imp] {
|
||||
return label.NoLabel, skipImportError
|
||||
}
|
||||
|
||||
if l, ok := knownProtoImports[imp]; ok && pc.Mode.ShouldUseKnownImports() {
|
||||
if l, ok := resolve.FindRuleWithOverride(c, resolve.ImportSpec{Lang: "proto", Imp: imp}, "go"); ok {
|
||||
return l, nil
|
||||
}
|
||||
|
||||
if l, ok := knownProtoImports[imp]; ok && pcMode.ShouldUseKnownImports() {
|
||||
if l.Equal(from) {
|
||||
return label.NoLabel, skipImportError
|
||||
} else {
|
||||
|
|
@ -261,7 +296,7 @@ func resolveProto(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache
|
|||
if from.Pkg == "vendor" || strings.HasPrefix(from.Pkg, "vendor/") {
|
||||
rel = path.Join("vendor", rel)
|
||||
}
|
||||
return label.New("", rel, config.DefaultLibName), nil
|
||||
return label.New("", rel, defaultLibName), nil
|
||||
}
|
||||
|
||||
// wellKnownProtos is the set of proto sets for which we don't need to add
|
||||
|
|
@ -0,0 +1,151 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 language provides an interface for language extensions in Gazelle.
|
||||
// Support for a new language can be added by defining a package with a
|
||||
// function named "New" that returns a value assignable to this interface.
|
||||
//
|
||||
// TODO(jayconrod): document how to incorporate languages into a gazelle
|
||||
// binary that can be run by Bazel.
|
||||
package language
|
||||
|
||||
import (
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// Language describes an extension for Gazelle that provides support for
|
||||
// a set of Bazel rules.
|
||||
//
|
||||
// Languages are used primarily by the fix and update commands. The order
|
||||
// in which languages are used matters, since languages may depend on
|
||||
// one another. For example, go depends on proto, since go_proto_libraries
|
||||
// are generated from metadata stored in proto_libraries.
|
||||
//
|
||||
// A single instance of Language is created for each fix / update run. Some
|
||||
// state may be stored in this instance, but stateless behavior is encouraged,
|
||||
// especially since some operations may be concurrent in the future.
|
||||
//
|
||||
// Tasks languages are used for
|
||||
//
|
||||
// * Configuration (embedded interface config.Configurer). Languages may
|
||||
// define command line flags and alter the configuration in a directory
|
||||
// based on directives in build files.
|
||||
//
|
||||
// * Fixing deprecated usage of rules in build files.
|
||||
//
|
||||
// * Generating rules from source files in a directory.
|
||||
//
|
||||
// * Resolving library imports (embedded interface resolve.Resolver). For
|
||||
// example, import strings like "github.com/foo/bar" in Go can be resolved
|
||||
// into Bazel labels like "@com_github_foo_bar//:go_default_library".
|
||||
//
|
||||
// Tasks languages support
|
||||
//
|
||||
// * Generating load statements: languages list files and symbols that may
|
||||
// be loaded.
|
||||
//
|
||||
// * Merging generated rules into existing rules: languages provide metadata
|
||||
// that helps with rule matching, merging, and deletion.
|
||||
type Language interface {
|
||||
// TODO(jayconrod): is embedding Configurer strictly necessary?
|
||||
config.Configurer
|
||||
resolve.Resolver
|
||||
|
||||
// Kinds returns a map of maps rule names (kinds) and information on how to
|
||||
// match and merge attributes that may be found in rules of those kinds. All
|
||||
// kinds of rules generated for this language may be found here.
|
||||
Kinds() map[string]rule.KindInfo
|
||||
|
||||
// Loads returns .bzl files and symbols they define. Every rule generated by
|
||||
// GenerateRules, now or in the past, should be loadable from one of these
|
||||
// files.
|
||||
Loads() []rule.LoadInfo
|
||||
|
||||
// GenerateRules extracts build metadata from source files in a directory.
|
||||
// GenerateRules is called in each directory where an update is requested
|
||||
// in depth-first post-order.
|
||||
//
|
||||
// args contains the arguments for GenerateRules. This is passed as a
|
||||
// struct to avoid breaking implementations in the future when new
|
||||
// fields are added.
|
||||
//
|
||||
// A GenerateResult struct is returned. Optional fields may be added to this
|
||||
// type in the future.
|
||||
//
|
||||
// Any non-fatal errors this function encounters should be logged using
|
||||
// log.Print.
|
||||
GenerateRules(args GenerateArgs) GenerateResult
|
||||
|
||||
// Fix repairs deprecated usage of language-specific rules in f. This is
|
||||
// called before the file is indexed. Unless c.ShouldFix is true, fixes
|
||||
// that delete or rename rules should not be performed.
|
||||
Fix(c *config.Config, f *rule.File)
|
||||
}
|
||||
|
||||
// GenerateArgs contains arguments for language.GenerateRules. Arguments are
|
||||
// passed in a struct value so that new fields may be added in the future
|
||||
// without breaking existing implementations.
|
||||
type GenerateArgs struct {
|
||||
// Config is the configuration for the directory where rules are being
|
||||
// generated.
|
||||
Config *config.Config
|
||||
|
||||
// Dir is the canonical absolute path to the directory.
|
||||
Dir string
|
||||
|
||||
// Rel is the slash-separated path to the directory, relative to the
|
||||
// repository root ("" for the root directory itself). This may be used
|
||||
// as the package name in labels.
|
||||
Rel string
|
||||
|
||||
// File is the build file for the directory. File is nil if there is
|
||||
// no existing build file.
|
||||
File *rule.File
|
||||
|
||||
// Subdirs is a list of subdirectories in the directory, including
|
||||
// symbolic links to directories that Gazelle will follow.
|
||||
// RegularFiles is a list of regular files including other symbolic
|
||||
// links.
|
||||
// GeneratedFiles is a list of generated files in the directory
|
||||
// (usually these are mentioned as "out" or "outs" attributes in rules).
|
||||
Subdirs, RegularFiles, GenFiles []string
|
||||
|
||||
// OtherEmpty is a list of empty rules generated by other languages.
|
||||
// OtherGen is a list of generated rules generated by other languages.
|
||||
OtherEmpty, OtherGen []*rule.Rule
|
||||
}
|
||||
|
||||
// GenerateResult contains return values for language.GenerateRules.
|
||||
// Results are returned through a struct value so that new (optional)
|
||||
// fields may be added without breaking existing implementations.
|
||||
type GenerateResult struct {
|
||||
// Gen is a list of rules generated from files found in the directory
|
||||
// GenerateRules was asked to process. These will be merged with existing
|
||||
// rules or added to the build file.
|
||||
Gen []*rule.Rule
|
||||
|
||||
// Empty is a list of rules that cannot be built with the files found in the
|
||||
// directory GenerateRules was asked to process. These will be merged with
|
||||
// existing rules. If ther merged rules are empty, they will be deleted.
|
||||
Empty []*rule.Rule
|
||||
|
||||
// Imports contains information about the imported libraries for each
|
||||
// rule in Gen. Gen and Imports must have the same length, since they
|
||||
// correspond. These values are passed to Resolve after merge. The type
|
||||
// is opaque since different languages may use different representations.
|
||||
Imports []interface{}
|
||||
}
|
||||
28
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/BUILD.bazel
generated
vendored
Normal file
28
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/BUILD.bazel
generated
vendored
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"constants.go",
|
||||
"fileinfo.go",
|
||||
"fix.go",
|
||||
"generate.go",
|
||||
"kinds.go",
|
||||
"known_imports.go",
|
||||
"lang.go",
|
||||
"package.go",
|
||||
"resolve.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/language/proto",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/language/proto",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/language:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/repo:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/resolve:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -20,9 +20,10 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"path"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// ProtoConfig contains configuration values related to protos.
|
||||
|
|
@ -46,10 +47,26 @@ type ProtoConfig struct {
|
|||
// groupOption is an option name that Gazelle will use to group .proto
|
||||
// files into proto_library rules. If unset, the proto package name is used.
|
||||
groupOption string
|
||||
|
||||
// stripImportPrefix The prefix to strip from the paths of the .proto files.
|
||||
// If set, Gazelle will apply this value to the strip_import_prefix attribute
|
||||
// within the proto_library_rule.
|
||||
stripImportPrefix string
|
||||
|
||||
// importPrefix The prefix to add to the paths of the .proto files.
|
||||
// If set, Gazelle will apply this value to the import_prefix attribute
|
||||
// within the proto_library_rule.
|
||||
importPrefix string
|
||||
}
|
||||
|
||||
// GetProtoConfig returns the proto language configuration. If the proto
|
||||
// extension was not run, it will return nil.
|
||||
func GetProtoConfig(c *config.Config) *ProtoConfig {
|
||||
return c.Exts[protoName].(*ProtoConfig)
|
||||
pc := c.Exts[protoName]
|
||||
if pc == nil {
|
||||
return nil
|
||||
}
|
||||
return pc.(*ProtoConfig)
|
||||
}
|
||||
|
||||
// Mode determines how proto rules are generated.
|
||||
|
|
@ -168,6 +185,7 @@ func (_ *protoLang) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config
|
|||
// this is set for compatibility with older versions.
|
||||
fs.Var(&modeFlag{&pc.Mode}, "proto", "default: generates a proto_library rule for one package\n\tpackage: generates a proto_library rule for for each package\n\tdisable: does not touch proto rules\n\tdisable_global: does not touch proto rules and does not use special cases for protos in dependency resolution")
|
||||
fs.StringVar(&pc.groupOption, "proto_group", "", "option name used to group .proto files into proto_library rules")
|
||||
fs.StringVar(&pc.importPrefix, "proto_import_prefix", "", "When set, .proto source files in the srcs attribute of the rule are accessible at their path with this prefix appended on.")
|
||||
}
|
||||
|
||||
func (_ *protoLang) CheckFlags(fs *flag.FlagSet, c *config.Config) error {
|
||||
|
|
@ -175,7 +193,7 @@ func (_ *protoLang) CheckFlags(fs *flag.FlagSet, c *config.Config) error {
|
|||
}
|
||||
|
||||
func (_ *protoLang) KnownDirectives() []string {
|
||||
return []string{"proto", "proto_group"}
|
||||
return []string{"proto", "proto_group", "proto_strip_import_prefix", "proto_import_prefix"}
|
||||
}
|
||||
|
||||
func (_ *protoLang) Configure(c *config.Config, rel string, f *rule.File) {
|
||||
|
|
@ -195,6 +213,15 @@ func (_ *protoLang) Configure(c *config.Config, rel string, f *rule.File) {
|
|||
pc.ModeExplicit = true
|
||||
case "proto_group":
|
||||
pc.groupOption = d.Value
|
||||
case "proto_strip_import_prefix":
|
||||
pc.stripImportPrefix = d.Value
|
||||
if rel != "" {
|
||||
if err := checkStripImportPrefix(pc.stripImportPrefix, rel); err != nil {
|
||||
log.Print(err)
|
||||
}
|
||||
}
|
||||
case "proto_import_prefix":
|
||||
pc.importPrefix = d.Value
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -248,3 +275,10 @@ outer:
|
|||
}
|
||||
pc.Mode = mode
|
||||
}
|
||||
|
||||
func checkStripImportPrefix(prefix, rel string) error {
|
||||
if !strings.HasPrefix(prefix, "/") || !strings.HasPrefix(rel, prefix[1:]) {
|
||||
return fmt.Errorf("invalid proto_strip_import_prefix %q at %s", prefix, rel)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
|
@ -16,8 +16,8 @@ limitations under the License.
|
|||
package proto
|
||||
|
||||
import (
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func (_ *protoLang) Fix(c *config.Config, f *rule.File) {
|
||||
|
|
@ -21,45 +21,52 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/language"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func (_ *protoLang) GenerateRules(c *config.Config, dir, rel string, f *rule.File, subdirs, regularFiles, genFiles []string, otherEmpty, otherGen []*rule.Rule) (empty, gen []*rule.Rule) {
|
||||
func (_ *protoLang) GenerateRules(args language.GenerateArgs) language.GenerateResult {
|
||||
c := args.Config
|
||||
pc := GetProtoConfig(c)
|
||||
if !pc.Mode.ShouldGenerateRules() {
|
||||
// Don't create or delete proto rules in this mode. Any existing rules
|
||||
// are likely hand-written.
|
||||
return nil, nil
|
||||
return language.GenerateResult{}
|
||||
}
|
||||
|
||||
var regularProtoFiles []string
|
||||
for _, name := range regularFiles {
|
||||
for _, name := range args.RegularFiles {
|
||||
if strings.HasSuffix(name, ".proto") {
|
||||
regularProtoFiles = append(regularProtoFiles, name)
|
||||
}
|
||||
}
|
||||
var genProtoFiles []string
|
||||
for _, name := range genFiles {
|
||||
for _, name := range args.GenFiles {
|
||||
if strings.HasSuffix(name, ".proto") {
|
||||
genProtoFiles = append(genFiles, name)
|
||||
genProtoFiles = append(genProtoFiles, name)
|
||||
}
|
||||
}
|
||||
pkgs := buildPackages(pc, dir, rel, regularProtoFiles, genProtoFiles)
|
||||
shouldSetVisibility := !hasDefaultVisibility(f)
|
||||
pkgs := buildPackages(pc, args.Dir, args.Rel, regularProtoFiles, genProtoFiles)
|
||||
shouldSetVisibility := args.File == nil || !args.File.HasDefaultVisibility()
|
||||
var res language.GenerateResult
|
||||
for _, pkg := range pkgs {
|
||||
r := generateProto(pc, rel, pkg, shouldSetVisibility)
|
||||
r := generateProto(pc, args.Rel, pkg, shouldSetVisibility)
|
||||
if r.IsEmpty(protoKinds[r.Kind()]) {
|
||||
empty = append(empty, r)
|
||||
res.Empty = append(res.Empty, r)
|
||||
} else {
|
||||
gen = append(gen, r)
|
||||
res.Gen = append(res.Gen, r)
|
||||
}
|
||||
}
|
||||
sort.SliceStable(gen, func(i, j int) bool {
|
||||
return gen[i].Name() < gen[j].Name()
|
||||
sort.SliceStable(res.Gen, func(i, j int) bool {
|
||||
return res.Gen[i].Name() < res.Gen[j].Name()
|
||||
})
|
||||
empty = append(empty, generateEmpty(f, regularProtoFiles, genProtoFiles)...)
|
||||
return empty, gen
|
||||
res.Imports = make([]interface{}, len(res.Gen))
|
||||
for i, r := range res.Gen {
|
||||
res.Imports[i] = r.PrivateAttr(config.GazelleImportsKey)
|
||||
}
|
||||
res.Empty = append(res.Empty, generateEmpty(args.File, regularProtoFiles, genProtoFiles)...)
|
||||
return res
|
||||
}
|
||||
|
||||
// RuleName returns a name for a proto_library derived from the given strings.
|
||||
|
|
@ -203,14 +210,22 @@ func generateProto(pc *ProtoConfig, rel string, pkg *Package, shouldSetVisibilit
|
|||
imports = append(imports, i)
|
||||
}
|
||||
sort.Strings(imports)
|
||||
// NOTE: This attribute should not be used outside this extension. It's still
|
||||
// convenient for testing though.
|
||||
r.SetPrivateAttr(config.GazelleImportsKey, imports)
|
||||
for k, v := range pkg.Options {
|
||||
r.SetPrivateAttr(k, v)
|
||||
}
|
||||
if shouldSetVisibility {
|
||||
vis := checkInternalVisibility(rel, "//visibility:public")
|
||||
vis := rule.CheckInternalVisibility(rel, "//visibility:public")
|
||||
r.SetAttr("visibility", []string{vis})
|
||||
}
|
||||
if pc.stripImportPrefix != "" {
|
||||
r.SetAttr("strip_import_prefix", pc.stripImportPrefix)
|
||||
}
|
||||
if pc.importPrefix != "" {
|
||||
r.SetAttr("import_prefix", pc.importPrefix)
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
|
|
@ -248,29 +263,3 @@ outer:
|
|||
}
|
||||
return empty
|
||||
}
|
||||
|
||||
// hasDefaultVisibility returns whether oldFile contains a "package" rule with
|
||||
// a "default_visibility" attribute. Rules generated by Gazelle should not
|
||||
// have their own visibility attributes if this is the case.
|
||||
func hasDefaultVisibility(f *rule.File) bool {
|
||||
if f == nil {
|
||||
return false
|
||||
}
|
||||
for _, r := range f.Rules {
|
||||
if r.Kind() == "package" && r.Attr("default_visibility") != nil {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// checkInternalVisibility overrides the given visibility if the package is
|
||||
// internal.
|
||||
func checkInternalVisibility(rel, visibility string) string {
|
||||
if i := strings.LastIndex(rel, "/internal/"); i >= 0 {
|
||||
visibility = fmt.Sprintf("//%s:__subpackages__", rel[:i])
|
||||
} else if strings.HasPrefix(rel, "internal/") {
|
||||
visibility = "//:__subpackages__"
|
||||
}
|
||||
return visibility
|
||||
}
|
||||
|
|
@ -15,13 +15,15 @@ limitations under the License.
|
|||
|
||||
package proto
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
import "github.com/bazelbuild/bazel-gazelle/rule"
|
||||
|
||||
var protoKinds = map[string]rule.KindInfo{
|
||||
"proto_library": {
|
||||
NonEmptyAttrs: map[string]bool{"srcs": true},
|
||||
MergeableAttrs: map[string]bool{"srcs": true},
|
||||
ResolveAttrs: map[string]bool{"deps": true},
|
||||
NonEmptyAttrs: map[string]bool{"srcs": true},
|
||||
MergeableAttrs: map[string]bool{
|
||||
"srcs": true,
|
||||
},
|
||||
ResolveAttrs: map[string]bool{"deps": true},
|
||||
},
|
||||
}
|
||||
|
||||
727
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/known_imports.go
generated
vendored
Normal file
727
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/known_imports.go
generated
vendored
Normal file
|
|
@ -0,0 +1,727 @@
|
|||
// Generated by language/proto/gen/gen_known_imports.go
|
||||
// From language/proto/proto.csv
|
||||
|
||||
package proto
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/label"
|
||||
|
||||
var knownImports = map[string]label.Label{
|
||||
|
||||
"google/protobuf/any.proto": label.New("com_google_protobuf", "", "any_proto"),
|
||||
"google/protobuf/api.proto": label.New("com_google_protobuf", "", "api_proto"),
|
||||
"google/protobuf/compiler/plugin.proto": label.New("com_google_protobuf", "", "compiler_plugin_proto"),
|
||||
"google/protobuf/descriptor.proto": label.New("com_google_protobuf", "", "descriptor_proto"),
|
||||
"google/protobuf/duration.proto": label.New("com_google_protobuf", "", "duration_proto"),
|
||||
"google/protobuf/empty.proto": label.New("com_google_protobuf", "", "empty_proto"),
|
||||
"google/protobuf/field_mask.proto": label.New("com_google_protobuf", "", "field_mask_proto"),
|
||||
"google/protobuf/source_context.proto": label.New("com_google_protobuf", "", "source_context_proto"),
|
||||
"google/protobuf/struct.proto": label.New("com_google_protobuf", "", "struct_proto"),
|
||||
"google/protobuf/timestamp.proto": label.New("com_google_protobuf", "", "timestamp_proto"),
|
||||
"google/protobuf/type.proto": label.New("com_google_protobuf", "", "type_proto"),
|
||||
"google/protobuf/wrappers.proto": label.New("com_google_protobuf", "", "wrappers_proto"),
|
||||
"google/ads/googleads/v0/common/ad_type_infos.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/bidding.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/criteria.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/criterion_category_availability.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/custom_parameter.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/dates.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/explorer_auto_optimizer_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/feed_common.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/frequency_cap.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/keyword_plan_common.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/matching_function.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/metrics.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/policy.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/real_time_bidding_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/tag_snippet.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/user_lists.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/common/value.proto": label.New("go_googleapis", "google/ads/googleads/v0/common", "common_proto"),
|
||||
"google/ads/googleads/v0/enums/access_reason.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_proposal_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_proposal_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/account_budget_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_customizer_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_ad_rotation_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_ad_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_criterion_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_group_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_network_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_serving_optimization_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/ad_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/advertising_channel_sub_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/advertising_channel_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/affiliate_location_feed_relationship_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/age_range_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/app_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/attribution_model.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/bid_modifier_source.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/bidding_source.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/bidding_strategy_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/billing_setup_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/budget_delivery_method.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/budget_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/call_conversion_reporting_state.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/call_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/callout_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_group_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_serving_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_shared_set_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/campaign_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/change_status_operation.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/change_status_resource_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/content_label_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_category.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_counting_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/conversion_action_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_category_channel_availability_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_category_locale_availability_mode.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/criterion_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/custom_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/customer_match_upload_key_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/data_driven_model_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/day_of_week.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/device.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/display_ad_format_setting.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/education_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_attribute_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_item_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_link_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_mapping_criterion_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_mapping_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_origin.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/feed_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/flight_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_event_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/frequency_cap_time_unit.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/gender_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/geo_target_constant_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/geo_targeting_restriction.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/google_ads_field_category.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/google_ads_field_data_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/hotel_date_selection_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/hotel_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/income_range_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/interaction_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/job_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_match_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_competition_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_forecast_interval.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/keyword_plan_network.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/listing_custom_attribute_index.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/listing_group_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/local_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/manager_link_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/media_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/message_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/mime_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/minute_of_hour.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/month_of_year.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/page_one_promoted_strategy_goal.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/parental_status_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/placeholder_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_approval_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_review_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_topic_entry_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/policy_topic_evidence_destination_mismatch_url_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/preferred_content_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/price_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/product_channel.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/product_channel_exclusivity.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/product_condition.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/product_type_level.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/promotion_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/proximity_radius_units.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/quality_score_bucket.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/real_estate_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/recommendation_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/search_term_match_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/search_term_targeting_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/shared_set_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/shared_set_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/sitelink_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/slot.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/spending_limit_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/structured_snippet_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/target_cpa_opt_in_recommendation_goal.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/targeting_dimension.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/time_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/tracking_code_page_format.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/tracking_code_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/travel_placeholder_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_interest_taxonomy_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_access_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_closing_reason.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_crm_data_source_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_membership_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_size_range.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/enums/user_list_type.proto": label.New("go_googleapis", "google/ads/googleads/v0/enums", "enums_proto"),
|
||||
"google/ads/googleads/v0/errors/account_budget_proposal_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_customizer_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_ad_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_bid_modifier_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_group_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/ad_sharing_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/adx_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/authentication_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/authorization_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/bidding_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/bidding_strategy_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/billing_setup_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_budget_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/campaign_shared_set_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/change_status_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/collection_size_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/context_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/conversion_action_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_client_link_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/customer_manager_link_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/database_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/date_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/date_range_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/distinct_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/enum_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/errors.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_attribute_reference_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_item_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/feed_mapping_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/field_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/field_mask_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/function_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/function_parsing_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/geo_target_constant_suggestion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/header_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/id_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/image_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/internal_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_ad_group_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_campaign_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_idea_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_keyword_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/keyword_plan_negative_keyword_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/list_operation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/media_bundle_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/media_file_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/multiplier_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/mutate_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/new_resource_creation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/not_empty_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/null_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/operation_access_denied_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/operator_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/policy_finding_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/query_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/quota_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/range_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/recommendation_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/region_code_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/request_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/resource_access_denied_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/resource_count_limit_exceeded_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/setting_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/shared_criterion_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/shared_set_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/string_format_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/string_length_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/url_field_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/errors/user_list_error.proto": label.New("go_googleapis", "google/ads/googleads/v0/errors", "errors_proto"),
|
||||
"google/ads/googleads/v0/resources/account_budget.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/account_budget_proposal.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_ad.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_audience_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_bid_modifier.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/ad_group_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/age_range_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/bidding_strategy.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/billing_setup.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_audience_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_bid_modifier.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_budget.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/campaign_shared_set.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/carrier_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/change_status.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/conversion_action.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/customer.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_client.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_client_link.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/customer_manager_link.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/display_keyword_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/feed.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/feed_item.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/feed_mapping.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/gender_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/geo_target_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/google_ads_field.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/hotel_group_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/hotel_performance_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_ad_group.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_campaign.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_keyword.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_plan_negative_keyword.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/keyword_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/language_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/managed_placement_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/media_file.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/parental_status_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/payments_account.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/product_group_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/recommendation.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/search_term_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/shared_criterion.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/shared_set.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/topic_constant.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/topic_view.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/user_interest.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/user_list.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/resources/video.proto": label.New("go_googleapis", "google/ads/googleads/v0/resources", "resources_proto"),
|
||||
"google/ads/googleads/v0/services/account_budget_proposal_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/account_budget_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_ad_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_audience_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_bid_modifier_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/ad_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/age_range_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/bidding_strategy_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/billing_setup_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_audience_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_bid_modifier_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_budget_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/campaign_shared_set_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/carrier_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/change_status_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/conversion_action_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/customer_client_link_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/customer_client_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/customer_feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/customer_manager_link_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/customer_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/display_keyword_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/feed_item_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/feed_mapping_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/feed_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/gender_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/geo_target_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/google_ads_field_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/google_ads_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/hotel_group_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/hotel_performance_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_ad_group_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_campaign_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_idea_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_keyword_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_negative_keyword_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_plan_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/keyword_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/language_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/managed_placement_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/media_file_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/parental_status_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/payments_account_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/product_group_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/recommendation_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/search_term_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/shared_criterion_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/shared_set_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/topic_constant_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/topic_view_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/user_interest_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/user_list_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/ads/googleads/v0/services/video_service.proto": label.New("go_googleapis", "google/ads/googleads/v0/services", "services_proto"),
|
||||
"google/api/annotations.proto": label.New("go_googleapis", "google/api", "annotations_proto"),
|
||||
"google/api/auth.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/backend.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/billing.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/config_change.proto": label.New("go_googleapis", "google/api", "configchange_proto"),
|
||||
"google/api/consumer.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/context.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/control.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/distribution.proto": label.New("go_googleapis", "google/api", "distribution_proto"),
|
||||
"google/api/documentation.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/endpoint.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/experimental/authorization_config.proto": label.New("go_googleapis", "google/api", "api_proto"),
|
||||
"google/api/experimental/experimental.proto": label.New("go_googleapis", "google/api", "api_proto"),
|
||||
"google/api/expr/v1alpha1/cel_service.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/checked.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/conformance_service.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/eval.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/explain.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/syntax.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1alpha1/value.proto": label.New("go_googleapis", "google/api/expr/v1alpha1", "expr_proto"),
|
||||
"google/api/expr/v1beta1/decl.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_proto"),
|
||||
"google/api/expr/v1beta1/eval.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_proto"),
|
||||
"google/api/expr/v1beta1/expr.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_proto"),
|
||||
"google/api/expr/v1beta1/source.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_proto"),
|
||||
"google/api/expr/v1beta1/value.proto": label.New("go_googleapis", "google/api/expr/v1beta1", "expr_proto"),
|
||||
"google/api/http.proto": label.New("go_googleapis", "google/api", "annotations_proto"),
|
||||
"google/api/httpbody.proto": label.New("go_googleapis", "google/api", "httpbody_proto"),
|
||||
"google/api/label.proto": label.New("go_googleapis", "google/api", "label_proto"),
|
||||
"google/api/launch_stage.proto": label.New("go_googleapis", "google/api", "api_proto"),
|
||||
"google/api/log.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/logging.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/metric.proto": label.New("go_googleapis", "google/api", "metric_proto"),
|
||||
"google/api/monitored_resource.proto": label.New("go_googleapis", "google/api", "monitoredres_proto"),
|
||||
"google/api/monitoring.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/quota.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/service.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/servicecontrol/v1/check_error.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/distribution.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/log_entry.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/metric_value.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/operation.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/quota_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicecontrol/v1/service_controller.proto": label.New("go_googleapis", "google/api/servicecontrol/v1", "servicecontrol_proto"),
|
||||
"google/api/servicemanagement/v1/resources.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_proto"),
|
||||
"google/api/servicemanagement/v1/servicemanager.proto": label.New("go_googleapis", "google/api/servicemanagement/v1", "servicemanagement_proto"),
|
||||
"google/api/source_info.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/system_parameter.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/api/usage.proto": label.New("go_googleapis", "google/api", "serviceconfig_proto"),
|
||||
"google/appengine/legacy/audit_data.proto": label.New("go_googleapis", "google/appengine/legacy", "legacy_proto"),
|
||||
"google/appengine/logging/v1/request_log.proto": label.New("go_googleapis", "google/appengine/logging/v1", "logging_proto"),
|
||||
"google/appengine/v1/app_yaml.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/appengine.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/application.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/audit_data.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/deploy.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/instance.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/location.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/operation.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/service.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/appengine/v1/version.proto": label.New("go_googleapis", "google/appengine/v1", "appengine_proto"),
|
||||
"google/assistant/embedded/v1alpha1/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha1", "embedded_proto"),
|
||||
"google/assistant/embedded/v1alpha2/embedded_assistant.proto": label.New("go_googleapis", "google/assistant/embedded/v1alpha2", "embedded_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/cluster/v1", "cluster_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_data.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/admin/table/v1/bigtable_table_service_messages.proto": label.New("go_googleapis", "google/bigtable/admin/table/v1", "table_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_instance_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/bigtable_table_admin.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/common.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/instance.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/admin/v2/table.proto": label.New("go_googleapis", "google/bigtable/admin/v2", "admin_proto"),
|
||||
"google/bigtable/v1/bigtable_data.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/v1/bigtable_service.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/v1/bigtable_service_messages.proto": label.New("go_googleapis", "google/bigtable/v1", "bigtable_proto"),
|
||||
"google/bigtable/v2/bigtable.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_proto"),
|
||||
"google/bigtable/v2/data.proto": label.New("go_googleapis", "google/bigtable/v2", "bigtable_proto"),
|
||||
"google/bytestream/bytestream.proto": label.New("go_googleapis", "google/bytestream", "bytestream_proto"),
|
||||
"google/cloud/asset/v1beta1/asset_service.proto": label.New("go_googleapis", "google/cloud/asset/v1beta1", "asset_proto"),
|
||||
"google/cloud/asset/v1beta1/assets.proto": label.New("go_googleapis", "google/cloud/asset/v1beta1", "asset_proto"),
|
||||
"google/cloud/audit/audit_log.proto": label.New("go_googleapis", "google/cloud/audit", "audit_proto"),
|
||||
"google/cloud/automl/v1beta1/annotation_payload.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/classification.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/data_items.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/dataset.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/image.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/io.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/model.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/model_evaluation.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/operations.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/prediction_service.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/service.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/text.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/automl/v1beta1/translation.proto": label.New("go_googleapis", "google/cloud/automl/v1beta1", "automl_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/datatransfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_proto"),
|
||||
"google/cloud/bigquery/datatransfer/v1/transfer.proto": label.New("go_googleapis", "google/cloud/bigquery/datatransfer/v1", "datatransfer_proto"),
|
||||
"google/cloud/bigquery/logging/v1/audit_data.proto": label.New("go_googleapis", "google/cloud/bigquery/logging/v1", "logging_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/avro.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/read_options.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/storage.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_proto"),
|
||||
"google/cloud/bigquery/storage/v1beta1/table_reference.proto": label.New("go_googleapis", "google/cloud/bigquery/storage/v1beta1", "storage_proto"),
|
||||
"google/cloud/billing/v1/cloud_billing.proto": label.New("go_googleapis", "google/cloud/billing/v1", "billing_proto"),
|
||||
"google/cloud/dataproc/v1/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/clusters.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/jobs.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/shared.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dataproc/v1beta2/workflow_templates.proto": label.New("go_googleapis", "google/cloud/dataproc/v1beta2", "dataproc_proto"),
|
||||
"google/cloud/dialogflow/v2/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/agent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/audio_config.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/context.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/document.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/intent.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/knowledge_base.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/session_entity_type.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/dialogflow/v2beta1/webhook.proto": label.New("go_googleapis", "google/cloud/dialogflow/v2beta1", "dialogflow_proto"),
|
||||
"google/cloud/functions/v1beta2/functions.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_proto"),
|
||||
"google/cloud/functions/v1beta2/operations.proto": label.New("go_googleapis", "google/cloud/functions/v1beta2", "functions_proto"),
|
||||
"google/cloud/iot/v1/device_manager.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_proto"),
|
||||
"google/cloud/iot/v1/resources.proto": label.New("go_googleapis", "google/cloud/iot/v1", "iot_proto"),
|
||||
"google/cloud/kms/v1/resources.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_proto"),
|
||||
"google/cloud/kms/v1/service.proto": label.New("go_googleapis", "google/cloud/kms/v1", "kms_proto"),
|
||||
"google/cloud/language/v1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1", "language_proto"),
|
||||
"google/cloud/language/v1beta1/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta1", "language_proto"),
|
||||
"google/cloud/language/v1beta2/language_service.proto": label.New("go_googleapis", "google/cloud/language/v1beta2", "language_proto"),
|
||||
"google/cloud/location/locations.proto": label.New("go_googleapis", "google/cloud/location", "location_proto"),
|
||||
"google/cloud/ml/v1/job_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/model_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/operation_metadata.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/prediction_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/ml/v1/project_service.proto": label.New("go_googleapis", "google/cloud/ml/v1", "ml_proto"),
|
||||
"google/cloud/oslogin/common/common.proto": label.New("go_googleapis", "google/cloud/oslogin/common", "common_proto"),
|
||||
"google/cloud/oslogin/v1/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1", "oslogin_proto"),
|
||||
"google/cloud/oslogin/v1alpha/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1alpha", "oslogin_proto"),
|
||||
"google/cloud/oslogin/v1beta/oslogin.proto": label.New("go_googleapis", "google/cloud/oslogin/v1beta", "oslogin_proto"),
|
||||
"google/cloud/redis/v1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1", "redis_proto"),
|
||||
"google/cloud/redis/v1beta1/cloud_redis.proto": label.New("go_googleapis", "google/cloud/redis/v1beta1", "redis_proto"),
|
||||
"google/cloud/resourcemanager/v2/folders.proto": label.New("go_googleapis", "google/cloud/resourcemanager/v2", "resourcemanager_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/resources.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_proto"),
|
||||
"google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto": label.New("go_googleapis", "google/cloud/runtimeconfig/v1beta1", "runtimeconfig_proto"),
|
||||
"google/cloud/scheduler/v1beta1/cloudscheduler.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_proto"),
|
||||
"google/cloud/scheduler/v1beta1/job.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_proto"),
|
||||
"google/cloud/scheduler/v1beta1/target.proto": label.New("go_googleapis", "google/cloud/scheduler/v1beta1", "scheduler_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/asset.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/finding.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/organization_settings.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/security_marks.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/securitycenter_service.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/securitycenter/v1beta1/source.proto": label.New("go_googleapis", "google/cloud/securitycenter/v1beta1", "securitycenter_proto"),
|
||||
"google/cloud/speech/v1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1", "speech_proto"),
|
||||
"google/cloud/speech/v1p1beta1/cloud_speech.proto": label.New("go_googleapis", "google/cloud/speech/v1p1beta1", "speech_proto"),
|
||||
"google/cloud/support/common.proto": label.New("go_googleapis", "google/cloud/support", "common_proto"),
|
||||
"google/cloud/support/v1alpha1/cloud_support.proto": label.New("go_googleapis", "google/cloud/support/v1alpha1", "support_proto"),
|
||||
"google/cloud/tasks/v2beta2/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta2/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta2", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta3/cloudtasks.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta3/queue.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta3/target.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_proto"),
|
||||
"google/cloud/tasks/v2beta3/task.proto": label.New("go_googleapis", "google/cloud/tasks/v2beta3", "tasks_proto"),
|
||||
"google/cloud/texttospeech/v1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1", "texttospeech_proto"),
|
||||
"google/cloud/texttospeech/v1beta1/cloud_tts.proto": label.New("go_googleapis", "google/cloud/texttospeech/v1beta1", "texttospeech_proto"),
|
||||
"google/cloud/videointelligence/v1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta1", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1beta2/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1beta2", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1p1beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p1beta1", "videointelligence_proto"),
|
||||
"google/cloud/videointelligence/v1p2beta1/video_intelligence.proto": label.New("go_googleapis", "google/cloud/videointelligence/v1p2beta1", "videointelligence_proto"),
|
||||
"google/cloud/vision/v1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/product_search.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/product_search_service.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p1beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p1beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p2beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p2beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/geometry.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/image_annotator.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/product_search.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/product_search_service.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/text_annotation.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/vision/v1p3beta1/web_detection.proto": label.New("go_googleapis", "google/cloud/vision/v1p3beta1", "vision_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/crawled_url.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_addon.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_config.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/scan_run.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto": label.New("go_googleapis", "google/cloud/websecurityscanner/v1alpha", "websecurityscanner_proto"),
|
||||
"google/container/v1/cluster_service.proto": label.New("go_googleapis", "google/container/v1", "container_proto"),
|
||||
"google/container/v1alpha1/cluster_service.proto": label.New("go_googleapis", "google/container/v1alpha1", "container_proto"),
|
||||
"google/container/v1beta1/cluster_service.proto": label.New("go_googleapis", "google/container/v1beta1", "container_proto"),
|
||||
"google/datastore/admin/v1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_proto"),
|
||||
"google/datastore/admin/v1/index.proto": label.New("go_googleapis", "google/datastore/admin/v1", "admin_proto"),
|
||||
"google/datastore/admin/v1beta1/datastore_admin.proto": label.New("go_googleapis", "google/datastore/admin/v1beta1", "admin_proto"),
|
||||
"google/datastore/v1/datastore.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/v1/entity.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/v1/query.proto": label.New("go_googleapis", "google/datastore/v1", "datastore_proto"),
|
||||
"google/datastore/v1beta3/datastore.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/datastore/v1beta3/entity.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/datastore/v1beta3/query.proto": label.New("go_googleapis", "google/datastore/v1beta3", "datastore_proto"),
|
||||
"google/devtools/build/v1/build_events.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/build/v1/build_status.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/build/v1/publish_build_event.proto": label.New("go_googleapis", "google/devtools/build/v1", "build_proto"),
|
||||
"google/devtools/cloudbuild/v1/cloudbuild.proto": label.New("go_googleapis", "google/devtools/cloudbuild/v1", "cloudbuild_proto"),
|
||||
"google/devtools/clouddebugger/v2/controller.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/devtools/clouddebugger/v2/data.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/devtools/clouddebugger/v2/debugger.proto": label.New("go_googleapis", "google/devtools/clouddebugger/v2", "clouddebugger_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/common.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_group_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto": label.New("go_googleapis", "google/devtools/clouderrorreporting/v1beta1", "clouderrorreporting_proto"),
|
||||
"google/devtools/cloudprofiler/v2/profiler.proto": label.New("go_googleapis", "google/devtools/cloudprofiler/v2", "cloudprofiler_proto"),
|
||||
"google/devtools/cloudtrace/v1/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v1", "cloudtrace_proto"),
|
||||
"google/devtools/cloudtrace/v2/trace.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_proto"),
|
||||
"google/devtools/cloudtrace/v2/tracing.proto": label.New("go_googleapis", "google/devtools/cloudtrace/v2", "cloudtrace_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/image_basis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1alpha1/source_context.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1alpha1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/attestation/attestation.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/attestation", "attestation_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/build/build.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/build", "build_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/common/common.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/common", "common_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/containeranalysis.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1", "containeranalysis_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/deployment/deployment.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/deployment", "deployment_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/discovery/discovery.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/discovery", "discovery_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/grafeas/grafeas.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/grafeas", "grafeas_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/image/image.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/image", "image_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/package/package.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/package", "package_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/provenance/provenance.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/provenance", "provenance_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/source/source.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/source", "source_proto"),
|
||||
"google/devtools/containeranalysis/v1beta1/vulnerability/vulnerability.proto": label.New("go_googleapis", "google/devtools/containeranalysis/v1beta1/vulnerability", "vulnerability_proto"),
|
||||
"google/devtools/remoteexecution/v1test/remote_execution.proto": label.New("go_googleapis", "google/devtools/remoteexecution/v1test", "remoteexecution_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/bots.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/command.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/tasks.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/remoteworkers/v1test2/worker.proto": label.New("go_googleapis", "google/devtools/remoteworkers/v1test2", "remoteworkers_proto"),
|
||||
"google/devtools/resultstore/v2/action.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/common.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/configuration.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/configured_target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/coverage.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/coverage_summary.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/file.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/file_set.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/invocation.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_file_download.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/resultstore_upload.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/target.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/resultstore/v2/test_suite.proto": label.New("go_googleapis", "google/devtools/resultstore/v2", "resultstore_proto"),
|
||||
"google/devtools/source/v1/source_context.proto": label.New("go_googleapis", "google/devtools/source/v1", "source_proto"),
|
||||
"google/devtools/sourcerepo/v1/sourcerepo.proto": label.New("go_googleapis", "google/devtools/sourcerepo/v1", "sourcerepo_proto"),
|
||||
"google/example/library/v1/library.proto": label.New("go_googleapis", "google/example/library/v1", "library_proto"),
|
||||
"google/firestore/admin/v1/field.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_proto"),
|
||||
"google/firestore/admin/v1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_proto"),
|
||||
"google/firestore/admin/v1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_proto"),
|
||||
"google/firestore/admin/v1/location.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_proto"),
|
||||
"google/firestore/admin/v1/operation.proto": label.New("go_googleapis", "google/firestore/admin/v1", "admin_proto"),
|
||||
"google/firestore/admin/v1beta1/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_proto"),
|
||||
"google/firestore/admin/v1beta1/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_proto"),
|
||||
"google/firestore/admin/v1beta1/location.proto": label.New("go_googleapis", "google/firestore/admin/v1beta1", "admin_proto"),
|
||||
"google/firestore/admin/v1beta2/field.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_proto"),
|
||||
"google/firestore/admin/v1beta2/firestore_admin.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_proto"),
|
||||
"google/firestore/admin/v1beta2/index.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_proto"),
|
||||
"google/firestore/admin/v1beta2/operation.proto": label.New("go_googleapis", "google/firestore/admin/v1beta2", "admin_proto"),
|
||||
"google/firestore/v1/common.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_proto"),
|
||||
"google/firestore/v1/document.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_proto"),
|
||||
"google/firestore/v1/firestore.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_proto"),
|
||||
"google/firestore/v1/query.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_proto"),
|
||||
"google/firestore/v1/write.proto": label.New("go_googleapis", "google/firestore/v1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/common.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/document.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/firestore.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/query.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/firestore/v1beta1/write.proto": label.New("go_googleapis", "google/firestore/v1beta1", "firestore_proto"),
|
||||
"google/genomics/v1/annotations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/cigar.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/datasets.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/operations.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/position.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/range.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readalignment.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readgroup.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/readgroupset.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/reads.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/references.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1/variants.proto": label.New("go_googleapis", "google/genomics/v1", "genomics_proto"),
|
||||
"google/genomics/v1alpha2/pipelines.proto": label.New("go_googleapis", "google/genomics/v1alpha2", "genomics_proto"),
|
||||
"google/home/graph/v1/device.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_proto"),
|
||||
"google/home/graph/v1/homegraph.proto": label.New("go_googleapis", "google/home/graph/v1", "graph_proto"),
|
||||
"google/iam/admin/v1/iam.proto": label.New("go_googleapis", "google/iam/admin/v1", "admin_proto"),
|
||||
"google/iam/credentials/v1/common.proto": label.New("go_googleapis", "google/iam/credentials/v1", "credentials_proto"),
|
||||
"google/iam/credentials/v1/iamcredentials.proto": label.New("go_googleapis", "google/iam/credentials/v1", "credentials_proto"),
|
||||
"google/iam/v1/iam_policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_proto"),
|
||||
"google/iam/v1/logging/audit_data.proto": label.New("go_googleapis", "google/iam/v1/logging", "logging_proto"),
|
||||
"google/iam/v1/policy.proto": label.New("go_googleapis", "google/iam/v1", "iam_proto"),
|
||||
"google/logging/type/http_request.proto": label.New("go_googleapis", "google/logging/type", "ltype_proto"),
|
||||
"google/logging/type/log_severity.proto": label.New("go_googleapis", "google/logging/type", "ltype_proto"),
|
||||
"google/logging/v2/log_entry.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/logging.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/logging_config.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/logging/v2/logging_metrics.proto": label.New("go_googleapis", "google/logging/v2", "logging_proto"),
|
||||
"google/longrunning/operations.proto": label.New("go_googleapis", "google/longrunning", "longrunning_proto"),
|
||||
"google/monitoring/v3/alert.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/alert_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/common.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/dropped_labels.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/group.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/group_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/metric.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/metric_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/mutation_record.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/notification.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/notification_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/span_context.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/uptime.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/monitoring/v3/uptime_service.proto": label.New("go_googleapis", "google/monitoring/v3", "monitoring_proto"),
|
||||
"google/privacy/dlp/v2/dlp.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_proto"),
|
||||
"google/privacy/dlp/v2/storage.proto": label.New("go_googleapis", "google/privacy/dlp/v2", "dlp_proto"),
|
||||
"google/pubsub/v1/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1", "pubsub_proto"),
|
||||
"google/pubsub/v1beta2/pubsub.proto": label.New("go_googleapis", "google/pubsub/v1beta2", "pubsub_proto"),
|
||||
"google/rpc/code.proto": label.New("go_googleapis", "google/rpc", "code_proto"),
|
||||
"google/rpc/error_details.proto": label.New("go_googleapis", "google/rpc", "errdetails_proto"),
|
||||
"google/rpc/status.proto": label.New("go_googleapis", "google/rpc", "status_proto"),
|
||||
"google/spanner/admin/database/v1/spanner_database_admin.proto": label.New("go_googleapis", "google/spanner/admin/database/v1", "database_proto"),
|
||||
"google/spanner/admin/instance/v1/spanner_instance_admin.proto": label.New("go_googleapis", "google/spanner/admin/instance/v1", "instance_proto"),
|
||||
"google/spanner/v1/keys.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/mutation.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/query_plan.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/result_set.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/spanner.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/transaction.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/spanner/v1/type.proto": label.New("go_googleapis", "google/spanner/v1", "spanner_proto"),
|
||||
"google/storagetransfer/v1/transfer.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_proto"),
|
||||
"google/storagetransfer/v1/transfer_types.proto": label.New("go_googleapis", "google/storagetransfer/v1", "storagetransfer_proto"),
|
||||
"google/streetview/publish/v1/resources.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/streetview/publish/v1/rpcmessages.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/streetview/publish/v1/streetview_publish.proto": label.New("go_googleapis", "google/streetview/publish/v1", "publish_proto"),
|
||||
"google/type/color.proto": label.New("go_googleapis", "google/type", "color_proto"),
|
||||
"google/type/date.proto": label.New("go_googleapis", "google/type", "date_proto"),
|
||||
"google/type/dayofweek.proto": label.New("go_googleapis", "google/type", "dayofweek_proto"),
|
||||
"google/type/latlng.proto": label.New("go_googleapis", "google/type", "latlng_proto"),
|
||||
"google/type/money.proto": label.New("go_googleapis", "google/type", "money_proto"),
|
||||
"google/type/postal_address.proto": label.New("go_googleapis", "google/type", "postaladdress_proto"),
|
||||
"google/type/timeofday.proto": label.New("go_googleapis", "google/type", "timeofday_proto"),
|
||||
"google/watcher/v1/watch.proto": label.New("go_googleapis", "google/watcher/v1", "watcher_proto"),
|
||||
}
|
||||
|
|
@ -59,7 +59,7 @@ limitations under the License.
|
|||
// @com_google_protobuf.
|
||||
package proto
|
||||
|
||||
import "github.com/bazelbuild/bazel-gazelle/internal/language"
|
||||
import "github.com/bazelbuild/bazel-gazelle/language"
|
||||
|
||||
const protoName = "proto"
|
||||
|
||||
|
|
@ -67,6 +67,6 @@ type protoLang struct{}
|
|||
|
||||
func (_ *protoLang) Name() string { return protoName }
|
||||
|
||||
func New() language.Language {
|
||||
func NewLanguage() language.Language {
|
||||
return &protoLang{}
|
||||
}
|
||||
724
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/proto.csv
generated
vendored
Normal file
724
vendor/github.com/bazelbuild/bazel-gazelle/language/proto/proto.csv
generated
vendored
Normal file
|
|
@ -0,0 +1,724 @@
|
|||
# This file lists special protos that Gazelle knows how to import. This is used to generate
|
||||
# code for proto and Go resolvers.
|
||||
#
|
||||
# Generated by internal/language/proto/gen/update_proto_csv.go
|
||||
# Do not edit directly.
|
||||
#
|
||||
# proto name,proto label,go import path,go proto label
|
||||
google/protobuf/any.proto,@com_google_protobuf//:any_proto,github.com/golang/protobuf/ptypes/any,@io_bazel_rules_go//proto/wkt:any_go_proto
|
||||
google/protobuf/api.proto,@com_google_protobuf//:api_proto,google.golang.org/genproto/protobuf/api,@io_bazel_rules_go//proto/wkt:api_go_proto
|
||||
google/protobuf/compiler/plugin.proto,@com_google_protobuf//:compiler_plugin_proto,github.com/golang/protobuf/protoc-gen-go/plugin,@io_bazel_rules_go//proto/wkt:compiler_plugin_go_proto
|
||||
google/protobuf/descriptor.proto,@com_google_protobuf//:descriptor_proto,github.com/golang/protobuf/protoc-gen-go/descriptor,@io_bazel_rules_go//proto/wkt:descriptor_go_proto
|
||||
google/protobuf/duration.proto,@com_google_protobuf//:duration_proto,github.com/golang/protobuf/ptypes/duration,@io_bazel_rules_go//proto/wkt:duration_go_proto
|
||||
google/protobuf/empty.proto,@com_google_protobuf//:empty_proto,github.com/golang/protobuf/ptypes/empty,@io_bazel_rules_go//proto/wkt:empty_go_proto
|
||||
google/protobuf/field_mask.proto,@com_google_protobuf//:field_mask_proto,google.golang.org/genproto/protobuf/field_mask,@io_bazel_rules_go//proto/wkt:field_mask_go_proto
|
||||
google/protobuf/source_context.proto,@com_google_protobuf//:source_context_proto,google.golang.org/genproto/protobuf/source_context,@io_bazel_rules_go//proto/wkt:source_context_go_proto
|
||||
google/protobuf/struct.proto,@com_google_protobuf//:struct_proto,github.com/golang/protobuf/ptypes/struct,@io_bazel_rules_go//proto/wkt:struct_go_proto
|
||||
google/protobuf/timestamp.proto,@com_google_protobuf//:timestamp_proto,github.com/golang/protobuf/ptypes/timestamp,@io_bazel_rules_go//proto/wkt:timestamp_go_proto
|
||||
google/protobuf/type.proto,@com_google_protobuf//:type_proto,google.golang.org/genproto/protobuf/ptype,@io_bazel_rules_go//proto/wkt:type_go_proto
|
||||
google/protobuf/wrappers.proto,@com_google_protobuf//:wrappers_proto,github.com/golang/protobuf/ptypes/wrappers,@io_bazel_rules_go//proto/wkt:wrappers_go_proto
|
||||
google/ads/googleads/v0/common/ad_type_infos.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/bidding.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/criteria.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/criterion_category_availability.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/custom_parameter.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/dates.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/explorer_auto_optimizer_setting.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/feed_common.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/frequency_cap.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/keyword_plan_common.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/matching_function.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/metrics.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/policy.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/real_time_bidding_setting.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/tag_snippet.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/user_lists.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/common/value.proto,@go_googleapis//google/ads/googleads/v0/common:common_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/common,@go_googleapis//google/ads/googleads/v0/common:common_go_proto
|
||||
google/ads/googleads/v0/enums/access_reason.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/account_budget_proposal_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/account_budget_proposal_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/account_budget_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_customizer_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_group_ad_rotation_mode.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_group_ad_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_group_criterion_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_group_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_group_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_network_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_serving_optimization_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/ad_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/advertising_channel_sub_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/advertising_channel_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/affiliate_location_feed_relationship_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/age_range_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/app_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/attribution_model.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/bid_modifier_source.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/bidding_source.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/bidding_strategy_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/billing_setup_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/budget_delivery_method.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/budget_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/call_conversion_reporting_state.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/call_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/callout_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/campaign_group_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/campaign_serving_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/campaign_shared_set_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/campaign_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/change_status_operation.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/change_status_resource_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/content_label_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/conversion_action_category.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/conversion_action_counting_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/conversion_action_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/conversion_action_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/criterion_category_channel_availability_mode.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/criterion_category_locale_availability_mode.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/criterion_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/custom_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/customer_match_upload_key_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/data_driven_model_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/day_of_week.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/device.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/display_ad_format_setting.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/education_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_attribute_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_item_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_link_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_mapping_criterion_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_mapping_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_origin.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/feed_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/flight_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/frequency_cap_event_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/frequency_cap_level.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/frequency_cap_time_unit.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/gender_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/geo_target_constant_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/geo_targeting_restriction.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/google_ads_field_category.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/google_ads_field_data_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/hotel_date_selection_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/hotel_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/income_range_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/interaction_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/job_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/keyword_match_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/keyword_plan_competition_level.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/keyword_plan_forecast_interval.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/keyword_plan_network.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/listing_custom_attribute_index.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/listing_group_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/local_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/manager_link_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/media_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/message_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/mime_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/minute_of_hour.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/month_of_year.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/page_one_promoted_strategy_goal.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/parental_status_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/placeholder_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/policy_approval_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/policy_review_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/policy_topic_entry_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/policy_topic_evidence_destination_mismatch_url_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/preferred_content_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/price_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/product_channel.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/product_channel_exclusivity.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/product_condition.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/product_type_level.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/promotion_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/proximity_radius_units.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/quality_score_bucket.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/real_estate_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/recommendation_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/search_term_match_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/search_term_targeting_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/shared_set_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/shared_set_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/sitelink_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/slot.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/spending_limit_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/structured_snippet_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/target_cpa_opt_in_recommendation_goal.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/targeting_dimension.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/time_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/tracking_code_page_format.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/tracking_code_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/travel_placeholder_field.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_interest_taxonomy_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_access_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_closing_reason.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_crm_data_source_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_membership_status.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_size_range.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/enums/user_list_type.proto,@go_googleapis//google/ads/googleads/v0/enums:enums_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/enums,@go_googleapis//google/ads/googleads/v0/enums:enums_go_proto
|
||||
google/ads/googleads/v0/errors/account_budget_proposal_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_customizer_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_group_ad_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_group_bid_modifier_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_group_criterion_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_group_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_group_feed_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/ad_sharing_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/adx_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/authentication_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/authorization_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/bidding_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/bidding_strategy_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/billing_setup_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_budget_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_criterion_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_feed_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_group_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/campaign_shared_set_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/change_status_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/collection_size_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/context_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/conversion_action_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/criterion_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/customer_client_link_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/customer_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/customer_feed_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/customer_manager_link_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/database_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/date_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/date_range_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/distinct_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/enum_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/errors.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/feed_attribute_reference_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/feed_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/feed_item_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/feed_mapping_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/field_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/field_mask_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/function_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/function_parsing_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/geo_target_constant_suggestion_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/header_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/id_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/image_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/internal_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_ad_group_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_campaign_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_idea_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_keyword_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/keyword_plan_negative_keyword_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/list_operation_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/media_bundle_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/media_file_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/multiplier_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/mutate_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/new_resource_creation_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/not_empty_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/null_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/operation_access_denied_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/operator_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/policy_finding_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/query_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/quota_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/range_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/recommendation_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/region_code_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/request_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/resource_access_denied_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/resource_count_limit_exceeded_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/setting_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/shared_criterion_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/shared_set_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/string_format_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/string_length_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/url_field_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/errors/user_list_error.proto,@go_googleapis//google/ads/googleads/v0/errors:errors_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/errors,@go_googleapis//google/ads/googleads/v0/errors:errors_go_proto
|
||||
google/ads/googleads/v0/resources/account_budget.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/account_budget_proposal.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group_ad.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group_audience_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group_bid_modifier.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group_criterion.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/ad_group_feed.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/age_range_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/bidding_strategy.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/billing_setup.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_audience_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_bid_modifier.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_budget.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_criterion.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_feed.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_group.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/campaign_shared_set.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/carrier_constant.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/change_status.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/conversion_action.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/customer.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/customer_client.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/customer_client_link.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/customer_feed.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/customer_manager_link.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/display_keyword_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/feed.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/feed_item.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/feed_mapping.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/gender_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/geo_target_constant.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/google_ads_field.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/hotel_group_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/hotel_performance_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_plan.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_plan_ad_group.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_plan_campaign.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_plan_keyword.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_plan_negative_keyword.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/keyword_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/language_constant.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/managed_placement_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/media_file.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/parental_status_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/payments_account.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/product_group_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/recommendation.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/search_term_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/shared_criterion.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/shared_set.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/topic_constant.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/topic_view.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/user_interest.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/user_list.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/resources/video.proto,@go_googleapis//google/ads/googleads/v0/resources:resources_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/resources,@go_googleapis//google/ads/googleads/v0/resources:resources_go_proto
|
||||
google/ads/googleads/v0/services/account_budget_proposal_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/account_budget_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_ad_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_audience_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_bid_modifier_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_criterion_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_feed_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/ad_group_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/age_range_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/bidding_strategy_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/billing_setup_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_audience_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_bid_modifier_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_budget_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_criterion_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_feed_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_group_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/campaign_shared_set_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/carrier_constant_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/change_status_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/conversion_action_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/customer_client_link_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/customer_client_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/customer_feed_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/customer_manager_link_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/customer_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/display_keyword_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/feed_item_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/feed_mapping_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/feed_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/gender_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/geo_target_constant_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/google_ads_field_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/google_ads_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/hotel_group_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/hotel_performance_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_ad_group_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_campaign_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_idea_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_keyword_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_negative_keyword_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_plan_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/keyword_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/language_constant_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/managed_placement_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/media_file_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/parental_status_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/payments_account_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/product_group_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/recommendation_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/search_term_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/shared_criterion_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/shared_set_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/topic_constant_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/topic_view_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/user_interest_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/user_list_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/ads/googleads/v0/services/video_service.proto,@go_googleapis//google/ads/googleads/v0/services:services_proto,google.golang.org/genproto/googleapis/ads/googleads/v0/services,@go_googleapis//google/ads/googleads/v0/services:services_go_proto
|
||||
google/api/annotations.proto,@go_googleapis//google/api:annotations_proto,google.golang.org/genproto/googleapis/api/annotations,@go_googleapis//google/api:annotations_go_proto
|
||||
google/api/auth.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/backend.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/billing.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/config_change.proto,@go_googleapis//google/api:configchange_proto,google.golang.org/genproto/googleapis/api/configchange,@go_googleapis//google/api:configchange_go_proto
|
||||
google/api/consumer.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/context.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/control.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/distribution.proto,@go_googleapis//google/api:distribution_proto,google.golang.org/genproto/googleapis/api/distribution,@go_googleapis//google/api:distribution_go_proto
|
||||
google/api/documentation.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/endpoint.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/experimental/authorization_config.proto,@go_googleapis//google/api:api_proto,google.golang.org/genproto/googleapis/api,@go_googleapis//google/api:api_go_proto
|
||||
google/api/experimental/experimental.proto,@go_googleapis//google/api:api_proto,google.golang.org/genproto/googleapis/api,@go_googleapis//google/api:api_go_proto
|
||||
google/api/expr/v1alpha1/cel_service.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/checked.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/conformance_service.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/eval.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/explain.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/syntax.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1alpha1/value.proto,@go_googleapis//google/api/expr/v1alpha1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1alpha1,@go_googleapis//google/api/expr/v1alpha1:expr_go_proto
|
||||
google/api/expr/v1beta1/decl.proto,@go_googleapis//google/api/expr/v1beta1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1beta1,@go_googleapis//google/api/expr/v1beta1:expr_go_proto
|
||||
google/api/expr/v1beta1/eval.proto,@go_googleapis//google/api/expr/v1beta1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1beta1,@go_googleapis//google/api/expr/v1beta1:expr_go_proto
|
||||
google/api/expr/v1beta1/expr.proto,@go_googleapis//google/api/expr/v1beta1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1beta1,@go_googleapis//google/api/expr/v1beta1:expr_go_proto
|
||||
google/api/expr/v1beta1/source.proto,@go_googleapis//google/api/expr/v1beta1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1beta1,@go_googleapis//google/api/expr/v1beta1:expr_go_proto
|
||||
google/api/expr/v1beta1/value.proto,@go_googleapis//google/api/expr/v1beta1:expr_proto,google.golang.org/genproto/googleapis/api/expr/v1beta1,@go_googleapis//google/api/expr/v1beta1:expr_go_proto
|
||||
google/api/http.proto,@go_googleapis//google/api:annotations_proto,google.golang.org/genproto/googleapis/api/annotations,@go_googleapis//google/api:annotations_go_proto
|
||||
google/api/httpbody.proto,@go_googleapis//google/api:httpbody_proto,google.golang.org/genproto/googleapis/api/httpbody,@go_googleapis//google/api:httpbody_go_proto
|
||||
google/api/label.proto,@go_googleapis//google/api:label_proto,google.golang.org/genproto/googleapis/api/label,@go_googleapis//google/api:label_go_proto
|
||||
google/api/launch_stage.proto,@go_googleapis//google/api:api_proto,google.golang.org/genproto/googleapis/api,@go_googleapis//google/api:api_go_proto
|
||||
google/api/log.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/logging.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/metric.proto,@go_googleapis//google/api:metric_proto,google.golang.org/genproto/googleapis/api/metric,@go_googleapis//google/api:metric_go_proto
|
||||
google/api/monitored_resource.proto,@go_googleapis//google/api:monitoredres_proto,google.golang.org/genproto/googleapis/api/monitoredres,@go_googleapis//google/api:monitoredres_go_proto
|
||||
google/api/monitoring.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/quota.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/service.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/servicecontrol/v1/check_error.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/distribution.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/log_entry.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/metric_value.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/operation.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/quota_controller.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicecontrol/v1/service_controller.proto,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_proto,google.golang.org/genproto/googleapis/api/servicecontrol/v1,@go_googleapis//google/api/servicecontrol/v1:servicecontrol_go_proto
|
||||
google/api/servicemanagement/v1/resources.proto,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_proto,google.golang.org/genproto/googleapis/api/servicemanagement/v1,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_go_proto
|
||||
google/api/servicemanagement/v1/servicemanager.proto,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_proto,google.golang.org/genproto/googleapis/api/servicemanagement/v1,@go_googleapis//google/api/servicemanagement/v1:servicemanagement_go_proto
|
||||
google/api/source_info.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/system_parameter.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/api/usage.proto,@go_googleapis//google/api:serviceconfig_proto,google.golang.org/genproto/googleapis/api/serviceconfig,@go_googleapis//google/api:serviceconfig_go_proto
|
||||
google/appengine/legacy/audit_data.proto,@go_googleapis//google/appengine/legacy:legacy_proto,google.golang.org/genproto/googleapis/appengine/legacy,@go_googleapis//google/appengine/legacy:legacy_go_proto
|
||||
google/appengine/logging/v1/request_log.proto,@go_googleapis//google/appengine/logging/v1:logging_proto,google.golang.org/genproto/googleapis/appengine/logging/v1,@go_googleapis//google/appengine/logging/v1:logging_go_proto
|
||||
google/appengine/v1/app_yaml.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/appengine.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/application.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/audit_data.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/deploy.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/instance.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/location.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/operation.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/service.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/appengine/v1/version.proto,@go_googleapis//google/appengine/v1:appengine_proto,google.golang.org/genproto/googleapis/appengine/v1,@go_googleapis//google/appengine/v1:appengine_go_proto
|
||||
google/assistant/embedded/v1alpha1/embedded_assistant.proto,@go_googleapis//google/assistant/embedded/v1alpha1:embedded_proto,google.golang.org/genproto/googleapis/assistant/embedded/v1alpha1,@go_googleapis//google/assistant/embedded/v1alpha1:embedded_go_proto
|
||||
google/assistant/embedded/v1alpha2/embedded_assistant.proto,@go_googleapis//google/assistant/embedded/v1alpha2:embedded_proto,google.golang.org/genproto/googleapis/assistant/embedded/v1alpha2,@go_googleapis//google/assistant/embedded/v1alpha2:embedded_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_data.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_service.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/cluster/v1/bigtable_cluster_service_messages.proto,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_proto,google.golang.org/genproto/googleapis/bigtable/admin/cluster/v1,@go_googleapis//google/bigtable/admin/cluster/v1:cluster_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_data.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_service.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/admin/table/v1/bigtable_table_service_messages.proto,@go_googleapis//google/bigtable/admin/table/v1:table_proto,google.golang.org/genproto/googleapis/bigtable/admin/table/v1,@go_googleapis//google/bigtable/admin/table/v1:table_go_proto
|
||||
google/bigtable/admin/v2/bigtable_instance_admin.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/bigtable_table_admin.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/common.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/instance.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/admin/v2/table.proto,@go_googleapis//google/bigtable/admin/v2:admin_proto,google.golang.org/genproto/googleapis/bigtable/admin/v2,@go_googleapis//google/bigtable/admin/v2:admin_go_proto
|
||||
google/bigtable/v1/bigtable_data.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/v1/bigtable_service.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/v1/bigtable_service_messages.proto,@go_googleapis//google/bigtable/v1:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v1,@go_googleapis//google/bigtable/v1:bigtable_go_proto
|
||||
google/bigtable/v2/bigtable.proto,@go_googleapis//google/bigtable/v2:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v2,@go_googleapis//google/bigtable/v2:bigtable_go_proto
|
||||
google/bigtable/v2/data.proto,@go_googleapis//google/bigtable/v2:bigtable_proto,google.golang.org/genproto/googleapis/bigtable/v2,@go_googleapis//google/bigtable/v2:bigtable_go_proto
|
||||
google/bytestream/bytestream.proto,@go_googleapis//google/bytestream:bytestream_proto,google.golang.org/genproto/googleapis/bytestream,@go_googleapis//google/bytestream:bytestream_go_proto
|
||||
google/cloud/asset/v1beta1/asset_service.proto,@go_googleapis//google/cloud/asset/v1beta1:asset_proto,google.golang.org/genproto/googleapis/cloud/asset/v1beta1,@go_googleapis//google/cloud/asset/v1beta1:asset_go_proto
|
||||
google/cloud/asset/v1beta1/assets.proto,@go_googleapis//google/cloud/asset/v1beta1:asset_proto,google.golang.org/genproto/googleapis/cloud/asset/v1beta1,@go_googleapis//google/cloud/asset/v1beta1:asset_go_proto
|
||||
google/cloud/audit/audit_log.proto,@go_googleapis//google/cloud/audit:audit_proto,google.golang.org/genproto/googleapis/cloud/audit,@go_googleapis//google/cloud/audit:audit_go_proto
|
||||
google/cloud/automl/v1beta1/annotation_payload.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/classification.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/data_items.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/dataset.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/image.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/io.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/model.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/model_evaluation.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/operations.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/prediction_service.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/service.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/text.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/automl/v1beta1/translation.proto,@go_googleapis//google/cloud/automl/v1beta1:automl_proto,google.golang.org/genproto/googleapis/cloud/automl/v1beta1,@go_googleapis//google/cloud/automl/v1beta1:automl_go_proto
|
||||
google/cloud/bigquery/datatransfer/v1/datatransfer.proto,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_proto,google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_go_proto
|
||||
google/cloud/bigquery/datatransfer/v1/transfer.proto,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_proto,google.golang.org/genproto/googleapis/cloud/bigquery/datatransfer/v1,@go_googleapis//google/cloud/bigquery/datatransfer/v1:datatransfer_go_proto
|
||||
google/cloud/bigquery/logging/v1/audit_data.proto,@go_googleapis//google/cloud/bigquery/logging/v1:logging_proto,google.golang.org/genproto/googleapis/cloud/bigquery/logging/v1,@go_googleapis//google/cloud/bigquery/logging/v1:logging_go_proto
|
||||
google/cloud/bigquery/storage/v1beta1/avro.proto,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_proto,google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_go_proto
|
||||
google/cloud/bigquery/storage/v1beta1/read_options.proto,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_proto,google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_go_proto
|
||||
google/cloud/bigquery/storage/v1beta1/storage.proto,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_proto,google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_go_proto
|
||||
google/cloud/bigquery/storage/v1beta1/table_reference.proto,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_proto,google.golang.org/genproto/googleapis/cloud/bigquery/storage/v1beta1,@go_googleapis//google/cloud/bigquery/storage/v1beta1:storage_go_proto
|
||||
google/cloud/billing/v1/cloud_billing.proto,@go_googleapis//google/cloud/billing/v1:billing_proto,google.golang.org/genproto/googleapis/cloud/billing/v1,@go_googleapis//google/cloud/billing/v1:billing_go_proto
|
||||
google/cloud/dataproc/v1/clusters.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1/jobs.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1/operations.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1/workflow_templates.proto,@go_googleapis//google/cloud/dataproc/v1:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1,@go_googleapis//google/cloud/dataproc/v1:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/clusters.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/jobs.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/operations.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/shared.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dataproc/v1beta2/workflow_templates.proto,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_proto,google.golang.org/genproto/googleapis/cloud/dataproc/v1beta2,@go_googleapis//google/cloud/dataproc/v1beta2:dataproc_go_proto
|
||||
google/cloud/dialogflow/v2/agent.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/context.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/intent.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/session.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/session_entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2/webhook.proto,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2,@go_googleapis//google/cloud/dialogflow/v2:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/agent.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/audio_config.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/context.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/document.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/intent.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/knowledge_base.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/session.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/session_entity_type.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/dialogflow/v2beta1/webhook.proto,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_proto,google.golang.org/genproto/googleapis/cloud/dialogflow/v2beta1,@go_googleapis//google/cloud/dialogflow/v2beta1:dialogflow_go_proto
|
||||
google/cloud/functions/v1beta2/functions.proto,@go_googleapis//google/cloud/functions/v1beta2:functions_proto,google.golang.org/genproto/googleapis/cloud/functions/v1beta2,@go_googleapis//google/cloud/functions/v1beta2:functions_go_proto
|
||||
google/cloud/functions/v1beta2/operations.proto,@go_googleapis//google/cloud/functions/v1beta2:functions_proto,google.golang.org/genproto/googleapis/cloud/functions/v1beta2,@go_googleapis//google/cloud/functions/v1beta2:functions_go_proto
|
||||
google/cloud/iot/v1/device_manager.proto,@go_googleapis//google/cloud/iot/v1:iot_proto,google.golang.org/genproto/googleapis/cloud/iot/v1,@go_googleapis//google/cloud/iot/v1:iot_go_proto
|
||||
google/cloud/iot/v1/resources.proto,@go_googleapis//google/cloud/iot/v1:iot_proto,google.golang.org/genproto/googleapis/cloud/iot/v1,@go_googleapis//google/cloud/iot/v1:iot_go_proto
|
||||
google/cloud/kms/v1/resources.proto,@go_googleapis//google/cloud/kms/v1:kms_proto,google.golang.org/genproto/googleapis/cloud/kms/v1,@go_googleapis//google/cloud/kms/v1:kms_go_proto
|
||||
google/cloud/kms/v1/service.proto,@go_googleapis//google/cloud/kms/v1:kms_proto,google.golang.org/genproto/googleapis/cloud/kms/v1,@go_googleapis//google/cloud/kms/v1:kms_go_proto
|
||||
google/cloud/language/v1/language_service.proto,@go_googleapis//google/cloud/language/v1:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1,@go_googleapis//google/cloud/language/v1:language_go_proto
|
||||
google/cloud/language/v1beta1/language_service.proto,@go_googleapis//google/cloud/language/v1beta1:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1beta1,@go_googleapis//google/cloud/language/v1beta1:language_go_proto
|
||||
google/cloud/language/v1beta2/language_service.proto,@go_googleapis//google/cloud/language/v1beta2:language_proto,google.golang.org/genproto/googleapis/cloud/language/v1beta2,@go_googleapis//google/cloud/language/v1beta2:language_go_proto
|
||||
google/cloud/location/locations.proto,@go_googleapis//google/cloud/location:location_proto,google.golang.org/genproto/googleapis/cloud/location,@go_googleapis//google/cloud/location:location_go_proto
|
||||
google/cloud/ml/v1/job_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/model_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/operation_metadata.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/prediction_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/ml/v1/project_service.proto,@go_googleapis//google/cloud/ml/v1:ml_proto,google.golang.org/genproto/googleapis/cloud/ml/v1,@go_googleapis//google/cloud/ml/v1:ml_go_proto
|
||||
google/cloud/oslogin/common/common.proto,@go_googleapis//google/cloud/oslogin/common:common_proto,google.golang.org/genproto/googleapis/cloud/oslogin/common,@go_googleapis//google/cloud/oslogin/common:common_go_proto
|
||||
google/cloud/oslogin/v1/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1,@go_googleapis//google/cloud/oslogin/v1:oslogin_go_proto
|
||||
google/cloud/oslogin/v1alpha/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1alpha:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1alpha,@go_googleapis//google/cloud/oslogin/v1alpha:oslogin_go_proto
|
||||
google/cloud/oslogin/v1beta/oslogin.proto,@go_googleapis//google/cloud/oslogin/v1beta:oslogin_proto,google.golang.org/genproto/googleapis/cloud/oslogin/v1beta,@go_googleapis//google/cloud/oslogin/v1beta:oslogin_go_proto
|
||||
google/cloud/redis/v1/cloud_redis.proto,@go_googleapis//google/cloud/redis/v1:redis_proto,google.golang.org/genproto/googleapis/cloud/redis/v1,@go_googleapis//google/cloud/redis/v1:redis_go_proto
|
||||
google/cloud/redis/v1beta1/cloud_redis.proto,@go_googleapis//google/cloud/redis/v1beta1:redis_proto,google.golang.org/genproto/googleapis/cloud/redis/v1beta1,@go_googleapis//google/cloud/redis/v1beta1:redis_go_proto
|
||||
google/cloud/resourcemanager/v2/folders.proto,@go_googleapis//google/cloud/resourcemanager/v2:resourcemanager_proto,google.golang.org/genproto/googleapis/cloud/resourcemanager/v2,@go_googleapis//google/cloud/resourcemanager/v2:resourcemanager_go_proto
|
||||
google/cloud/runtimeconfig/v1beta1/resources.proto,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_proto,google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_go_proto
|
||||
google/cloud/runtimeconfig/v1beta1/runtimeconfig.proto,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_proto,google.golang.org/genproto/googleapis/cloud/runtimeconfig/v1beta1,@go_googleapis//google/cloud/runtimeconfig/v1beta1:runtimeconfig_go_proto
|
||||
google/cloud/scheduler/v1beta1/cloudscheduler.proto,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_proto,google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_go_proto
|
||||
google/cloud/scheduler/v1beta1/job.proto,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_proto,google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_go_proto
|
||||
google/cloud/scheduler/v1beta1/target.proto,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_proto,google.golang.org/genproto/googleapis/cloud/scheduler/v1beta1,@go_googleapis//google/cloud/scheduler/v1beta1:scheduler_go_proto
|
||||
google/cloud/securitycenter/v1beta1/asset.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/securitycenter/v1beta1/finding.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/securitycenter/v1beta1/organization_settings.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/securitycenter/v1beta1/security_marks.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/securitycenter/v1beta1/securitycenter_service.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/securitycenter/v1beta1/source.proto,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_proto,google.golang.org/genproto/googleapis/cloud/securitycenter/v1beta1,@go_googleapis//google/cloud/securitycenter/v1beta1:securitycenter_go_proto
|
||||
google/cloud/speech/v1/cloud_speech.proto,@go_googleapis//google/cloud/speech/v1:speech_proto,google.golang.org/genproto/googleapis/cloud/speech/v1,@go_googleapis//google/cloud/speech/v1:speech_go_proto
|
||||
google/cloud/speech/v1p1beta1/cloud_speech.proto,@go_googleapis//google/cloud/speech/v1p1beta1:speech_proto,google.golang.org/genproto/googleapis/cloud/speech/v1p1beta1,@go_googleapis//google/cloud/speech/v1p1beta1:speech_go_proto
|
||||
google/cloud/support/common.proto,@go_googleapis//google/cloud/support:common_proto,google.golang.org/genproto/googleapis/cloud/support/common,@go_googleapis//google/cloud/support:common_go_proto
|
||||
google/cloud/support/v1alpha1/cloud_support.proto,@go_googleapis//google/cloud/support/v1alpha1:support_proto,google.golang.org/genproto/googleapis/cloud/support/v1alpha1,@go_googleapis//google/cloud/support/v1alpha1:support_go_proto
|
||||
google/cloud/tasks/v2beta2/cloudtasks.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/queue.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/target.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta2/task.proto,@go_googleapis//google/cloud/tasks/v2beta2:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta2,@go_googleapis//google/cloud/tasks/v2beta2:tasks_go_proto
|
||||
google/cloud/tasks/v2beta3/cloudtasks.proto,@go_googleapis//google/cloud/tasks/v2beta3:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta3,@go_googleapis//google/cloud/tasks/v2beta3:tasks_go_proto
|
||||
google/cloud/tasks/v2beta3/queue.proto,@go_googleapis//google/cloud/tasks/v2beta3:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta3,@go_googleapis//google/cloud/tasks/v2beta3:tasks_go_proto
|
||||
google/cloud/tasks/v2beta3/target.proto,@go_googleapis//google/cloud/tasks/v2beta3:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta3,@go_googleapis//google/cloud/tasks/v2beta3:tasks_go_proto
|
||||
google/cloud/tasks/v2beta3/task.proto,@go_googleapis//google/cloud/tasks/v2beta3:tasks_proto,google.golang.org/genproto/googleapis/cloud/tasks/v2beta3,@go_googleapis//google/cloud/tasks/v2beta3:tasks_go_proto
|
||||
google/cloud/texttospeech/v1/cloud_tts.proto,@go_googleapis//google/cloud/texttospeech/v1:texttospeech_proto,google.golang.org/genproto/googleapis/cloud/texttospeech/v1,@go_googleapis//google/cloud/texttospeech/v1:texttospeech_go_proto
|
||||
google/cloud/texttospeech/v1beta1/cloud_tts.proto,@go_googleapis//google/cloud/texttospeech/v1beta1:texttospeech_proto,google.golang.org/genproto/googleapis/cloud/texttospeech/v1beta1,@go_googleapis//google/cloud/texttospeech/v1beta1:texttospeech_go_proto
|
||||
google/cloud/videointelligence/v1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1,@go_googleapis//google/cloud/videointelligence/v1:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1beta1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1beta1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta1,@go_googleapis//google/cloud/videointelligence/v1beta1:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1beta2/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1beta2:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1beta2,@go_googleapis//google/cloud/videointelligence/v1beta2:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1p1beta1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1p1beta1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1p1beta1,@go_googleapis//google/cloud/videointelligence/v1p1beta1:videointelligence_go_proto
|
||||
google/cloud/videointelligence/v1p2beta1/video_intelligence.proto,@go_googleapis//google/cloud/videointelligence/v1p2beta1:videointelligence_proto,google.golang.org/genproto/googleapis/cloud/videointelligence/v1p2beta1,@go_googleapis//google/cloud/videointelligence/v1p2beta1:videointelligence_go_proto
|
||||
google/cloud/vision/v1/geometry.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/product_search.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/product_search_service.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1/web_detection.proto,@go_googleapis//google/cloud/vision/v1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1,@go_googleapis//google/cloud/vision/v1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/geometry.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p1beta1/web_detection.proto,@go_googleapis//google/cloud/vision/v1p1beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p1beta1,@go_googleapis//google/cloud/vision/v1p1beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/geometry.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p2beta1/web_detection.proto,@go_googleapis//google/cloud/vision/v1p2beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p2beta1,@go_googleapis//google/cloud/vision/v1p2beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/geometry.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/image_annotator.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/product_search.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/product_search_service.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/text_annotation.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/vision/v1p3beta1/web_detection.proto,@go_googleapis//google/cloud/vision/v1p3beta1:vision_proto,google.golang.org/genproto/googleapis/cloud/vision/v1p3beta1,@go_googleapis//google/cloud/vision/v1p3beta1:vision_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/crawled_url.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding_addon.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/finding_type_stats.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/scan_config.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/scan_run.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/cloud/websecurityscanner/v1alpha/web_security_scanner.proto,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_proto,google.golang.org/genproto/googleapis/cloud/websecurityscanner/v1alpha,@go_googleapis//google/cloud/websecurityscanner/v1alpha:websecurityscanner_go_proto
|
||||
google/container/v1/cluster_service.proto,@go_googleapis//google/container/v1:container_proto,google.golang.org/genproto/googleapis/container/v1,@go_googleapis//google/container/v1:container_go_proto
|
||||
google/container/v1alpha1/cluster_service.proto,@go_googleapis//google/container/v1alpha1:container_proto,google.golang.org/genproto/googleapis/container/v1alpha1,@go_googleapis//google/container/v1alpha1:container_go_proto
|
||||
google/container/v1beta1/cluster_service.proto,@go_googleapis//google/container/v1beta1:container_proto,google.golang.org/genproto/googleapis/container/v1beta1,@go_googleapis//google/container/v1beta1:container_go_proto
|
||||
google/datastore/admin/v1/datastore_admin.proto,@go_googleapis//google/datastore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/datastore/admin/v1,@go_googleapis//google/datastore/admin/v1:admin_go_proto
|
||||
google/datastore/admin/v1/index.proto,@go_googleapis//google/datastore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/datastore/admin/v1,@go_googleapis//google/datastore/admin/v1:admin_go_proto
|
||||
google/datastore/admin/v1beta1/datastore_admin.proto,@go_googleapis//google/datastore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/datastore/admin/v1beta1,@go_googleapis//google/datastore/admin/v1beta1:admin_go_proto
|
||||
google/datastore/v1/datastore.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/v1/entity.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/v1/query.proto,@go_googleapis//google/datastore/v1:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1,@go_googleapis//google/datastore/v1:datastore_go_proto
|
||||
google/datastore/v1beta3/datastore.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/datastore/v1beta3/entity.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/datastore/v1beta3/query.proto,@go_googleapis//google/datastore/v1beta3:datastore_proto,google.golang.org/genproto/googleapis/datastore/v1beta3,@go_googleapis//google/datastore/v1beta3:datastore_go_proto
|
||||
google/devtools/build/v1/build_events.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/build/v1/build_status.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/build/v1/publish_build_event.proto,@go_googleapis//google/devtools/build/v1:build_proto,google.golang.org/genproto/googleapis/devtools/build/v1,@go_googleapis//google/devtools/build/v1:build_go_proto
|
||||
google/devtools/cloudbuild/v1/cloudbuild.proto,@go_googleapis//google/devtools/cloudbuild/v1:cloudbuild_proto,google.golang.org/genproto/googleapis/devtools/cloudbuild/v1,@go_googleapis//google/devtools/cloudbuild/v1:cloudbuild_go_proto
|
||||
google/devtools/clouddebugger/v2/controller.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/devtools/clouddebugger/v2/data.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/devtools/clouddebugger/v2/debugger.proto,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_proto,google.golang.org/genproto/googleapis/devtools/clouddebugger/v2,@go_googleapis//google/devtools/clouddebugger/v2:clouddebugger_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/common.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/error_group_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/error_stats_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/clouderrorreporting/v1beta1/report_errors_service.proto,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_proto,google.golang.org/genproto/googleapis/devtools/clouderrorreporting/v1beta1,@go_googleapis//google/devtools/clouderrorreporting/v1beta1:clouderrorreporting_go_proto
|
||||
google/devtools/cloudprofiler/v2/profiler.proto,@go_googleapis//google/devtools/cloudprofiler/v2:cloudprofiler_proto,google.golang.org/genproto/googleapis/devtools/cloudprofiler/v2,@go_googleapis//google/devtools/cloudprofiler/v2:cloudprofiler_go_proto
|
||||
google/devtools/cloudtrace/v1/trace.proto,@go_googleapis//google/devtools/cloudtrace/v1:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v1,@go_googleapis//google/devtools/cloudtrace/v1:cloudtrace_go_proto
|
||||
google/devtools/cloudtrace/v2/trace.proto,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v2,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_go_proto
|
||||
google/devtools/cloudtrace/v2/tracing.proto,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_proto,google.golang.org/genproto/googleapis/devtools/cloudtrace/v2,@go_googleapis//google/devtools/cloudtrace/v2:cloudtrace_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/bill_of_materials.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/containeranalysis.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/image_basis.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/package_vulnerability.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/provenance.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1alpha1/source_context.proto,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1alpha1,@go_googleapis//google/devtools/containeranalysis/v1alpha1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/attestation/attestation.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/attestation:attestation_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/attestation,@go_googleapis//google/devtools/containeranalysis/v1beta1/attestation:attestation_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/build/build.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/build:build_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/build,@go_googleapis//google/devtools/containeranalysis/v1beta1/build:build_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/common/common.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/common:common_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/common,@go_googleapis//google/devtools/containeranalysis/v1beta1/common:common_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/containeranalysis.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1:containeranalysis_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1,@go_googleapis//google/devtools/containeranalysis/v1beta1:containeranalysis_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/deployment/deployment.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/deployment:deployment_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/deployment,@go_googleapis//google/devtools/containeranalysis/v1beta1/deployment:deployment_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/discovery/discovery.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/discovery:discovery_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/discovery,@go_googleapis//google/devtools/containeranalysis/v1beta1/discovery:discovery_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/grafeas/grafeas.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/grafeas:grafeas_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/grafeas,@go_googleapis//google/devtools/containeranalysis/v1beta1/grafeas:grafeas_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/image/image.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/image:image_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/image,@go_googleapis//google/devtools/containeranalysis/v1beta1/image:image_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/package/package.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/package:package_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/package,@go_googleapis//google/devtools/containeranalysis/v1beta1/package:package_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/provenance/provenance.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/provenance:provenance_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/provenance,@go_googleapis//google/devtools/containeranalysis/v1beta1/provenance:provenance_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/source/source.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/source:source_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/source,@go_googleapis//google/devtools/containeranalysis/v1beta1/source:source_go_proto
|
||||
google/devtools/containeranalysis/v1beta1/vulnerability/vulnerability.proto,@go_googleapis//google/devtools/containeranalysis/v1beta1/vulnerability:vulnerability_proto,google.golang.org/genproto/googleapis/devtools/containeranalysis/v1beta1/vulnerability,@go_googleapis//google/devtools/containeranalysis/v1beta1/vulnerability:vulnerability_go_proto
|
||||
google/devtools/remoteexecution/v1test/remote_execution.proto,@go_googleapis//google/devtools/remoteexecution/v1test:remoteexecution_proto,google.golang.org/genproto/googleapis/devtools/remoteexecution/v1test,@go_googleapis//google/devtools/remoteexecution/v1test:remoteexecution_go_proto
|
||||
google/devtools/remoteworkers/v1test2/bots.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/command.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/tasks.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/remoteworkers/v1test2/worker.proto,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_proto,google.golang.org/genproto/googleapis/devtools/remoteworkers/v1test2,@go_googleapis//google/devtools/remoteworkers/v1test2:remoteworkers_go_proto
|
||||
google/devtools/resultstore/v2/action.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/common.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/configuration.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/configured_target.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/coverage.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/coverage_summary.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/file.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/file_set.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/invocation.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/resultstore_download.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/resultstore_file_download.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/resultstore_upload.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/target.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/resultstore/v2/test_suite.proto,@go_googleapis//google/devtools/resultstore/v2:resultstore_proto,google.golang.org/genproto/googleapis/devtools/resultstore/v2,@go_googleapis//google/devtools/resultstore/v2:resultstore_go_proto
|
||||
google/devtools/source/v1/source_context.proto,@go_googleapis//google/devtools/source/v1:source_proto,google.golang.org/genproto/googleapis/devtools/source/v1,@go_googleapis//google/devtools/source/v1:source_go_proto
|
||||
google/devtools/sourcerepo/v1/sourcerepo.proto,@go_googleapis//google/devtools/sourcerepo/v1:sourcerepo_proto,google.golang.org/genproto/googleapis/devtools/sourcerepo/v1,@go_googleapis//google/devtools/sourcerepo/v1:sourcerepo_go_proto
|
||||
google/example/library/v1/library.proto,@go_googleapis//google/example/library/v1:library_proto,google.golang.org/genproto/googleapis/example/library/v1,@go_googleapis//google/example/library/v1:library_go_proto
|
||||
google/firestore/admin/v1/field.proto,@go_googleapis//google/firestore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1,@go_googleapis//google/firestore/admin/v1:admin_go_proto
|
||||
google/firestore/admin/v1/firestore_admin.proto,@go_googleapis//google/firestore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1,@go_googleapis//google/firestore/admin/v1:admin_go_proto
|
||||
google/firestore/admin/v1/index.proto,@go_googleapis//google/firestore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1,@go_googleapis//google/firestore/admin/v1:admin_go_proto
|
||||
google/firestore/admin/v1/location.proto,@go_googleapis//google/firestore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1,@go_googleapis//google/firestore/admin/v1:admin_go_proto
|
||||
google/firestore/admin/v1/operation.proto,@go_googleapis//google/firestore/admin/v1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1,@go_googleapis//google/firestore/admin/v1:admin_go_proto
|
||||
google/firestore/admin/v1beta1/firestore_admin.proto,@go_googleapis//google/firestore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta1,@go_googleapis//google/firestore/admin/v1beta1:admin_go_proto
|
||||
google/firestore/admin/v1beta1/index.proto,@go_googleapis//google/firestore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta1,@go_googleapis//google/firestore/admin/v1beta1:admin_go_proto
|
||||
google/firestore/admin/v1beta1/location.proto,@go_googleapis//google/firestore/admin/v1beta1:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta1,@go_googleapis//google/firestore/admin/v1beta1:admin_go_proto
|
||||
google/firestore/admin/v1beta2/field.proto,@go_googleapis//google/firestore/admin/v1beta2:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta2,@go_googleapis//google/firestore/admin/v1beta2:admin_go_proto
|
||||
google/firestore/admin/v1beta2/firestore_admin.proto,@go_googleapis//google/firestore/admin/v1beta2:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta2,@go_googleapis//google/firestore/admin/v1beta2:admin_go_proto
|
||||
google/firestore/admin/v1beta2/index.proto,@go_googleapis//google/firestore/admin/v1beta2:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta2,@go_googleapis//google/firestore/admin/v1beta2:admin_go_proto
|
||||
google/firestore/admin/v1beta2/operation.proto,@go_googleapis//google/firestore/admin/v1beta2:admin_proto,google.golang.org/genproto/googleapis/firestore/admin/v1beta2,@go_googleapis//google/firestore/admin/v1beta2:admin_go_proto
|
||||
google/firestore/v1/common.proto,@go_googleapis//google/firestore/v1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1,@go_googleapis//google/firestore/v1:firestore_go_proto
|
||||
google/firestore/v1/document.proto,@go_googleapis//google/firestore/v1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1,@go_googleapis//google/firestore/v1:firestore_go_proto
|
||||
google/firestore/v1/firestore.proto,@go_googleapis//google/firestore/v1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1,@go_googleapis//google/firestore/v1:firestore_go_proto
|
||||
google/firestore/v1/query.proto,@go_googleapis//google/firestore/v1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1,@go_googleapis//google/firestore/v1:firestore_go_proto
|
||||
google/firestore/v1/write.proto,@go_googleapis//google/firestore/v1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1,@go_googleapis//google/firestore/v1:firestore_go_proto
|
||||
google/firestore/v1beta1/common.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/document.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/firestore.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/query.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/firestore/v1beta1/write.proto,@go_googleapis//google/firestore/v1beta1:firestore_proto,google.golang.org/genproto/googleapis/firestore/v1beta1,@go_googleapis//google/firestore/v1beta1:firestore_go_proto
|
||||
google/genomics/v1/annotations.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/cigar.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/datasets.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/operations.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/position.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/range.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readalignment.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readgroup.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/readgroupset.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/reads.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/references.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1/variants.proto,@go_googleapis//google/genomics/v1:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1,@go_googleapis//google/genomics/v1:genomics_go_proto
|
||||
google/genomics/v1alpha2/pipelines.proto,@go_googleapis//google/genomics/v1alpha2:genomics_proto,google.golang.org/genproto/googleapis/genomics/v1alpha2,@go_googleapis//google/genomics/v1alpha2:genomics_go_proto
|
||||
google/home/graph/v1/device.proto,@go_googleapis//google/home/graph/v1:graph_proto,google.golang.org/genproto/googleapis/home/graph/v1,@go_googleapis//google/home/graph/v1:graph_go_proto
|
||||
google/home/graph/v1/homegraph.proto,@go_googleapis//google/home/graph/v1:graph_proto,google.golang.org/genproto/googleapis/home/graph/v1,@go_googleapis//google/home/graph/v1:graph_go_proto
|
||||
google/iam/admin/v1/iam.proto,@go_googleapis//google/iam/admin/v1:admin_proto,google.golang.org/genproto/googleapis/iam/admin/v1,@go_googleapis//google/iam/admin/v1:admin_go_proto
|
||||
google/iam/credentials/v1/common.proto,@go_googleapis//google/iam/credentials/v1:credentials_proto,google.golang.org/genproto/googleapis/iam/credentials/v1,@go_googleapis//google/iam/credentials/v1:credentials_go_proto
|
||||
google/iam/credentials/v1/iamcredentials.proto,@go_googleapis//google/iam/credentials/v1:credentials_proto,google.golang.org/genproto/googleapis/iam/credentials/v1,@go_googleapis//google/iam/credentials/v1:credentials_go_proto
|
||||
google/iam/v1/iam_policy.proto,@go_googleapis//google/iam/v1:iam_proto,google.golang.org/genproto/googleapis/iam/v1,@go_googleapis//google/iam/v1:iam_go_proto
|
||||
google/iam/v1/logging/audit_data.proto,@go_googleapis//google/iam/v1/logging:logging_proto,google.golang.org/genproto/googleapis/iam/v1/logging,@go_googleapis//google/iam/v1/logging:logging_go_proto
|
||||
google/iam/v1/policy.proto,@go_googleapis//google/iam/v1:iam_proto,google.golang.org/genproto/googleapis/iam/v1,@go_googleapis//google/iam/v1:iam_go_proto
|
||||
google/logging/type/http_request.proto,@go_googleapis//google/logging/type:ltype_proto,google.golang.org/genproto/googleapis/logging/type,@go_googleapis//google/logging/type:ltype_go_proto
|
||||
google/logging/type/log_severity.proto,@go_googleapis//google/logging/type:ltype_proto,google.golang.org/genproto/googleapis/logging/type,@go_googleapis//google/logging/type:ltype_go_proto
|
||||
google/logging/v2/log_entry.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/logging.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/logging_config.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/logging/v2/logging_metrics.proto,@go_googleapis//google/logging/v2:logging_proto,google.golang.org/genproto/googleapis/logging/v2,@go_googleapis//google/logging/v2:logging_go_proto
|
||||
google/longrunning/operations.proto,@go_googleapis//google/longrunning:longrunning_proto,google.golang.org/genproto/googleapis/longrunning,@go_googleapis//google/longrunning:longrunning_go_proto
|
||||
google/monitoring/v3/alert.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/alert_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/common.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/dropped_labels.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/group.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/group_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/metric.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/metric_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/mutation_record.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/notification.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/notification_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/span_context.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/uptime.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/monitoring/v3/uptime_service.proto,@go_googleapis//google/monitoring/v3:monitoring_proto,google.golang.org/genproto/googleapis/monitoring/v3,@go_googleapis//google/monitoring/v3:monitoring_go_proto
|
||||
google/privacy/dlp/v2/dlp.proto,@go_googleapis//google/privacy/dlp/v2:dlp_proto,google.golang.org/genproto/googleapis/privacy/dlp/v2,@go_googleapis//google/privacy/dlp/v2:dlp_go_proto
|
||||
google/privacy/dlp/v2/storage.proto,@go_googleapis//google/privacy/dlp/v2:dlp_proto,google.golang.org/genproto/googleapis/privacy/dlp/v2,@go_googleapis//google/privacy/dlp/v2:dlp_go_proto
|
||||
google/pubsub/v1/pubsub.proto,@go_googleapis//google/pubsub/v1:pubsub_proto,google.golang.org/genproto/googleapis/pubsub/v1,@go_googleapis//google/pubsub/v1:pubsub_go_proto
|
||||
google/pubsub/v1beta2/pubsub.proto,@go_googleapis//google/pubsub/v1beta2:pubsub_proto,google.golang.org/genproto/googleapis/pubsub/v1beta2,@go_googleapis//google/pubsub/v1beta2:pubsub_go_proto
|
||||
google/rpc/code.proto,@go_googleapis//google/rpc:code_proto,google.golang.org/genproto/googleapis/rpc/code,@go_googleapis//google/rpc:code_go_proto
|
||||
google/rpc/error_details.proto,@go_googleapis//google/rpc:errdetails_proto,google.golang.org/genproto/googleapis/rpc/errdetails,@go_googleapis//google/rpc:errdetails_go_proto
|
||||
google/rpc/status.proto,@go_googleapis//google/rpc:status_proto,google.golang.org/genproto/googleapis/rpc/status,@go_googleapis//google/rpc:status_go_proto
|
||||
google/spanner/admin/database/v1/spanner_database_admin.proto,@go_googleapis//google/spanner/admin/database/v1:database_proto,google.golang.org/genproto/googleapis/spanner/admin/database/v1,@go_googleapis//google/spanner/admin/database/v1:database_go_proto
|
||||
google/spanner/admin/instance/v1/spanner_instance_admin.proto,@go_googleapis//google/spanner/admin/instance/v1:instance_proto,google.golang.org/genproto/googleapis/spanner/admin/instance/v1,@go_googleapis//google/spanner/admin/instance/v1:instance_go_proto
|
||||
google/spanner/v1/keys.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/mutation.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/query_plan.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/result_set.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/spanner.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/transaction.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/spanner/v1/type.proto,@go_googleapis//google/spanner/v1:spanner_proto,google.golang.org/genproto/googleapis/spanner/v1,@go_googleapis//google/spanner/v1:spanner_go_proto
|
||||
google/storagetransfer/v1/transfer.proto,@go_googleapis//google/storagetransfer/v1:storagetransfer_proto,google.golang.org/genproto/googleapis/storagetransfer/v1,@go_googleapis//google/storagetransfer/v1:storagetransfer_go_proto
|
||||
google/storagetransfer/v1/transfer_types.proto,@go_googleapis//google/storagetransfer/v1:storagetransfer_proto,google.golang.org/genproto/googleapis/storagetransfer/v1,@go_googleapis//google/storagetransfer/v1:storagetransfer_go_proto
|
||||
google/streetview/publish/v1/resources.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/streetview/publish/v1/rpcmessages.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/streetview/publish/v1/streetview_publish.proto,@go_googleapis//google/streetview/publish/v1:publish_proto,google.golang.org/genproto/googleapis/streetview/publish/v1,@go_googleapis//google/streetview/publish/v1:publish_go_proto
|
||||
google/type/color.proto,@go_googleapis//google/type:color_proto,google.golang.org/genproto/googleapis/type/color,@go_googleapis//google/type:color_go_proto
|
||||
google/type/date.proto,@go_googleapis//google/type:date_proto,google.golang.org/genproto/googleapis/type/date,@go_googleapis//google/type:date_go_proto
|
||||
google/type/dayofweek.proto,@go_googleapis//google/type:dayofweek_proto,google.golang.org/genproto/googleapis/type/dayofweek,@go_googleapis//google/type:dayofweek_go_proto
|
||||
google/type/latlng.proto,@go_googleapis//google/type:latlng_proto,google.golang.org/genproto/googleapis/type/latlng,@go_googleapis//google/type:latlng_go_proto
|
||||
google/type/money.proto,@go_googleapis//google/type:money_proto,google.golang.org/genproto/googleapis/type/money,@go_googleapis//google/type:money_go_proto
|
||||
google/type/postal_address.proto,@go_googleapis//google/type:postaladdress_proto,google.golang.org/genproto/googleapis/type/postaladdress,@go_googleapis//google/type:postaladdress_go_proto
|
||||
google/type/timeofday.proto,@go_googleapis//google/type:timeofday_proto,google.golang.org/genproto/googleapis/type/timeofday,@go_googleapis//google/type:timeofday_go_proto
|
||||
google/watcher/v1/watch.proto,@go_googleapis//google/watcher/v1:watcher_proto,google.golang.org/genproto/googleapis/watcher/v1,@go_googleapis//google/watcher/v1:watcher_go_proto
|
||||
|
|
|
@ -20,21 +20,33 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"path"
|
||||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
"github.com/bazelbuild/bazel-gazelle/resolve"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
func (_ *protoLang) Imports(c *config.Config, r *rule.Rule, f *rule.File) []resolve.ImportSpec {
|
||||
rel := f.Pkg
|
||||
srcs := r.AttrStrings("srcs")
|
||||
imports := make([]resolve.ImportSpec, len(srcs))
|
||||
pc := GetProtoConfig(c)
|
||||
prefix := rel
|
||||
if pc.stripImportPrefix != "" {
|
||||
prefix = strings.TrimPrefix(rel, pc.stripImportPrefix[1:])
|
||||
if rel == prefix {
|
||||
return nil
|
||||
}
|
||||
}
|
||||
if pc.importPrefix != "" {
|
||||
prefix = path.Join(pc.importPrefix, prefix)
|
||||
}
|
||||
for i, src := range srcs {
|
||||
imports[i] = resolve.ImportSpec{Lang: "proto", Imp: path.Join(rel, src)}
|
||||
imports[i] = resolve.ImportSpec{Lang: "proto", Imp: path.Join(prefix, src)}
|
||||
}
|
||||
return imports
|
||||
}
|
||||
|
|
@ -43,28 +55,31 @@ func (_ *protoLang) Embeds(r *rule.Rule, from label.Label) []label.Label {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (_ *protoLang) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repos.RemoteCache, r *rule.Rule, from label.Label) {
|
||||
pc := GetProtoConfig(c)
|
||||
importsRaw := r.PrivateAttr(config.GazelleImportsKey)
|
||||
func (_ *protoLang) Resolve(c *config.Config, ix *resolve.RuleIndex, rc *repo.RemoteCache, r *rule.Rule, importsRaw interface{}, from label.Label) {
|
||||
if importsRaw == nil {
|
||||
// may not be set in tests.
|
||||
return
|
||||
}
|
||||
imports := importsRaw.([]string)
|
||||
r.DelAttr("deps")
|
||||
deps := make([]string, 0, len(imports))
|
||||
depSet := make(map[string]bool)
|
||||
for _, imp := range imports {
|
||||
l, err := resolveProto(pc, ix, r, imp, from)
|
||||
l, err := resolveProto(c, ix, r, imp, from)
|
||||
if err == skipImportError {
|
||||
continue
|
||||
} else if err != nil {
|
||||
log.Print(err)
|
||||
} else {
|
||||
l = l.Rel(from.Repo, from.Pkg)
|
||||
deps = append(deps, l.String())
|
||||
depSet[l.String()] = true
|
||||
}
|
||||
}
|
||||
if len(deps) > 0 {
|
||||
if len(depSet) > 0 {
|
||||
deps := make([]string, 0, len(depSet))
|
||||
for dep := range depSet {
|
||||
deps = append(deps, dep)
|
||||
}
|
||||
sort.Strings(deps)
|
||||
r.SetAttr("deps", deps)
|
||||
}
|
||||
}
|
||||
|
|
@ -74,11 +89,16 @@ var (
|
|||
notFoundError = errors.New("not found")
|
||||
)
|
||||
|
||||
func resolveProto(pc *ProtoConfig, ix *resolve.RuleIndex, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
func resolveProto(c *config.Config, ix *resolve.RuleIndex, r *rule.Rule, imp string, from label.Label) (label.Label, error) {
|
||||
pc := GetProtoConfig(c)
|
||||
if !strings.HasSuffix(imp, ".proto") {
|
||||
return label.NoLabel, fmt.Errorf("can't import non-proto: %q", imp)
|
||||
}
|
||||
|
||||
if l, ok := resolve.FindRuleWithOverride(c, resolve.ImportSpec{Imp: imp, Lang: "proto"}, "proto"); ok {
|
||||
return l, nil
|
||||
}
|
||||
|
||||
if l, ok := knownImports[imp]; ok && pc.Mode.ShouldUseKnownImports() {
|
||||
if l.Equal(from) {
|
||||
return label.NoLabel, skipImportError
|
||||
|
|
@ -0,0 +1,13 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"fix.go",
|
||||
"merger.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/merger",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/merger",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = ["//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library"],
|
||||
)
|
||||
|
|
@ -19,7 +19,7 @@ import (
|
|||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// FixLoads removes loads of unused go rules and adds loads of newly used rules.
|
||||
|
|
@ -13,37 +13,88 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package merger provides methods for merging parsed BUILD files.
|
||||
// Package merger provides functions for merging generated rules into
|
||||
// existing build files.
|
||||
//
|
||||
// Gazelle's normal workflow is roughly as follows:
|
||||
//
|
||||
// 1. Read metadata from sources.
|
||||
//
|
||||
// 2. Generate new rules.
|
||||
//
|
||||
// 3. Merge newly generated rules with rules in the existing build file
|
||||
// if there is one.
|
||||
//
|
||||
// 4. Build an index of merged library rules for dependency resolution.
|
||||
//
|
||||
// 5. Resolve dependencies (i.e., convert import strings to deps labels).
|
||||
//
|
||||
// 6. Merge the newly resolved dependencies.
|
||||
//
|
||||
// 7. Write the merged file back to disk.
|
||||
//
|
||||
// This package is used for sets 3 and 6 above.
|
||||
package merger
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// Phase indicates which attributes should be merged in matching rules.
|
||||
//
|
||||
// The pre-resolve merge is performed before rules are indexed for dependency
|
||||
// resolution. All attributes not related to dependencies are merged. This
|
||||
// merge must be performed indexing because attributes related to indexing
|
||||
// (e.g., srcs, importpath) will be affected.
|
||||
//
|
||||
// The post-resolve merge is performed after rules are indexed. All attributes
|
||||
// related to dependencies are merged.
|
||||
type Phase int
|
||||
|
||||
const (
|
||||
// The pre-resolve merge is performed before rules are indexed for dependency
|
||||
// resolution. All attributes not related to dependencies are merged
|
||||
// (i.e., rule.KindInfo.MergeableAttrs). This merge must be performed
|
||||
// before indexing because attributes related to indexing (e.g.,
|
||||
// srcs, importpath) will be affected.
|
||||
PreResolve Phase = iota
|
||||
|
||||
// The post-resolve merge is performed after rules are indexed. All attributes
|
||||
// related to dependencies are merged (i.e., rule.KindInfo.ResolveAttrs).
|
||||
PostResolve
|
||||
)
|
||||
|
||||
// MergeFile merges the rules in genRules with matching rules in f and
|
||||
// adds unmatched rules to the end of the merged file. MergeFile also merges
|
||||
// rules in empty with matching rules in f and deletes rules that
|
||||
// are empty after merging. attrs is the set of attributes to merge. Attributes
|
||||
// not in this set will be left alone if they already exist.
|
||||
// MergeFile combines information from newly generated rules with matching
|
||||
// rules in an existing build file. MergeFile can also delete rules which
|
||||
// are empty after merging.
|
||||
//
|
||||
// oldFile is the file to merge. It must not be nil.
|
||||
//
|
||||
// emptyRules is a list of stub rules (with no attributes other than name)
|
||||
// which were not generated. These are merged with matching rules. The merged
|
||||
// rules are deleted if they contain no attributes that make them buildable
|
||||
// (e.g., srcs, deps, anything in rule.KindInfo.NonEmptyAttrs).
|
||||
//
|
||||
// genRules is a list of newly generated rules. These are merged with
|
||||
// matching rules. A rule matches if it has the same kind and name or if
|
||||
// some other attribute in rule.KindInfo.MatchAttrs matches (e.g.,
|
||||
// "importpath" in go_library). Elements of genRules that don't match
|
||||
// any existing rule are appended to the end of oldFile.
|
||||
//
|
||||
// phase indicates whether this is a pre- or post-resolve merge. Different
|
||||
// attributes (rule.KindInfo.MergeableAttrs or ResolveAttrs) will be merged.
|
||||
//
|
||||
// kinds maps rule kinds (e.g., "go_library") to metadata that helps merge
|
||||
// rules of that kind.
|
||||
//
|
||||
// When a generated and existing rule are merged, each attribute is merged
|
||||
// separately. If an attribute is mergeable (according to KindInfo), values
|
||||
// from the existing attribute are replaced by values from the generated
|
||||
// attribute. Comments are preserved on values that are present in both
|
||||
// versions of the attribute. If at attribute is not mergeable, the generated
|
||||
// version of the attribute will be added if no existing attribute is present;
|
||||
// otherwise, the existing attribute will be preserved.
|
||||
//
|
||||
// Note that "# keep" comments affect merging. If a value within an existing
|
||||
// attribute is marked with a "# keep" comment, it will not be removed.
|
||||
// If an attribute is marked with a "# keep" comment, it will not be merged.
|
||||
// If a rule is marked with a "# keep" comment, the whole rule will not
|
||||
// be modified.
|
||||
func MergeFile(oldFile *rule.File, emptyRules, genRules []*rule.Rule, phase Phase, kinds map[string]rule.KindInfo) {
|
||||
getMergeAttrs := func(r *rule.Rule) map[string]bool {
|
||||
if phase == PreResolve {
|
||||
|
|
@ -3,7 +3,7 @@ load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
|||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = ["path.go"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/pathtools",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/pathtools",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/pathtools",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/pathtools",
|
||||
visibility = ["//visibility:public"],
|
||||
)
|
||||
|
|
@ -13,6 +13,10 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
// Package pathtools provides utilities for manipulating paths. Most paths
|
||||
// within Gazelle are slash-separated paths, relative to the repository root
|
||||
// directory. The repository root directory is represented by the empty
|
||||
// string. Paths in this format may be used directly as package names in labels.
|
||||
package pathtools
|
||||
|
||||
import (
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"dep.go",
|
||||
"godep.go",
|
||||
"modules.go",
|
||||
"remote.go",
|
||||
"repo.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/repo",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/repo",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
"//vendor/github.com/pelletier/go-toml:go_default_library",
|
||||
"//vendor/golang.org/x/tools/go/vcs:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -13,12 +13,12 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package repos
|
||||
package repo
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
toml "github.com/pelletier/go-toml"
|
||||
)
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ type depProject struct {
|
|||
Source string `toml:"source"`
|
||||
}
|
||||
|
||||
func importRepoRulesDep(filename string) ([]Repo, error) {
|
||||
func importRepoRulesDep(filename string, _ *RemoteCache) ([]Repo, error) {
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
|
@ -44,11 +44,21 @@ func importRepoRulesDep(filename string) ([]Repo, error) {
|
|||
|
||||
var repos []Repo
|
||||
for _, p := range file.Projects {
|
||||
var vcs string
|
||||
if p.Source != "" {
|
||||
// TODO(#411): Handle source directives correctly. It may be an import
|
||||
// path, or a URL. In the case of an import path, we should resolve it
|
||||
// to the correct remote and vcs. In the case of a URL, we should
|
||||
// correctly determine what VCS to use (the URL will usually start
|
||||
// with "https://", which is used by multiple VCSs).
|
||||
vcs = "git"
|
||||
}
|
||||
repos = append(repos, Repo{
|
||||
Name: label.ImportPathToBazelRepoName(p.Name),
|
||||
GoPrefix: p.Name,
|
||||
Commit: p.Revision,
|
||||
Remote: p.Source,
|
||||
VCS: vcs,
|
||||
})
|
||||
}
|
||||
return repos, nil
|
||||
|
|
@ -0,0 +1,96 @@
|
|||
/* Copyright 2019 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 repo
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"sync"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
)
|
||||
|
||||
type goDepLockFile struct {
|
||||
ImportPath string
|
||||
GoVersion string
|
||||
GodepVersion string
|
||||
Packages []string
|
||||
Deps []goDepProject
|
||||
}
|
||||
|
||||
type goDepProject struct {
|
||||
ImportPath string
|
||||
Rev string
|
||||
}
|
||||
|
||||
func importRepoRulesGoDep(filename string, cache *RemoteCache) ([]Repo, error) {
|
||||
data, err := ioutil.ReadFile(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
file := goDepLockFile{}
|
||||
|
||||
if err := json.Unmarshal(data, &file); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var wg sync.WaitGroup
|
||||
|
||||
roots := make([]string, len(file.Deps))
|
||||
errs := make([]error, len(file.Deps))
|
||||
|
||||
wg.Add(len(file.Deps))
|
||||
for i, p := range file.Deps {
|
||||
go func(i int, p goDepProject) {
|
||||
defer wg.Done()
|
||||
rootRepo, _, err := cache.Root(p.ImportPath)
|
||||
if err != nil {
|
||||
errs[i] = err
|
||||
} else {
|
||||
roots[i] = rootRepo
|
||||
}
|
||||
}(i, p)
|
||||
}
|
||||
wg.Wait()
|
||||
|
||||
var repos []Repo
|
||||
for _, err := range errs {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
repoToRev := make(map[string]string)
|
||||
|
||||
for i, p := range file.Deps {
|
||||
repoRoot := roots[i]
|
||||
if rev, ok := repoToRev[repoRoot]; !ok {
|
||||
repos = append(repos, Repo{
|
||||
Name: label.ImportPathToBazelRepoName(repoRoot),
|
||||
GoPrefix: repoRoot,
|
||||
Commit: p.Rev,
|
||||
})
|
||||
repoToRev[repoRoot] = p.Rev
|
||||
} else {
|
||||
if p.Rev != rev {
|
||||
return nil, fmt.Errorf("Repo %s imported at multiple revisions: %s, %s", repoRoot, p.Rev, rev)
|
||||
}
|
||||
}
|
||||
}
|
||||
return repos, nil
|
||||
}
|
||||
|
|
@ -0,0 +1,161 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 repo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"io"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"os/exec"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
)
|
||||
|
||||
type module struct {
|
||||
Path, Version string
|
||||
Main bool
|
||||
}
|
||||
|
||||
// Per the `go help modules` documentation:
|
||||
// There are three pseudo-version forms:
|
||||
//
|
||||
// vX.0.0-yyyymmddhhmmss-abcdefabcdef is used when there is no earlier
|
||||
// versioned commit with an appropriate major version before the target commit.
|
||||
// (This was originally the only form, so some older go.mod files use this form
|
||||
// even for commits that do follow tags.)
|
||||
//
|
||||
// vX.Y.Z-pre.0.yyyymmddhhmmss-abcdefabcdef is used when the most
|
||||
// recent versioned commit before the target commit is vX.Y.Z-pre.
|
||||
//
|
||||
// vX.Y.(Z+1)-0.yyyymmddhhmmss-abcdefabcdef is used when the most
|
||||
// recent versioned commit before the target commit is vX.Y.Z.
|
||||
//
|
||||
// We need to match all three of these with the following regexp.
|
||||
|
||||
var regexMixedVersioning = regexp.MustCompile(`^(.*?)[-.]((?:0\.|)[0-9]{14})-([a-fA-F0-9]{12})$`)
|
||||
|
||||
func toRepoRule(mod module) Repo {
|
||||
var tag, commit string
|
||||
|
||||
if gr := regexMixedVersioning.FindStringSubmatch(mod.Version); gr != nil {
|
||||
commit = gr[3]
|
||||
} else {
|
||||
tag = strings.TrimSuffix(mod.Version, "+incompatible")
|
||||
}
|
||||
|
||||
return Repo{
|
||||
Name: label.ImportPathToBazelRepoName(mod.Path),
|
||||
GoPrefix: mod.Path,
|
||||
Commit: commit,
|
||||
Tag: tag,
|
||||
}
|
||||
}
|
||||
|
||||
func importRepoRulesModules(filename string, _ *RemoteCache) (repos []Repo, err error) {
|
||||
tempDir, err := copyGoModToTemp(filename)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
defer os.RemoveAll(tempDir)
|
||||
|
||||
data, err := goListModulesFn(tempDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
dec := json.NewDecoder(bytes.NewReader(data))
|
||||
for dec.More() {
|
||||
var mod module
|
||||
if err := dec.Decode(&mod); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
if mod.Main {
|
||||
continue
|
||||
}
|
||||
|
||||
repos = append(repos, toRepoRule(mod))
|
||||
}
|
||||
|
||||
return repos, nil
|
||||
}
|
||||
|
||||
// goListModulesFn may be overridden by tests.
|
||||
var goListModulesFn = goListModules
|
||||
|
||||
// goListModules invokes "go list" in a directory containing a go.mod file.
|
||||
func goListModules(dir string) ([]byte, error) {
|
||||
goTool := findGoTool()
|
||||
cmd := exec.Command(goTool, "list", "-m", "-json", "all")
|
||||
cmd.Stderr = os.Stderr
|
||||
cmd.Dir = dir
|
||||
data, err := cmd.Output()
|
||||
return data, err
|
||||
}
|
||||
|
||||
// copyGoModToTemp copies to given go.mod file to a temporary directory.
|
||||
// go list tends to mutate go.mod files, but gazelle shouldn't do that.
|
||||
func copyGoModToTemp(filename string) (tempDir string, err error) {
|
||||
goModOrig, err := os.Open(filename)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
defer goModOrig.Close()
|
||||
|
||||
tempDir, err = ioutil.TempDir("", "gazelle-temp-gomod")
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
goModCopy, err := os.Create(filepath.Join(tempDir, "go.mod"))
|
||||
if err != nil {
|
||||
os.Remove(tempDir)
|
||||
return "", err
|
||||
}
|
||||
defer func() {
|
||||
if cerr := goModCopy.Close(); err == nil && cerr != nil {
|
||||
err = cerr
|
||||
}
|
||||
}()
|
||||
|
||||
_, err = io.Copy(goModCopy, goModOrig)
|
||||
if err != nil {
|
||||
os.RemoveAll(tempDir)
|
||||
return "", err
|
||||
}
|
||||
return tempDir, err
|
||||
}
|
||||
|
||||
// findGoTool attempts to locate the go executable. If GOROOT is set, we'll
|
||||
// prefer the one in there; otherwise, we'll rely on PATH. If the wrapper
|
||||
// script generated by the gazelle rule is invoked by Bazel, it will set
|
||||
// GOROOT to the configured SDK. We don't want to rely on the host SDK in
|
||||
// that situation.
|
||||
func findGoTool() string {
|
||||
path := "go" // rely on PATH by default
|
||||
if goroot, ok := os.LookupEnv("GOROOT"); ok {
|
||||
path = filepath.Join(goroot, "bin", "go")
|
||||
}
|
||||
if runtime.GOOS == "windows" {
|
||||
path += ".exe"
|
||||
}
|
||||
return path
|
||||
}
|
||||
|
|
@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package repos
|
||||
package repo
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
|
|
@ -24,8 +24,8 @@ import (
|
|||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/pathtools"
|
||||
"golang.org/x/tools/go/vcs"
|
||||
)
|
||||
|
||||
|
|
@ -13,7 +13,7 @@ See the License for the specific language governing permissions and
|
|||
limitations under the License.
|
||||
*/
|
||||
|
||||
package repos
|
||||
package repo
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
|
@ -22,7 +22,7 @@ import (
|
|||
"sort"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// Repo describes an external repository rule declared in a Bazel
|
||||
|
|
@ -61,23 +61,26 @@ type lockFileFormat int
|
|||
const (
|
||||
unknownFormat lockFileFormat = iota
|
||||
depFormat
|
||||
moduleFormat
|
||||
godepFormat
|
||||
)
|
||||
|
||||
var lockFileParsers = map[lockFileFormat]func(string) ([]Repo, error){
|
||||
depFormat: importRepoRulesDep,
|
||||
var lockFileParsers = map[lockFileFormat]func(string, *RemoteCache) ([]Repo, error){
|
||||
depFormat: importRepoRulesDep,
|
||||
moduleFormat: importRepoRulesModules,
|
||||
godepFormat: importRepoRulesGoDep,
|
||||
}
|
||||
|
||||
// ImportRepoRules reads the lock file of a vendoring tool and returns
|
||||
// a list of equivalent repository rules that can be merged into a WORKSPACE
|
||||
// file. The format of the file is inferred from its basename. Currently,
|
||||
// only Gopkg.lock is supported.
|
||||
func ImportRepoRules(filename string) ([]*rule.Rule, error) {
|
||||
// file. The format of the file is inferred from its basename.
|
||||
func ImportRepoRules(filename string, repoCache *RemoteCache) ([]*rule.Rule, error) {
|
||||
format := getLockFileFormat(filename)
|
||||
if format == unknownFormat {
|
||||
return nil, fmt.Errorf(`%s: unrecognized lock file format. Expected "Gopkg.lock"`, filename)
|
||||
return nil, fmt.Errorf(`%s: unrecognized lock file format. Expected "Gopkg.lock", "go.mod", or "Godeps.json"`, filename)
|
||||
}
|
||||
parser := lockFileParsers[format]
|
||||
repos, err := parser(filename)
|
||||
repos, err := parser(filename, repoCache)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("error parsing %q: %v", filename, err)
|
||||
}
|
||||
|
|
@ -94,6 +97,10 @@ func getLockFileFormat(filename string) lockFileFormat {
|
|||
switch filepath.Base(filename) {
|
||||
case "Gopkg.lock":
|
||||
return depFormat
|
||||
case "go.mod":
|
||||
return moduleFormat
|
||||
case "Godeps.json":
|
||||
return godepFormat
|
||||
default:
|
||||
return unknownFormat
|
||||
}
|
||||
|
|
@ -103,7 +110,12 @@ func getLockFileFormat(filename string) lockFileFormat {
|
|||
// be written in a WORKSPACE file.
|
||||
func GenerateRule(repo Repo) *rule.Rule {
|
||||
r := rule.NewRule("go_repository", repo.Name)
|
||||
r.SetAttr("commit", repo.Commit)
|
||||
if repo.Commit != "" {
|
||||
r.SetAttr("commit", repo.Commit)
|
||||
}
|
||||
if repo.Tag != "" {
|
||||
r.SetAttr("tag", repo.Tag)
|
||||
}
|
||||
r.SetAttr("importpath", repo.GoPrefix)
|
||||
if repo.Remote != "" {
|
||||
r.SetAttr("remote", repo.Remote)
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"index.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/resolve",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/resolve",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/repo:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 resolve
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// FindRuleWithOverride searches the current configuration for user-specified
|
||||
// dependency resolution overrides. Overrides specified later (in configuration
|
||||
// files in deeper directories, or closer to the end of the file) are
|
||||
// returned first. If no override is found, label.NoLabel is returned.
|
||||
func FindRuleWithOverride(c *config.Config, imp ImportSpec, lang string) (label.Label, bool) {
|
||||
rc := getResolveConfig(c)
|
||||
for i := len(rc.overrides) - 1; i >= 0; i-- {
|
||||
o := rc.overrides[i]
|
||||
if o.matches(imp, lang) {
|
||||
return o.dep, true
|
||||
}
|
||||
}
|
||||
return label.NoLabel, false
|
||||
}
|
||||
|
||||
type overrideSpec struct {
|
||||
imp ImportSpec
|
||||
lang string
|
||||
dep label.Label
|
||||
}
|
||||
|
||||
func (o overrideSpec) matches(imp ImportSpec, lang string) bool {
|
||||
return imp.Lang == o.imp.Lang &&
|
||||
imp.Imp == o.imp.Imp &&
|
||||
(o.lang == "" || o.lang == lang)
|
||||
}
|
||||
|
||||
type resolveConfig struct {
|
||||
overrides []overrideSpec
|
||||
}
|
||||
|
||||
const resolveName = "_resolve"
|
||||
|
||||
func getResolveConfig(c *config.Config) *resolveConfig {
|
||||
return c.Exts[resolveName].(*resolveConfig)
|
||||
}
|
||||
|
||||
type Configurer struct{}
|
||||
|
||||
func (_ *Configurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) {
|
||||
c.Exts[resolveName] = &resolveConfig{}
|
||||
}
|
||||
|
||||
func (_ *Configurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error { return nil }
|
||||
|
||||
func (_ *Configurer) KnownDirectives() []string {
|
||||
return []string{"resolve"}
|
||||
}
|
||||
|
||||
func (_ *Configurer) Configure(c *config.Config, rel string, f *rule.File) {
|
||||
rc := getResolveConfig(c)
|
||||
rcCopy := &resolveConfig{
|
||||
overrides: rc.overrides[:],
|
||||
}
|
||||
|
||||
if f != nil {
|
||||
for _, d := range f.Directives {
|
||||
if d.Key == "resolve" {
|
||||
parts := strings.Fields(d.Value)
|
||||
o := overrideSpec{}
|
||||
var lbl string
|
||||
if len(parts) == 3 {
|
||||
o.imp.Lang = parts[0]
|
||||
o.imp.Imp = parts[1]
|
||||
lbl = parts[2]
|
||||
} else if len(parts) == 4 {
|
||||
o.imp.Lang = parts[0]
|
||||
o.lang = parts[1]
|
||||
o.imp.Imp = parts[2]
|
||||
lbl = parts[3]
|
||||
} else {
|
||||
log.Printf("could not parse directive: %s\n\texpected gazelle:resolve source-language [import-language] import-string label", d.Value)
|
||||
continue
|
||||
}
|
||||
var err error
|
||||
o.dep, err = label.Parse(lbl)
|
||||
if err != nil {
|
||||
log.Printf("gazelle:resolve %s: %v", d.Value, err)
|
||||
continue
|
||||
}
|
||||
o.dep = o.dep.Abs("", rel)
|
||||
rcCopy.overrides = append(rcCopy.overrides, o)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c.Exts[resolveName] = rcCopy
|
||||
}
|
||||
|
|
@ -18,10 +18,10 @@ package resolve
|
|||
import (
|
||||
"log"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/repos"
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/rule"
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/repo"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// ImportSpec describes a library to be imported. Imp is an import string for
|
||||
|
|
@ -53,27 +53,28 @@ type Resolver interface {
|
|||
Embeds(r *rule.Rule, from label.Label) []label.Label
|
||||
|
||||
// Resolve translates imported libraries for a given rule into Bazel
|
||||
// dependencies. A list of imported libraries is typically stored in a
|
||||
// private attribute of the rule when it's generated (this interface doesn't
|
||||
// dictate how that is stored or represented). Resolve generates a "deps"
|
||||
// attribute (or the appropriate language-specific equivalent) for each
|
||||
// import according to language-specific rules and heuristics.
|
||||
Resolve(c *config.Config, ix *RuleIndex, rc *repos.RemoteCache, r *rule.Rule, from label.Label)
|
||||
// dependencies. Information about imported libraries is returned for each
|
||||
// rule generated by language.GenerateRules in
|
||||
// language.GenerateResult.Imports. Resolve generates a "deps" attribute (or
|
||||
// the appropriate language-specific equivalent) for each import according to
|
||||
// language-specific rules and heuristics.
|
||||
Resolve(c *config.Config, ix *RuleIndex, rc *repo.RemoteCache, r *rule.Rule, imports interface{}, from label.Label)
|
||||
}
|
||||
|
||||
// RuleIndex is a table of rules in a workspace, indexed by label and by
|
||||
// import path. Used by Resolver to map import paths to labels.
|
||||
type RuleIndex struct {
|
||||
rules []*ruleRecord
|
||||
labelMap map[label.Label]*ruleRecord
|
||||
importMap map[ImportSpec][]*ruleRecord
|
||||
kindToResolver map[string]Resolver
|
||||
rules []*ruleRecord
|
||||
labelMap map[label.Label]*ruleRecord
|
||||
importMap map[ImportSpec][]*ruleRecord
|
||||
mrslv func(r *rule.Rule, f *rule.File) Resolver
|
||||
}
|
||||
|
||||
// ruleRecord contains information about a rule relevant to import indexing.
|
||||
type ruleRecord struct {
|
||||
rule *rule.Rule
|
||||
label label.Label
|
||||
file *rule.File
|
||||
|
||||
// importedAs is a list of ImportSpecs by which this rule may be imported.
|
||||
// Used to build a map from ImportSpecs to ruleRecords.
|
||||
|
|
@ -96,10 +97,10 @@ type ruleRecord struct {
|
|||
//
|
||||
// kindToResolver is a map from rule kinds (for example, "go_library") to
|
||||
// Resolvers that support those kinds.
|
||||
func NewRuleIndex(kindToResolver map[string]Resolver) *RuleIndex {
|
||||
func NewRuleIndex(mrslv func(r *rule.Rule, f *rule.File) Resolver) *RuleIndex {
|
||||
return &RuleIndex{
|
||||
labelMap: make(map[label.Label]*ruleRecord),
|
||||
kindToResolver: kindToResolver,
|
||||
labelMap: make(map[label.Label]*ruleRecord),
|
||||
mrslv: mrslv,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +111,7 @@ func NewRuleIndex(kindToResolver map[string]Resolver) *RuleIndex {
|
|||
// AddRule may only be called before Finish.
|
||||
func (ix *RuleIndex) AddRule(c *config.Config, r *rule.Rule, f *rule.File) {
|
||||
var imps []ImportSpec
|
||||
if rslv, ok := ix.kindToResolver[r.Kind()]; ok {
|
||||
if rslv := ix.mrslv(r, f); rslv != nil {
|
||||
imps = rslv.Imports(c, r, f)
|
||||
}
|
||||
// If imps == nil, the rule is not importable. If imps is the empty slice,
|
||||
|
|
@ -122,6 +123,7 @@ func (ix *RuleIndex) AddRule(c *config.Config, r *rule.Rule, f *rule.File) {
|
|||
record := &ruleRecord{
|
||||
rule: r,
|
||||
label: label.New(c.RepoName, f.Pkg, r.Name()),
|
||||
file: f,
|
||||
importedAs: imps,
|
||||
}
|
||||
if _, ok := ix.labelMap[record.label]; ok {
|
||||
|
|
@ -149,8 +151,9 @@ func (ix *RuleIndex) collectEmbeds(r *ruleRecord) {
|
|||
if r.didCollectEmbeds {
|
||||
return
|
||||
}
|
||||
resolver := ix.mrslv(r.rule, r.file)
|
||||
r.didCollectEmbeds = true
|
||||
embedLabels := ix.kindToResolver[r.rule.Kind()].Embeds(r.rule, r.label)
|
||||
embedLabels := resolver.Embeds(r.rule, r.label)
|
||||
r.embeds = embedLabels
|
||||
for _, e := range embedLabels {
|
||||
er, ok := ix.findRuleByLabel(e, r.label)
|
||||
|
|
@ -158,7 +161,7 @@ func (ix *RuleIndex) collectEmbeds(r *ruleRecord) {
|
|||
continue
|
||||
}
|
||||
ix.collectEmbeds(er)
|
||||
if ix.kindToResolver[r.rule.Kind()] == ix.kindToResolver[er.rule.Kind()] {
|
||||
if resolver == ix.mrslv(er.rule, er.file) {
|
||||
er.embedded = true
|
||||
r.embeds = append(r.embeds, er.embeds...)
|
||||
}
|
||||
|
|
@ -195,8 +198,6 @@ type FindResult struct {
|
|||
// a matched rule.
|
||||
Label label.Label
|
||||
|
||||
Rule *rule.Rule
|
||||
|
||||
// Embeds is the transitive closure of labels for rules that the matched
|
||||
// rule embeds. It may contains duplicates and does not include the label
|
||||
// for the rule itself.
|
||||
|
|
@ -217,12 +218,11 @@ func (ix *RuleIndex) FindRulesByImport(imp ImportSpec, lang string) []FindResult
|
|||
matches := ix.importMap[imp]
|
||||
results := make([]FindResult, 0, len(matches))
|
||||
for _, m := range matches {
|
||||
if ix.kindToResolver[m.rule.Kind()].Name() != lang {
|
||||
if ix.mrslv(m.rule, nil).Name() != lang {
|
||||
continue
|
||||
}
|
||||
results = append(results, FindResult{
|
||||
Label: m.label,
|
||||
Rule: m.rule,
|
||||
Embeds: m.embeds,
|
||||
})
|
||||
}
|
||||
|
|
@ -13,11 +13,11 @@ go_library(
|
|||
"types.go",
|
||||
"value.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/internal/rule",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/internal/rule",
|
||||
visibility = ["//vendor/github.com/bazelbuild/bazel-gazelle:__subpackages__"],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/rule",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/rule",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/internal/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/label:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/buildtools/build:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/buildtools/tables:go_default_library",
|
||||
],
|
||||
|
|
@ -20,7 +20,7 @@ import (
|
|||
"log"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/internal/label"
|
||||
"github.com/bazelbuild/bazel-gazelle/label"
|
||||
bzl "github.com/bazelbuild/buildtools/build"
|
||||
)
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ func MapExprStrings(e bzl.Expr, f func(string) string) bzl.Expr {
|
|||
return &ret
|
||||
|
||||
case *bzl.CallExpr:
|
||||
if x, ok := expr.X.(*bzl.LiteralExpr); !ok || x.Token != "select" || len(expr.List) != 1 {
|
||||
if x, ok := expr.X.(*bzl.Ident); !ok || x.Name != "select" || len(expr.List) != 1 {
|
||||
log.Panicf("unexpected call expression in generated imports: %#v", e)
|
||||
}
|
||||
arg := MapExprStrings(expr.List[0], f)
|
||||
|
|
@ -170,7 +170,7 @@ func FlattenExpr(e bzl.Expr) bzl.Expr {
|
|||
|
||||
func isScalar(e bzl.Expr) bool {
|
||||
switch e.(type) {
|
||||
case *bzl.StringExpr, *bzl.LiteralExpr:
|
||||
case *bzl.StringExpr, *bzl.LiteralExpr, *bzl.Ident:
|
||||
return true
|
||||
default:
|
||||
return false
|
||||
|
|
@ -250,8 +250,8 @@ func extractPlatformStringsExprs(expr bzl.Expr) (platformStringsExprs, error) {
|
|||
ps.generic = part
|
||||
|
||||
case *bzl.CallExpr:
|
||||
x, ok := part.X.(*bzl.LiteralExpr)
|
||||
if !ok || x.Token != "select" || len(part.List) != 1 {
|
||||
x, ok := part.X.(*bzl.Ident)
|
||||
if !ok || x.Name != "select" || len(part.List) != 1 {
|
||||
return platformStringsExprs{}, fmt.Errorf("expression could not be matched: callee other than select or wrong number of args")
|
||||
}
|
||||
arg, ok := part.List[0].(*bzl.DictExpr)
|
||||
|
|
@ -307,7 +307,7 @@ func extractPlatformStringsExprs(expr bzl.Expr) (platformStringsExprs, error) {
|
|||
func makePlatformStringsExpr(ps platformStringsExprs) bzl.Expr {
|
||||
makeSelect := func(dict *bzl.DictExpr) bzl.Expr {
|
||||
return &bzl.CallExpr{
|
||||
X: &bzl.LiteralExpr{Token: "select"},
|
||||
X: &bzl.Ident{Name: "select"},
|
||||
List: []bzl.Expr{dict},
|
||||
}
|
||||
}
|
||||
|
|
@ -288,9 +288,9 @@ func SquashRules(src, dst *Rule, filename string) error {
|
|||
}
|
||||
}
|
||||
}
|
||||
dst.call.Comments.Before = append(dst.call.Comments.Before, src.call.Comments.Before...)
|
||||
dst.call.Comments.Suffix = append(dst.call.Comments.Suffix, src.call.Comments.Suffix...)
|
||||
dst.call.Comments.After = append(dst.call.Comments.After, src.call.Comments.After...)
|
||||
dst.expr.Comment().Before = append(dst.expr.Comment().Before, src.expr.Comment().Before...)
|
||||
dst.expr.Comment().Suffix = append(dst.expr.Comment().Suffix, src.expr.Comment().Suffix...)
|
||||
dst.expr.Comment().After = append(dst.expr.Comment().After, src.expr.Comment().After...)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
|
@ -19,13 +19,14 @@ limitations under the License.
|
|||
// is language agnostic, but it may be used for language-specific rules by
|
||||
// providing configuration.
|
||||
//
|
||||
// File is the primary interface to this package. Rule and Load are used to
|
||||
// create, read, update, and delete rules. Once modifications are performed,
|
||||
// File.Sync() may be called to write the changes back to the original AST,
|
||||
// which may then be formatted and written back to a file.
|
||||
// File is the primary interface to this package. A File represents an
|
||||
// individual build file. It comprises a list of Rules and a list of Loads.
|
||||
// Rules and Loads may be inserted, modified, or deleted. When all changes
|
||||
// are done, File.Save() may be called to write changes back to a file.
|
||||
package rule
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path/filepath"
|
||||
|
|
@ -36,11 +37,9 @@ import (
|
|||
bt "github.com/bazelbuild/buildtools/tables"
|
||||
)
|
||||
|
||||
// File provides editing functionality on top of a Skylark syntax tree. This
|
||||
// is the primary interface Gazelle uses for reading and updating build files.
|
||||
// To use, create a new file with EmptyFile or wrap a syntax tree with
|
||||
// LoadFile. Perform edits on Loads and Rules, then call Sync() to write
|
||||
// changes back to the AST.
|
||||
// File provides editing functionality for a build file. You can create a
|
||||
// new file with EmptyFile or load an existing file with LoadFile. After
|
||||
// changes have been made, call Save to write changes back to a file.
|
||||
type File struct {
|
||||
// File is the underlying build file syntax tree. Some editing operations
|
||||
// may modify this, but editing is not complete until Sync() is called.
|
||||
|
|
@ -88,11 +87,31 @@ func LoadFile(path, pkg string) (*File, error) {
|
|||
return LoadData(path, pkg, data)
|
||||
}
|
||||
|
||||
// LoadWorkspaceFile is similar to LoadFile but parses the file as a WORKSPACE
|
||||
// file.
|
||||
func LoadWorkspaceFile(path, pkg string) (*File, error) {
|
||||
data, err := ioutil.ReadFile(path)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return LoadWorkspaceData(path, pkg, data)
|
||||
}
|
||||
|
||||
// LoadData parses a build file from a byte slice and scans it for rules and
|
||||
// load statements. The syntax tree within the returned File will be modified
|
||||
// by editing methods.
|
||||
func LoadData(path, pkg string, data []byte) (*File, error) {
|
||||
ast, err := bzl.Parse(path, data)
|
||||
ast, err := bzl.ParseBuild(path, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return ScanAST(pkg, ast), nil
|
||||
}
|
||||
|
||||
// LoadWorkspaceData is similar to LoadData but parses the data as a
|
||||
// WORKSPACE file.
|
||||
func LoadWorkspaceData(path, pkg string, data []byte) (*File, error) {
|
||||
ast, err := bzl.ParseWorkspace(path, data)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
@ -108,20 +127,12 @@ func ScanAST(pkg string, bzlFile *bzl.File) *File {
|
|||
Path: bzlFile.Path,
|
||||
}
|
||||
for i, stmt := range f.File.Stmt {
|
||||
call, ok := stmt.(*bzl.CallExpr)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
x, ok := call.X.(*bzl.LiteralExpr)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
if x.Token == "load" {
|
||||
if l := loadFromExpr(i, call); l != nil {
|
||||
f.Loads = append(f.Loads, l)
|
||||
}
|
||||
} else {
|
||||
if r := ruleFromExpr(i, call); r != nil {
|
||||
switch stmt := stmt.(type) {
|
||||
case *bzl.LoadStmt:
|
||||
l := loadFromExpr(i, stmt)
|
||||
f.Loads = append(f.Loads, l)
|
||||
case *bzl.CallExpr:
|
||||
if r := ruleFromExpr(i, stmt); r != nil {
|
||||
f.Rules = append(f.Rules, r)
|
||||
}
|
||||
}
|
||||
|
|
@ -194,14 +205,14 @@ func (f *File) Sync() {
|
|||
for i, stmt := range oldStmt {
|
||||
for ii < len(inserts) && inserts[ii].index == i {
|
||||
inserts[ii].index = len(f.File.Stmt)
|
||||
f.File.Stmt = append(f.File.Stmt, inserts[ii].call)
|
||||
f.File.Stmt = append(f.File.Stmt, inserts[ii].expr)
|
||||
ii++
|
||||
}
|
||||
if di < len(deletes) && deletes[di].index == i {
|
||||
di++
|
||||
continue
|
||||
}
|
||||
if si < len(stmts) && stmts[si].call == stmt {
|
||||
if si < len(stmts) && stmts[si].expr == stmt {
|
||||
stmts[si].index = len(f.File.Stmt)
|
||||
si++
|
||||
}
|
||||
|
|
@ -209,7 +220,7 @@ func (f *File) Sync() {
|
|||
}
|
||||
for ii < len(inserts) {
|
||||
inserts[ii].index = len(f.File.Stmt)
|
||||
f.File.Stmt = append(f.File.Stmt, inserts[ii].call)
|
||||
f.File.Stmt = append(f.File.Stmt, inserts[ii].expr)
|
||||
ii++
|
||||
}
|
||||
}
|
||||
|
|
@ -228,10 +239,22 @@ func (f *File) Save(path string) error {
|
|||
return ioutil.WriteFile(path, data, 0666)
|
||||
}
|
||||
|
||||
// HasDefaultVisibility returns whether the File contains a "package" rule with
|
||||
// a "default_visibility" attribute. Rules generated by Gazelle should not
|
||||
// have their own visibility attributes if this is the case.
|
||||
func (f *File) HasDefaultVisibility() bool {
|
||||
for _, r := range f.Rules {
|
||||
if r.Kind() == "package" && r.Attr("default_visibility") != nil {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type stmt struct {
|
||||
index int
|
||||
deleted, inserted, updated bool
|
||||
call *bzl.CallExpr
|
||||
expr bzl.Expr
|
||||
}
|
||||
|
||||
// Index returns the index for this statement within the build file. For
|
||||
|
|
@ -258,57 +281,42 @@ func (s byIndex) Swap(i, j int) {
|
|||
s[i], s[j] = s[j], s[i]
|
||||
}
|
||||
|
||||
// identPair represents one symbol, with or without remapping, in a load
|
||||
// statement within a build file.
|
||||
type identPair struct {
|
||||
to, from *bzl.Ident
|
||||
}
|
||||
|
||||
// Load represents a load statement within a build file.
|
||||
type Load struct {
|
||||
stmt
|
||||
name string
|
||||
symbols map[string]bzl.Expr
|
||||
symbols map[string]identPair
|
||||
}
|
||||
|
||||
// NewLoad creates a new, empty load statement for the given file name.
|
||||
func NewLoad(name string) *Load {
|
||||
return &Load{
|
||||
stmt: stmt{
|
||||
call: &bzl.CallExpr{
|
||||
X: &bzl.LiteralExpr{Token: "load"},
|
||||
List: []bzl.Expr{&bzl.StringExpr{Value: name}},
|
||||
expr: &bzl.LoadStmt{
|
||||
Module: &bzl.StringExpr{Value: name},
|
||||
ForceCompact: true,
|
||||
},
|
||||
},
|
||||
name: name,
|
||||
symbols: make(map[string]bzl.Expr),
|
||||
symbols: make(map[string]identPair),
|
||||
}
|
||||
}
|
||||
|
||||
func loadFromExpr(index int, call *bzl.CallExpr) *Load {
|
||||
func loadFromExpr(index int, loadStmt *bzl.LoadStmt) *Load {
|
||||
l := &Load{
|
||||
stmt: stmt{index: index, call: call},
|
||||
symbols: make(map[string]bzl.Expr),
|
||||
stmt: stmt{index: index, expr: loadStmt},
|
||||
name: loadStmt.Module.Value,
|
||||
symbols: make(map[string]identPair),
|
||||
}
|
||||
if len(call.List) == 0 {
|
||||
return nil
|
||||
}
|
||||
name, ok := call.List[0].(*bzl.StringExpr)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
l.name = name.Value
|
||||
for _, arg := range call.List[1:] {
|
||||
switch arg := arg.(type) {
|
||||
case *bzl.StringExpr:
|
||||
l.symbols[arg.Value] = arg
|
||||
case *bzl.BinaryExpr:
|
||||
x, ok := arg.X.(*bzl.LiteralExpr)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
if _, ok := arg.Y.(*bzl.StringExpr); !ok {
|
||||
return nil
|
||||
}
|
||||
l.symbols[x.Token] = arg
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
for i := range loadStmt.From {
|
||||
to, from := loadStmt.To[i], loadStmt.From[i]
|
||||
l.symbols[to.Name] = identPair{to: to, from: from}
|
||||
}
|
||||
return l
|
||||
}
|
||||
|
|
@ -339,7 +347,8 @@ func (l *Load) Has(sym string) bool {
|
|||
// doesn't matter.
|
||||
func (l *Load) Add(sym string) {
|
||||
if _, ok := l.symbols[sym]; !ok {
|
||||
l.symbols[sym] = &bzl.StringExpr{Value: sym}
|
||||
i := &bzl.Ident{Name: sym}
|
||||
l.symbols[sym] = identPair{to: i, from: i}
|
||||
l.updated = true
|
||||
}
|
||||
}
|
||||
|
|
@ -373,32 +382,32 @@ func (l *Load) sync() {
|
|||
}
|
||||
l.updated = false
|
||||
|
||||
args := make([]*bzl.StringExpr, 0, len(l.symbols))
|
||||
kwargs := make([]*bzl.BinaryExpr, 0, len(l.symbols))
|
||||
for _, e := range l.symbols {
|
||||
if a, ok := e.(*bzl.StringExpr); ok {
|
||||
args = append(args, a)
|
||||
// args1 and args2 are two different sort groups based on whether a remap of the identifier is present.
|
||||
var args1, args2, args []string
|
||||
for sym, pair := range l.symbols {
|
||||
if pair.from.Name == pair.to.Name {
|
||||
args1 = append(args1, sym)
|
||||
} else {
|
||||
kwargs = append(kwargs, e.(*bzl.BinaryExpr))
|
||||
args2 = append(args2, sym)
|
||||
}
|
||||
}
|
||||
sort.Slice(args, func(i, j int) bool {
|
||||
return args[i].Value < args[j].Value
|
||||
})
|
||||
sort.Slice(kwargs, func(i, j int) bool {
|
||||
return kwargs[i].X.(*bzl.StringExpr).Value < kwargs[j].Y.(*bzl.StringExpr).Value
|
||||
})
|
||||
sort.Strings(args1)
|
||||
sort.Strings(args2)
|
||||
args = append(args, args1...)
|
||||
args = append(args, args2...)
|
||||
|
||||
list := make([]bzl.Expr, 0, 1+len(l.symbols))
|
||||
list = append(list, l.call.List[0])
|
||||
for _, a := range args {
|
||||
list = append(list, a)
|
||||
loadStmt := l.expr.(*bzl.LoadStmt)
|
||||
loadStmt.Module.Value = l.name
|
||||
loadStmt.From = make([]*bzl.Ident, 0, len(args))
|
||||
loadStmt.To = make([]*bzl.Ident, 0, len(args))
|
||||
for _, sym := range args {
|
||||
pair := l.symbols[sym]
|
||||
loadStmt.From = append(loadStmt.From, pair.from)
|
||||
loadStmt.To = append(loadStmt.To, pair.to)
|
||||
if pair.from.Name != pair.to.Name {
|
||||
loadStmt.ForceCompact = false
|
||||
}
|
||||
}
|
||||
for _, a := range kwargs {
|
||||
list = append(list, a)
|
||||
}
|
||||
l.call.List = list
|
||||
l.call.ForceCompact = len(kwargs) == 0
|
||||
}
|
||||
|
||||
// Rule represents a rule statement within a build file.
|
||||
|
|
@ -413,14 +422,14 @@ type Rule struct {
|
|||
// NewRule creates a new, empty rule with the given kind and name.
|
||||
func NewRule(kind, name string) *Rule {
|
||||
nameAttr := &bzl.BinaryExpr{
|
||||
X: &bzl.LiteralExpr{Token: "name"},
|
||||
X: &bzl.Ident{Name: "name"},
|
||||
Y: &bzl.StringExpr{Value: name},
|
||||
Op: "=",
|
||||
}
|
||||
r := &Rule{
|
||||
stmt: stmt{
|
||||
call: &bzl.CallExpr{
|
||||
X: &bzl.LiteralExpr{Token: kind},
|
||||
expr: &bzl.CallExpr{
|
||||
X: &bzl.Ident{Name: kind},
|
||||
List: []bzl.Expr{nameAttr},
|
||||
},
|
||||
},
|
||||
|
|
@ -436,18 +445,18 @@ func ruleFromExpr(index int, expr bzl.Expr) *Rule {
|
|||
if !ok {
|
||||
return nil
|
||||
}
|
||||
x, ok := call.X.(*bzl.LiteralExpr)
|
||||
x, ok := call.X.(*bzl.Ident)
|
||||
if !ok {
|
||||
return nil
|
||||
}
|
||||
kind := x.Token
|
||||
kind := x.Name
|
||||
var args []bzl.Expr
|
||||
attrs := make(map[string]*bzl.BinaryExpr)
|
||||
for _, arg := range call.List {
|
||||
attr, ok := arg.(*bzl.BinaryExpr)
|
||||
if ok && attr.Op == "=" {
|
||||
key := attr.X.(*bzl.LiteralExpr) // required by parser
|
||||
attrs[key.Token] = attr
|
||||
key := attr.X.(*bzl.Ident) // required by parser
|
||||
attrs[key.Name] = attr
|
||||
} else {
|
||||
args = append(args, arg)
|
||||
}
|
||||
|
|
@ -455,7 +464,7 @@ func ruleFromExpr(index int, expr bzl.Expr) *Rule {
|
|||
return &Rule{
|
||||
stmt: stmt{
|
||||
index: index,
|
||||
call: call,
|
||||
expr: call,
|
||||
},
|
||||
kind: kind,
|
||||
args: args,
|
||||
|
|
@ -468,22 +477,27 @@ func ruleFromExpr(index int, expr bzl.Expr) *Rule {
|
|||
// that are kept should not be modified. This does not check whether
|
||||
// subexpressions within the rule should be kept.
|
||||
func (r *Rule) ShouldKeep() bool {
|
||||
return ShouldKeep(r.call)
|
||||
return ShouldKeep(r.expr)
|
||||
}
|
||||
|
||||
// Kind returns the kind of rule this is (for example, "go_library").
|
||||
func (r *Rule) Kind() string {
|
||||
return r.kind
|
||||
}
|
||||
|
||||
// SetKind changes the kind of rule this is.
|
||||
func (r *Rule) SetKind(kind string) {
|
||||
r.kind = kind
|
||||
r.updated = true
|
||||
}
|
||||
|
||||
// Name returns the value of the rule's "name" attribute if it is a string
|
||||
// or "" if the attribute does not exist or is not a string.
|
||||
func (r *Rule) Name() string {
|
||||
return r.AttrString("name")
|
||||
}
|
||||
|
||||
// SetName sets the value of the rule's "name" attribute.
|
||||
func (r *Rule) SetName(name string) {
|
||||
r.SetAttr("name", name)
|
||||
}
|
||||
|
|
@ -562,7 +576,7 @@ func (r *Rule) SetAttr(key string, value interface{}) {
|
|||
attr.Y = y
|
||||
} else {
|
||||
r.attrs[key] = &bzl.BinaryExpr{
|
||||
X: &bzl.LiteralExpr{Token: key},
|
||||
X: &bzl.Ident{Name: key},
|
||||
Y: y,
|
||||
Op: "=",
|
||||
}
|
||||
|
|
@ -622,18 +636,6 @@ func (r *Rule) IsEmpty(info KindInfo) bool {
|
|||
return true
|
||||
}
|
||||
|
||||
func (r *Rule) IsEmptyOld(attrs map[string]bool) bool {
|
||||
if attrs == nil {
|
||||
return false
|
||||
}
|
||||
for k := range attrs {
|
||||
if _, ok := r.attrs[k]; ok {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (r *Rule) sync() {
|
||||
if !r.updated {
|
||||
return
|
||||
|
|
@ -646,8 +648,8 @@ func (r *Rule) sync() {
|
|||
}
|
||||
}
|
||||
|
||||
call := r.call
|
||||
call.X.(*bzl.LiteralExpr).Token = r.kind
|
||||
call := r.expr.(*bzl.CallExpr)
|
||||
call.X.(*bzl.Ident).Name = r.kind
|
||||
|
||||
list := make([]bzl.Expr, 0, len(r.args)+len(r.attrs))
|
||||
list = append(list, r.args...)
|
||||
|
|
@ -655,7 +657,7 @@ func (r *Rule) sync() {
|
|||
list = append(list, attr)
|
||||
}
|
||||
sortedAttrs := list[len(r.args):]
|
||||
key := func(e bzl.Expr) string { return e.(*bzl.BinaryExpr).X.(*bzl.LiteralExpr).Token }
|
||||
key := func(e bzl.Expr) string { return e.(*bzl.BinaryExpr).X.(*bzl.Ident).Name }
|
||||
sort.SliceStable(sortedAttrs, func(i, j int) bool {
|
||||
ki := key(sortedAttrs[i])
|
||||
kj := key(sortedAttrs[j])
|
||||
|
|
@ -665,7 +667,7 @@ func (r *Rule) sync() {
|
|||
return ki < kj
|
||||
})
|
||||
|
||||
r.call.List = list
|
||||
call.List = list
|
||||
r.updated = false
|
||||
}
|
||||
|
||||
|
|
@ -681,6 +683,17 @@ func ShouldKeep(e bzl.Expr) bool {
|
|||
return false
|
||||
}
|
||||
|
||||
// CheckInternalVisibility overrides the given visibility if the package is
|
||||
// internal.
|
||||
func CheckInternalVisibility(rel, visibility string) string {
|
||||
if i := strings.LastIndex(rel, "/internal/"); i >= 0 {
|
||||
visibility = fmt.Sprintf("//%s:__subpackages__", rel[:i])
|
||||
} else if strings.HasPrefix(rel, "internal/") {
|
||||
visibility = "//:__subpackages__"
|
||||
}
|
||||
return visibility
|
||||
}
|
||||
|
||||
type byAttrName []KeyValue
|
||||
|
||||
var _ sort.Interface = byAttrName{}
|
||||
|
|
@ -15,13 +15,6 @@ limitations under the License.
|
|||
|
||||
package rule
|
||||
|
||||
// MergableAttrs is the set of attribute names for each kind of rule that
|
||||
// may be merged. When an attribute is mergeable, a generated value may
|
||||
// replace or augment an existing value. If an attribute is not mergeable,
|
||||
// existing values are preserved. Generated non-mergeable attributes may
|
||||
// still be added to a rule if there is no corresponding existing attribute.
|
||||
type MergeableAttrs map[string]map[string]bool
|
||||
|
||||
// LoadInfo describes a file that Gazelle knows about and the symbols
|
||||
// it defines.
|
||||
type LoadInfo struct {
|
||||
|
|
@ -40,12 +40,12 @@ type GlobValue struct {
|
|||
// ExprFromValue converts a value into an expression that can be written into
|
||||
// a Bazel build file. The following types of values can be converted:
|
||||
//
|
||||
// * bools, integers, floats, strings.
|
||||
// * slices, arrays (converted to lists).
|
||||
// * maps (converted to select expressions; keys must be rules in
|
||||
// @io_bazel_rules_go//go/platform).
|
||||
// * GlobValue (converted to glob expressions).
|
||||
// * PlatformStrings (converted to a concatenation of a list and selects).
|
||||
// * bools, integers, floats, strings.
|
||||
// * slices, arrays (converted to lists).
|
||||
// * maps (converted to select expressions; keys must be rules in
|
||||
// @io_bazel_rules_go//go/platform).
|
||||
// * GlobValue (converted to glob expressions).
|
||||
// * PlatformStrings (converted to a concatenation of a list and selects).
|
||||
//
|
||||
// Converting unsupported types will cause a panic.
|
||||
func ExprFromValue(val interface{}) bzl.Expr {
|
||||
|
|
@ -98,7 +98,7 @@ func ExprFromValue(val interface{}) bzl.Expr {
|
|||
Value: &bzl.ListExpr{},
|
||||
})
|
||||
sel := &bzl.CallExpr{
|
||||
X: &bzl.LiteralExpr{Token: "select"},
|
||||
X: &bzl.Ident{Name: "select"},
|
||||
List: []bzl.Expr{&bzl.DictExpr{List: args, ForceMultiLine: true}},
|
||||
}
|
||||
return sel
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
load("@io_bazel_rules_go//go:def.bzl", "go_library")
|
||||
|
||||
go_library(
|
||||
name = "go_default_library",
|
||||
srcs = [
|
||||
"config.go",
|
||||
"walk.go",
|
||||
],
|
||||
importmap = "k8s.io/kops/vendor/github.com/bazelbuild/bazel-gazelle/walk",
|
||||
importpath = "github.com/bazelbuild/bazel-gazelle/walk",
|
||||
visibility = ["//visibility:public"],
|
||||
deps = [
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/config:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/flag:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/pathtools:go_default_library",
|
||||
"//vendor/github.com/bazelbuild/bazel-gazelle/rule:go_default_library",
|
||||
],
|
||||
)
|
||||
|
|
@ -0,0 +1,83 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 walk
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"path"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
gzflag "github.com/bazelbuild/bazel-gazelle/flag"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
type walkConfig struct {
|
||||
excludes []string
|
||||
ignore bool
|
||||
follow []string
|
||||
}
|
||||
|
||||
const walkName = "_walk"
|
||||
|
||||
func getWalkConfig(c *config.Config) *walkConfig {
|
||||
return c.Exts[walkName].(*walkConfig)
|
||||
}
|
||||
|
||||
func (wc *walkConfig) isExcluded(rel, base string) bool {
|
||||
f := path.Join(rel, base)
|
||||
for _, x := range wc.excludes {
|
||||
if f == x {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type Configurer struct{}
|
||||
|
||||
func (_ *Configurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) {
|
||||
wc := &walkConfig{}
|
||||
c.Exts[walkName] = wc
|
||||
fs.Var(&gzflag.MultiFlag{Values: &wc.excludes}, "exclude", "Path to file or directory that should be ignored (may be repeated)")
|
||||
}
|
||||
|
||||
func (_ *Configurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error { return nil }
|
||||
|
||||
func (_ *Configurer) KnownDirectives() []string {
|
||||
return []string{"exclude", "follow", "ignore"}
|
||||
}
|
||||
|
||||
func (_ *Configurer) Configure(c *config.Config, rel string, f *rule.File) {
|
||||
wc := getWalkConfig(c)
|
||||
wcCopy := &walkConfig{}
|
||||
*wcCopy = *wc
|
||||
wcCopy.ignore = false
|
||||
|
||||
if f != nil {
|
||||
for _, d := range f.Directives {
|
||||
switch d.Key {
|
||||
case "exclude":
|
||||
wcCopy.excludes = append(wcCopy.excludes, path.Join(rel, d.Value))
|
||||
case "follow":
|
||||
wcCopy.follow = append(wcCopy.follow, path.Join(rel, d.Value))
|
||||
case "ignore":
|
||||
wcCopy.ignore = true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
c.Exts[walkName] = wcCopy
|
||||
}
|
||||
|
|
@ -0,0 +1,328 @@
|
|||
/* Copyright 2018 The Bazel Authors. All rights reserved.
|
||||
|
||||
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 walk provides customizable functionality for visiting each
|
||||
// subdirectory in a directory tree.
|
||||
package walk
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/bazelbuild/bazel-gazelle/config"
|
||||
"github.com/bazelbuild/bazel-gazelle/pathtools"
|
||||
"github.com/bazelbuild/bazel-gazelle/rule"
|
||||
)
|
||||
|
||||
// Mode determines which directories Walk visits and which directories
|
||||
// should be updated.
|
||||
type Mode int
|
||||
|
||||
const (
|
||||
// In VisitAllUpdateSubdirsMode, Walk visits every directory in the
|
||||
// repository. The directories given to Walk and their subdirectories are
|
||||
// updated.
|
||||
VisitAllUpdateSubdirsMode Mode = iota
|
||||
|
||||
// In VisitAllUpdateDirsMode, Walk visits every directory in the repository.
|
||||
// Only the directories given to Walk are updated (not their subdirectories).
|
||||
VisitAllUpdateDirsMode
|
||||
|
||||
// In UpdateDirsMode, Walk only visits and updates directories given to Walk.
|
||||
// Build files in parent directories are read in order to produce a complete
|
||||
// configuration, but the callback is not called for parent directories.
|
||||
UpdateDirsMode
|
||||
)
|
||||
|
||||
// WalkFunc is a callback called by Walk in each visited directory.
|
||||
//
|
||||
// dir is the absolute file system path to the directory being visited.
|
||||
//
|
||||
// rel is the relative slash-separated path to the directory from the
|
||||
// repository root. Will be "" for the repository root directory itself.
|
||||
//
|
||||
// c is the configuration for the current directory. This may have been
|
||||
// modified by directives in the directory's build file.
|
||||
//
|
||||
// update is true when the build file may be updated.
|
||||
//
|
||||
// f is the existing build file in the directory. Will be nil if there
|
||||
// was no file.
|
||||
//
|
||||
// subdirs is a list of base names of subdirectories within dir, not
|
||||
// including excluded files.
|
||||
//
|
||||
// regularFiles is a list of base names of regular files within dir, not
|
||||
// including excluded files.
|
||||
//
|
||||
// genFiles is a list of names of generated files, found by reading
|
||||
// "out" and "outs" attributes of rules in f.
|
||||
type WalkFunc func(dir, rel string, c *config.Config, update bool, f *rule.File, subdirs, regularFiles, genFiles []string)
|
||||
|
||||
// Walk traverses the directory tree rooted at c.RepoRoot. Walk visits
|
||||
// subdirectories in depth-first post-order.
|
||||
//
|
||||
// When Walk visits a directory, it lists the files and subdirectories within
|
||||
// that directory. If a build file is present, Walk reads the build file and
|
||||
// applies any directives to the configuration (a copy of the parent directory's
|
||||
// configuration is made, and the copy is modified). After visiting
|
||||
// subdirectories, the callback wf may be called, depending on the mode.
|
||||
//
|
||||
// c is the root configuration to start with. This includes changes made by
|
||||
// command line flags, but not by the root build file. This configuration
|
||||
// should not be modified.
|
||||
//
|
||||
// cexts is a list of configuration extensions. When visiting a directory,
|
||||
// before visiting subdirectories, Walk makes a copy of the parent configuration
|
||||
// and Configure for each extension on the copy. If Walk sees a directive
|
||||
// that is not listed in KnownDirectives of any extension, an error will
|
||||
// be logged.
|
||||
//
|
||||
// dirs is a list of absolute, canonical file system paths of directories
|
||||
// to visit.
|
||||
//
|
||||
// mode determines whether subdirectories of dirs should be visited recursively,
|
||||
// when the wf callback should be called, and when the "update" argument
|
||||
// to the wf callback should be set.
|
||||
//
|
||||
// wf is a function that may be called in each directory.
|
||||
func Walk(c *config.Config, cexts []config.Configurer, dirs []string, mode Mode, wf WalkFunc) {
|
||||
knownDirectives := make(map[string]bool)
|
||||
for _, cext := range cexts {
|
||||
for _, d := range cext.KnownDirectives() {
|
||||
knownDirectives[d] = true
|
||||
}
|
||||
}
|
||||
|
||||
symlinks := symlinkResolver{visited: []string{c.RepoRoot}}
|
||||
|
||||
updateRels := buildUpdateRelMap(c.RepoRoot, dirs)
|
||||
|
||||
var visit func(*config.Config, string, string, bool)
|
||||
visit = func(c *config.Config, dir, rel string, updateParent bool) {
|
||||
haveError := false
|
||||
|
||||
// TODO: OPT: ReadDir stats all the files, which is slow. We just care about
|
||||
// names and modes, so we should use something like
|
||||
// golang.org/x/tools/internal/fastwalk to speed this up.
|
||||
files, err := ioutil.ReadDir(dir)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
return
|
||||
}
|
||||
|
||||
f, err := loadBuildFile(c, rel, dir, files)
|
||||
if err != nil {
|
||||
log.Print(err)
|
||||
haveError = true
|
||||
}
|
||||
|
||||
c = configure(cexts, knownDirectives, c, rel, f)
|
||||
wc := getWalkConfig(c)
|
||||
|
||||
var subdirs, regularFiles []string
|
||||
for _, fi := range files {
|
||||
base := fi.Name()
|
||||
switch {
|
||||
case base == "" || wc.isExcluded(rel, base):
|
||||
continue
|
||||
|
||||
case fi.IsDir() || fi.Mode()&os.ModeSymlink != 0 && symlinks.follow(c, dir, rel, base):
|
||||
subdirs = append(subdirs, base)
|
||||
|
||||
default:
|
||||
regularFiles = append(regularFiles, base)
|
||||
}
|
||||
}
|
||||
|
||||
shouldUpdate := shouldUpdate(rel, mode, updateParent, updateRels)
|
||||
for _, sub := range subdirs {
|
||||
if subRel := path.Join(rel, sub); shouldVisit(subRel, mode, updateRels) {
|
||||
visit(c, filepath.Join(dir, sub), subRel, shouldUpdate)
|
||||
}
|
||||
}
|
||||
|
||||
update := !haveError && !wc.ignore && shouldUpdate
|
||||
if shouldCall(rel, mode, updateRels) {
|
||||
genFiles := findGenFiles(wc, f)
|
||||
wf(dir, rel, c, update, f, subdirs, regularFiles, genFiles)
|
||||
}
|
||||
}
|
||||
visit(c, c.RepoRoot, "", false)
|
||||
}
|
||||
|
||||
// buildUpdateRelMap builds a table of prefixes, used to determine which
|
||||
// directories to update and visit.
|
||||
//
|
||||
// root and dirs must be absolute, canonical file paths. Each entry in dirs
|
||||
// must be a subdirectory of root. The caller is responsible for checking this.
|
||||
//
|
||||
// buildUpdateRelMap returns a map from slash-separated paths relative to the
|
||||
// root directory ("" for the root itself) to a boolean indicating whether
|
||||
// the directory should be updated.
|
||||
func buildUpdateRelMap(root string, dirs []string) map[string]bool {
|
||||
relMap := make(map[string]bool)
|
||||
for _, dir := range dirs {
|
||||
rel, _ := filepath.Rel(root, dir)
|
||||
rel = filepath.ToSlash(rel)
|
||||
if rel == "." {
|
||||
rel = ""
|
||||
}
|
||||
|
||||
i := 0
|
||||
for {
|
||||
next := strings.IndexByte(rel[i:], '/') + i
|
||||
if next-i < 0 {
|
||||
relMap[rel] = true
|
||||
break
|
||||
}
|
||||
prefix := rel[:next]
|
||||
relMap[prefix] = relMap[prefix] // set to false if not present
|
||||
i = next + 1
|
||||
}
|
||||
}
|
||||
return relMap
|
||||
}
|
||||
|
||||
// shouldCall returns true if Walk should call the callback in the
|
||||
// directory rel.
|
||||
func shouldCall(rel string, mode Mode, updateRels map[string]bool) bool {
|
||||
return mode != UpdateDirsMode || updateRels[rel]
|
||||
}
|
||||
|
||||
// shouldUpdate returns true if Walk should pass true to the callback's update
|
||||
// parameter in the directory rel. This indicates the build file should be
|
||||
// updated.
|
||||
func shouldUpdate(rel string, mode Mode, updateParent bool, updateRels map[string]bool) bool {
|
||||
return mode == VisitAllUpdateSubdirsMode && updateParent || updateRels[rel]
|
||||
}
|
||||
|
||||
// shouldVisit returns true if Walk should visit the subdirectory rel.
|
||||
func shouldVisit(rel string, mode Mode, updateRels map[string]bool) bool {
|
||||
if mode != UpdateDirsMode {
|
||||
return true
|
||||
}
|
||||
_, ok := updateRels[rel]
|
||||
return ok
|
||||
}
|
||||
|
||||
func loadBuildFile(c *config.Config, pkg, dir string, files []os.FileInfo) (*rule.File, error) {
|
||||
var err error
|
||||
readDir := dir
|
||||
readFiles := files
|
||||
if c.ReadBuildFilesDir != "" {
|
||||
readDir = filepath.Join(c.ReadBuildFilesDir, filepath.FromSlash(pkg))
|
||||
readFiles, err = ioutil.ReadDir(readDir)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
path := rule.MatchBuildFileName(readDir, c.ValidBuildFileNames, readFiles)
|
||||
if path == "" {
|
||||
return nil, nil
|
||||
}
|
||||
return rule.LoadFile(path, pkg)
|
||||
}
|
||||
|
||||
func configure(cexts []config.Configurer, knownDirectives map[string]bool, c *config.Config, rel string, f *rule.File) *config.Config {
|
||||
if rel != "" {
|
||||
c = c.Clone()
|
||||
}
|
||||
if f != nil {
|
||||
for _, d := range f.Directives {
|
||||
if !knownDirectives[d.Key] {
|
||||
log.Printf("%s: unknown directive: gazelle:%s", f.Path, d.Key)
|
||||
}
|
||||
}
|
||||
}
|
||||
for _, cext := range cexts {
|
||||
cext.Configure(c, rel, f)
|
||||
}
|
||||
return c
|
||||
}
|
||||
|
||||
func findGenFiles(wc *walkConfig, f *rule.File) []string {
|
||||
if f == nil {
|
||||
return nil
|
||||
}
|
||||
var strs []string
|
||||
for _, r := range f.Rules {
|
||||
for _, key := range []string{"out", "outs"} {
|
||||
if s := r.AttrString(key); s != "" {
|
||||
strs = append(strs, s)
|
||||
} else if ss := r.AttrStrings(key); len(ss) > 0 {
|
||||
strs = append(strs, ss...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var genFiles []string
|
||||
for _, s := range strs {
|
||||
if !wc.isExcluded(f.Pkg, s) {
|
||||
genFiles = append(genFiles, s)
|
||||
}
|
||||
}
|
||||
return genFiles
|
||||
}
|
||||
|
||||
type symlinkResolver struct {
|
||||
visited []string
|
||||
}
|
||||
|
||||
// Decide if symlink dir/base should be followed.
|
||||
func (r *symlinkResolver) follow(c *config.Config, dir, rel, base string) bool {
|
||||
if dir == c.RepoRoot && strings.HasPrefix(base, "bazel-") {
|
||||
// Links such as bazel-<workspace>, bazel-out, bazel-genfiles are created by
|
||||
// Bazel to point to internal build directories.
|
||||
return false
|
||||
}
|
||||
|
||||
// See if the user has explicitly directed us to follow the link.
|
||||
wc := getWalkConfig(c)
|
||||
linkRel := path.Join(rel, base)
|
||||
for _, follow := range wc.follow {
|
||||
if linkRel == follow {
|
||||
return true
|
||||
}
|
||||
}
|
||||
|
||||
// See if the symlink points to a tree that has been already visited.
|
||||
fullpath := filepath.Join(dir, base)
|
||||
dest, err := filepath.EvalSymlinks(fullpath)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
if !filepath.IsAbs(dest) {
|
||||
dest, err = filepath.Abs(filepath.Join(dir, dest))
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
}
|
||||
for _, p := range r.visited {
|
||||
if pathtools.HasPrefix(dest, p) || pathtools.HasPrefix(p, dest) {
|
||||
return false
|
||||
}
|
||||
}
|
||||
r.visited = append(r.visited, dest)
|
||||
stat, err := os.Stat(fullpath)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
return stat.IsDir()
|
||||
}
|
||||
|
|
@ -15,38 +15,86 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
|||
limitations under the License.
|
||||
"""
|
||||
|
||||
load(
|
||||
"@io_bazel_rules_go//go/private:providers.bzl",
|
||||
"GoSource",
|
||||
)
|
||||
|
||||
_GO_YACC_TOOL = "@org_golang_x_tools//cmd/goyacc"
|
||||
|
||||
def go_yacc(src, out, visibility=None):
|
||||
"""Runs go tool yacc -o $out $src."""
|
||||
native.genrule(
|
||||
name = src + ".go_yacc",
|
||||
srcs = [src],
|
||||
outs = [out],
|
||||
tools = [_GO_YACC_TOOL],
|
||||
cmd = ("export GOROOT=$$(dirname $(location " + _GO_YACC_TOOL + "))/..;" +
|
||||
" $(location " + _GO_YACC_TOOL + ") " +
|
||||
" -o $(location " + out + ") $(SRCS)"),
|
||||
visibility = visibility,
|
||||
local = 1,
|
||||
)
|
||||
def go_yacc(src, out, visibility = None):
|
||||
"""Runs go tool yacc -o $out $src."""
|
||||
native.genrule(
|
||||
name = src + ".go_yacc",
|
||||
srcs = [src],
|
||||
outs = [out],
|
||||
tools = [_GO_YACC_TOOL],
|
||||
cmd = ("export GOROOT=$$(dirname $(location " + _GO_YACC_TOOL + "))/..;" +
|
||||
" $(location " + _GO_YACC_TOOL + ") " +
|
||||
" -o $(location " + out + ") $(SRCS) > /dev/null"),
|
||||
visibility = visibility,
|
||||
local = 1,
|
||||
)
|
||||
|
||||
def _extract_go_src(ctx):
|
||||
"""Thin rule that exposes the GoSource from a go_library."""
|
||||
return [DefaultInfo(files = depset(ctx.attr.library[GoSource].srcs))]
|
||||
|
||||
extract_go_src = rule(
|
||||
implementation = _extract_go_src,
|
||||
attrs = {
|
||||
"library": attr.label(
|
||||
providers = [GoSource],
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
def genfile_check_test(src, gen):
|
||||
"""Asserts that any checked-in generated code matches regen."""
|
||||
if not src:
|
||||
fail("src is required", "src")
|
||||
if not gen:
|
||||
fail("gen is required", "gen")
|
||||
native.genrule(
|
||||
name = src + "_checksh",
|
||||
outs = [src + "_check.sh"],
|
||||
cmd = "echo 'diff $$@' > $@",
|
||||
)
|
||||
native.sh_test(
|
||||
name = src + "_checkshtest",
|
||||
size = "small",
|
||||
srcs = [src + "_check.sh"],
|
||||
data = [src, gen],
|
||||
args = ["$(location " + src + ")", "$(location " + gen + ")"],
|
||||
)
|
||||
|
||||
"""Asserts that any checked-in generated code matches bazel gen."""
|
||||
if not src:
|
||||
fail("src is required", "src")
|
||||
if not gen:
|
||||
fail("gen is required", "gen")
|
||||
native.genrule(
|
||||
name = src + "_checksh",
|
||||
outs = [src + "_check.sh"],
|
||||
cmd = "echo 'diff $$@' > $@",
|
||||
)
|
||||
native.sh_test(
|
||||
name = src + "_checkshtest",
|
||||
size = "small",
|
||||
srcs = [src + "_check.sh"],
|
||||
data = [src, gen],
|
||||
args = ["$(location " + src + ")", "$(location " + gen + ")"],
|
||||
)
|
||||
|
||||
# magic copy rule used to update the checked-in version
|
||||
native.genrule(
|
||||
name = src + "_copysh",
|
||||
srcs = [gen],
|
||||
outs = [src + "copy.sh"],
|
||||
cmd = "echo 'cp $${BUILD_WORKSPACE_DIRECTORY}/$(location " + gen +
|
||||
") $${BUILD_WORKSPACE_DIRECTORY}/" + native.package_name() + "/" + src + "' > $@",
|
||||
)
|
||||
native.sh_binary(
|
||||
name = src + "_copy",
|
||||
srcs = [src + "_copysh"],
|
||||
data = [gen],
|
||||
)
|
||||
|
||||
def go_proto_checkedin_test(src, proto = "go_default_library"):
|
||||
"""Asserts that any checked-in .pb.go code matches bazel gen."""
|
||||
genfile = src + "_genfile"
|
||||
extract_go_src(
|
||||
name = genfile + "go",
|
||||
library = proto,
|
||||
)
|
||||
|
||||
# TODO(pmbethe09): why is the extra copy needed?
|
||||
native.genrule(
|
||||
name = genfile,
|
||||
srcs = [genfile + "go"],
|
||||
outs = [genfile + ".go"],
|
||||
cmd = "cp $< $@",
|
||||
)
|
||||
genfile_check_test(src, genfile)
|
||||
|
|
|
|||
|
|
@ -20,30 +20,139 @@ package build
|
|||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
"sort"
|
||||
"strings"
|
||||
"unicode/utf8"
|
||||
)
|
||||
|
||||
// Parse parses the input data and returns the corresponding parse tree.
|
||||
// FileType represents a type of a file (default (for .bzl files), BUILD, or WORKSPACE).
|
||||
// Certain formatting or refactoring rules can be applied to several file types, so they support
|
||||
// bitwise operations: `type1 | type2` can represent a scope (e.g. BUILD and WORKSPACE files) and
|
||||
// `scope & fileType` can be used to check whether a file type belongs to a scope.
|
||||
type FileType int
|
||||
|
||||
const (
|
||||
// TypeDefault represents .bzl or other Starlark files
|
||||
TypeDefault FileType = 1 << iota
|
||||
// TypeBuild represents BUILD files
|
||||
TypeBuild
|
||||
// TypeWorkspace represents WORKSPACE files
|
||||
TypeWorkspace
|
||||
)
|
||||
|
||||
func (t FileType) String() string {
|
||||
switch t {
|
||||
case TypeDefault:
|
||||
return ".bzl"
|
||||
case TypeBuild:
|
||||
return "BUILD"
|
||||
case TypeWorkspace:
|
||||
return "WORKSPACE"
|
||||
}
|
||||
return "unknown"
|
||||
}
|
||||
|
||||
// ParseBuild parses a file, marks it as a BUILD file and returns the corresponding parse tree.
|
||||
//
|
||||
// The filename is used only for generating error messages.
|
||||
func Parse(filename string, data []byte) (*File, error) {
|
||||
func ParseBuild(filename string, data []byte) (*File, error) {
|
||||
in := newInput(filename, data)
|
||||
return in.parse()
|
||||
f, err := in.parse()
|
||||
if f != nil {
|
||||
f.Type = TypeBuild
|
||||
}
|
||||
return f, err
|
||||
}
|
||||
|
||||
// ParseWorkspace parses a file, marks it as a WORKSPACE file and returns the corresponding parse tree.
|
||||
//
|
||||
// The filename is used only for generating error messages.
|
||||
func ParseWorkspace(filename string, data []byte) (*File, error) {
|
||||
in := newInput(filename, data)
|
||||
f, err := in.parse()
|
||||
if f != nil {
|
||||
f.Type = TypeWorkspace
|
||||
}
|
||||
return f, err
|
||||
}
|
||||
|
||||
// ParseDefault parses a file, marks it as not a BUILD file (e.g. bzl file) and returns the corresponding parse tree.
|
||||
//
|
||||
// The filename is used only for generating error messages.
|
||||
func ParseDefault(filename string, data []byte) (*File, error) {
|
||||
in := newInput(filename, data)
|
||||
f, err := in.parse()
|
||||
if f != nil {
|
||||
f.Type = TypeDefault
|
||||
}
|
||||
return f, err
|
||||
}
|
||||
|
||||
func getFileType(filename string) FileType {
|
||||
if filename == "" { // stdin
|
||||
return TypeBuild // For compatibility
|
||||
}
|
||||
basename := strings.ToLower(filepath.Base(filename))
|
||||
ext := filepath.Ext(basename)
|
||||
if ext == ".bzl" || ext == ".sky" {
|
||||
return TypeDefault
|
||||
}
|
||||
base := basename[:len(basename)-len(ext)]
|
||||
switch {
|
||||
case ext == ".build" || base == "build":
|
||||
return TypeBuild
|
||||
case ext == ".workspace" || base == "workspace":
|
||||
return TypeWorkspace
|
||||
}
|
||||
return TypeDefault
|
||||
}
|
||||
|
||||
// Parse parses the input data and returns the corresponding parse tree.
|
||||
//
|
||||
// Uses the filename to detect the formatting type (build, workspace, or default) and calls
|
||||
// ParseBuild, ParseWorkspace, or ParseDefault correspondingly.
|
||||
func Parse(filename string, data []byte) (*File, error) {
|
||||
switch getFileType(filename) {
|
||||
case TypeBuild:
|
||||
return ParseBuild(filename, data)
|
||||
case TypeWorkspace:
|
||||
return ParseWorkspace(filename, data)
|
||||
}
|
||||
return ParseDefault(filename, data)
|
||||
}
|
||||
|
||||
// ParseError contains information about the error encountered during parsing.
|
||||
type ParseError struct {
|
||||
Message string
|
||||
Filename string
|
||||
Pos Position
|
||||
}
|
||||
|
||||
// Error returns a string representation of the parse error.
|
||||
func (e ParseError) Error() string {
|
||||
filename := e.Filename
|
||||
if filename == "" {
|
||||
filename = "<stdin>"
|
||||
}
|
||||
return fmt.Sprintf("%s:%d:%d: %v", filename, e.Pos.Line, e.Pos.LineRune, e.Message)
|
||||
}
|
||||
|
||||
// An input represents a single input file being parsed.
|
||||
type input struct {
|
||||
// Lexing state.
|
||||
filename string // name of input file, for errors
|
||||
complete []byte // entire input
|
||||
remaining []byte // remaining input
|
||||
token []byte // token being scanned
|
||||
lastToken string // most recently returned token, for error messages
|
||||
pos Position // current input position
|
||||
comments []Comment // accumulated comments
|
||||
endRule int // position of end of current rule
|
||||
depth int // nesting of [ ] { } ( )
|
||||
filename string // name of input file, for errors
|
||||
complete []byte // entire input
|
||||
remaining []byte // remaining input
|
||||
token []byte // token being scanned
|
||||
lastToken string // most recently returned token, for error messages
|
||||
pos Position // current input position
|
||||
lineComments []Comment // accumulated line comments
|
||||
suffixComments []Comment // accumulated suffix comments
|
||||
depth int // nesting of [ ] { } ( )
|
||||
cleanLine bool // true if the current line only contains whitespace before the current position
|
||||
indent int // current line indentation in spaces
|
||||
indents []int // stack of indentation levels in spaces
|
||||
|
||||
// Parser state.
|
||||
file *File // returned top-level syntax tree
|
||||
|
|
@ -55,14 +164,25 @@ type input struct {
|
|||
}
|
||||
|
||||
func newInput(filename string, data []byte) *input {
|
||||
// The syntax requires that each simple statement ends with '\n', however it's optional at EOF.
|
||||
// If `data` doesn't end with '\n' we add it here to keep parser simple.
|
||||
// It shouldn't affect neither the parsed tree nor its formatting.
|
||||
data = append(data, '\n')
|
||||
|
||||
return &input{
|
||||
filename: filename,
|
||||
complete: data,
|
||||
remaining: data,
|
||||
pos: Position{Line: 1, LineRune: 1, Byte: 0},
|
||||
cleanLine: true,
|
||||
indents: []int{0},
|
||||
}
|
||||
}
|
||||
|
||||
func (in *input) currentIndent() int {
|
||||
return in.indents[len(in.indents)-1]
|
||||
}
|
||||
|
||||
// parse parses the input file.
|
||||
func (in *input) parse() (f *File, err error) {
|
||||
// The parser panics for both routine errors like syntax errors
|
||||
|
|
@ -74,7 +194,7 @@ func (in *input) parse() (f *File, err error) {
|
|||
if e == in.parseError {
|
||||
err = in.parseError
|
||||
} else {
|
||||
err = fmt.Errorf("%s:%d:%d: internal error: %v", in.filename, in.pos.Line, in.pos.LineRune, e)
|
||||
err = ParseError{Message: fmt.Sprintf("internal error: %v", e), Filename: in.filename, Pos: in.pos}
|
||||
}
|
||||
}
|
||||
}()
|
||||
|
|
@ -99,7 +219,7 @@ func (in *input) Error(s string) {
|
|||
if s == "syntax error" && in.lastToken != "" {
|
||||
s += " near " + in.lastToken
|
||||
}
|
||||
in.parseError = fmt.Errorf("%s:%d:%d: %v", in.filename, in.pos.Line, in.pos.LineRune, s)
|
||||
in.parseError = ParseError{Message: s, Filename: in.filename, Pos: in.pos}
|
||||
panic(in.parseError)
|
||||
}
|
||||
|
||||
|
|
@ -169,45 +289,24 @@ func (in *input) Lex(val *yySymType) int {
|
|||
// Skip past spaces, stopping at non-space or EOF.
|
||||
countNL := 0 // number of newlines we've skipped past
|
||||
for !in.eof() {
|
||||
// The parser does not track indentation, because for the most part
|
||||
// BUILD expressions don't care about how they are indented.
|
||||
// However, we do need to be able to distinguish
|
||||
//
|
||||
// x = y[0]
|
||||
//
|
||||
// from the occasional
|
||||
//
|
||||
// x = y
|
||||
// [0]
|
||||
//
|
||||
// To handle this one case, when we reach the beginning of a
|
||||
// top-level BUILD expression, we scan forward to see where
|
||||
// it should end and record the number of input bytes remaining
|
||||
// at that endpoint. When we reach that point in the input, we
|
||||
// insert an implicit semicolon to force the two expressions
|
||||
// to stay separate.
|
||||
//
|
||||
if in.endRule != 0 && len(in.remaining) == in.endRule {
|
||||
in.endRule = 0
|
||||
in.lastToken = "implicit ;"
|
||||
val.tok = ";"
|
||||
return ';'
|
||||
}
|
||||
|
||||
// Skip over spaces. Count newlines so we can give the parser
|
||||
// information about where top-level blank lines are,
|
||||
// for top-level comment assignment.
|
||||
c := in.peekRune()
|
||||
if c == ' ' || c == '\t' || c == '\r' || c == '\n' {
|
||||
if c == '\n' && in.endRule == 0 {
|
||||
// Not in a rule. Tell parser about top-level blank line.
|
||||
in.startToken(val)
|
||||
in.readRune()
|
||||
in.endToken(val)
|
||||
return '\n'
|
||||
}
|
||||
if c == '\n' {
|
||||
in.indent = 0
|
||||
in.cleanLine = true
|
||||
if in.depth == 0 {
|
||||
// Not in a statememt. Tell parser about top-level blank line.
|
||||
in.startToken(val)
|
||||
in.readRune()
|
||||
in.endToken(val)
|
||||
return '\n'
|
||||
}
|
||||
countNL++
|
||||
} else if c == ' ' && in.cleanLine {
|
||||
in.indent++
|
||||
}
|
||||
in.readRune()
|
||||
continue
|
||||
|
|
@ -215,26 +314,38 @@ func (in *input) Lex(val *yySymType) int {
|
|||
|
||||
// Comment runs to end of line.
|
||||
if c == '#' {
|
||||
// If a line contains just a comment its indentation level doesn't matter.
|
||||
// Reset it to zero.
|
||||
in.indent = 0
|
||||
isLineComment := in.cleanLine
|
||||
in.cleanLine = true
|
||||
|
||||
// Is this comment the only thing on its line?
|
||||
// Find the last \n before this # and see if it's all
|
||||
// spaces from there to here.
|
||||
// If it's a suffix comment but the last non-space symbol before
|
||||
// it is one of (, [, or {, treat it as a line comment that should be
|
||||
// it is one of (, [, or {, or it's a suffix comment to "):"
|
||||
// (e.g. trailing closing bracket or a function definition),
|
||||
// treat it as a line comment that should be
|
||||
// put inside the corresponding block.
|
||||
i := bytes.LastIndex(in.complete[:in.pos.Byte], []byte("\n"))
|
||||
prefix := bytes.TrimSpace(in.complete[i+1:in.pos.Byte])
|
||||
prefix := bytes.TrimSpace(in.complete[i+1 : in.pos.Byte])
|
||||
prefix = bytes.Replace(prefix, []byte{' '}, []byte{}, -1)
|
||||
isSuffix := true
|
||||
if len(prefix) == 0 ||
|
||||
prefix[len(prefix) - 1] == '[' ||
|
||||
prefix[len(prefix) - 1] == '(' ||
|
||||
prefix[len(prefix) - 1] == '{' {
|
||||
(len(prefix) == 2 && prefix[0] == ')' && prefix[1] == ':') ||
|
||||
prefix[len(prefix)-1] == '[' ||
|
||||
prefix[len(prefix)-1] == '(' ||
|
||||
prefix[len(prefix)-1] == '{' {
|
||||
isSuffix = false
|
||||
}
|
||||
|
||||
// Consume comment.
|
||||
// Consume comment without the \n it ends with.
|
||||
in.startToken(val)
|
||||
for len(in.remaining) > 0 && in.readRune() != '\n' {
|
||||
for len(in.remaining) > 0 && in.peekRune() != '\n' {
|
||||
in.readRune()
|
||||
}
|
||||
|
||||
in.endToken(val)
|
||||
|
||||
val.tok = strings.TrimRight(val.tok, "\n")
|
||||
|
|
@ -243,22 +354,27 @@ func (in *input) Lex(val *yySymType) int {
|
|||
// If we are at top level (not in a rule), hand the comment to
|
||||
// the parser as a _COMMENT token. The grammar is written
|
||||
// to handle top-level comments itself.
|
||||
if in.endRule == 0 {
|
||||
// Not in a rule. Tell parser about top-level comment.
|
||||
if in.depth == 0 && isLineComment {
|
||||
// Not in a statement. Tell parser about top-level comment.
|
||||
return _COMMENT
|
||||
}
|
||||
|
||||
// Otherwise, save comment for later attachment to syntax tree.
|
||||
if countNL > 1 {
|
||||
in.comments = append(in.comments, Comment{val.pos, "", false})
|
||||
in.lineComments = append(in.lineComments, Comment{val.pos, ""})
|
||||
}
|
||||
in.comments = append(in.comments, Comment{val.pos, val.tok, isSuffix})
|
||||
countNL = 1
|
||||
if isSuffix {
|
||||
in.suffixComments = append(in.suffixComments, Comment{val.pos, val.tok})
|
||||
} else {
|
||||
in.lineComments = append(in.lineComments, Comment{val.pos, val.tok})
|
||||
}
|
||||
countNL = 0
|
||||
continue
|
||||
}
|
||||
|
||||
if c == '\\' && len(in.remaining) >= 2 && in.remaining[1] == '\n' {
|
||||
// We can ignore a trailing \ at end of line.
|
||||
// We can ignore a trailing \ at end of line together with the \n.
|
||||
in.readRune()
|
||||
in.readRune()
|
||||
continue
|
||||
}
|
||||
|
|
@ -267,6 +383,41 @@ func (in *input) Lex(val *yySymType) int {
|
|||
break
|
||||
}
|
||||
|
||||
// Check for changes in indentation
|
||||
// Skip if we're inside a statement, or if there were non-space
|
||||
// characters before in the current line.
|
||||
if in.depth == 0 && in.cleanLine {
|
||||
if in.indent > in.currentIndent() {
|
||||
// A new indentation block starts
|
||||
in.indents = append(in.indents, in.indent)
|
||||
in.lastToken = "indent"
|
||||
in.cleanLine = false
|
||||
return _INDENT
|
||||
} else if in.indent < in.currentIndent() {
|
||||
// An indentation block ends
|
||||
in.indents = in.indents[:len(in.indents)-1]
|
||||
|
||||
// It's a syntax error if the current line indentation level in now greater than
|
||||
// currentIndent(), should be either equal (a parent block continues) or still less
|
||||
// (need to unindent more).
|
||||
if in.indent > in.currentIndent() {
|
||||
in.pos = val.pos
|
||||
in.Error("unexpected indentation")
|
||||
}
|
||||
in.lastToken = "unindent"
|
||||
return _UNINDENT
|
||||
}
|
||||
}
|
||||
|
||||
in.cleanLine = false
|
||||
|
||||
// If the file ends with an indented block, return the corresponding amounts of unindents.
|
||||
if in.eof() && in.currentIndent() > 0 {
|
||||
in.indents = in.indents[:len(in.indents)-1]
|
||||
in.lastToken = "unindent"
|
||||
return _UNINDENT
|
||||
}
|
||||
|
||||
// Found the beginning of the next token.
|
||||
in.startToken(val)
|
||||
defer in.endToken(val)
|
||||
|
|
@ -277,18 +428,6 @@ func (in *input) Lex(val *yySymType) int {
|
|||
return _EOF
|
||||
}
|
||||
|
||||
// If endRule is 0, we need to recompute where the end
|
||||
// of the next rule (Python expression) is, so that we can
|
||||
// generate a virtual end-of-rule semicolon (see above).
|
||||
if in.endRule == 0 {
|
||||
in.endRule = len(in.skipPython(in.remaining))
|
||||
if in.endRule == 0 {
|
||||
// skipPython got confused.
|
||||
// No more virtual semicolons.
|
||||
in.endRule = -1
|
||||
}
|
||||
}
|
||||
|
||||
// Punctuation tokens.
|
||||
switch c := in.peekRune(); c {
|
||||
case '[', '(', '{':
|
||||
|
|
@ -301,12 +440,23 @@ func (in *input) Lex(val *yySymType) int {
|
|||
in.readRune()
|
||||
return c
|
||||
|
||||
case '.', '-', '%', ':', ';', ',', '/', '*': // single-char tokens
|
||||
case '.', ':', ';', ',': // single-char tokens
|
||||
in.readRune()
|
||||
return c
|
||||
|
||||
case '<', '>', '=', '!', '+': // possibly followed by =
|
||||
case '<', '>', '=', '!', '+', '-', '*', '/', '%', '|': // possibly followed by =
|
||||
in.readRune()
|
||||
if c == '*' && in.peekRune() == '*' {
|
||||
// double asterisk
|
||||
in.readRune()
|
||||
return _STAR_STAR
|
||||
}
|
||||
|
||||
if c == '/' && in.peekRune() == '/' {
|
||||
// integer division
|
||||
in.readRune()
|
||||
}
|
||||
|
||||
if in.peekRune() == '=' {
|
||||
in.readRune()
|
||||
switch c {
|
||||
|
|
@ -318,8 +468,8 @@ func (in *input) Lex(val *yySymType) int {
|
|||
return _EQ
|
||||
case '!':
|
||||
return _NE
|
||||
case '+':
|
||||
return _ADDEQ
|
||||
default:
|
||||
return _AUGM
|
||||
}
|
||||
}
|
||||
return c
|
||||
|
|
@ -395,17 +545,6 @@ func (in *input) Lex(val *yySymType) int {
|
|||
in.Error(fmt.Sprintf("unexpected input character %#q", c))
|
||||
}
|
||||
|
||||
// Look for raw Python block (class, def, if, etc at beginning of line) and pass through.
|
||||
if in.depth == 0 && in.pos.LineRune == 1 && hasPythonPrefix(in.remaining) {
|
||||
// Find end of Python block and advance input beyond it.
|
||||
// Have to loop calling readRune in order to maintain line number info.
|
||||
rest := in.skipPython(in.remaining)
|
||||
for len(in.remaining) > len(rest) {
|
||||
in.readRune()
|
||||
}
|
||||
return _PYTHON
|
||||
}
|
||||
|
||||
// Scan over alphanumeric identifier.
|
||||
for {
|
||||
c := in.peekRune()
|
||||
|
|
@ -421,8 +560,20 @@ func (in *input) Lex(val *yySymType) int {
|
|||
if k := keywordToken[val.tok]; k != 0 {
|
||||
return k
|
||||
}
|
||||
|
||||
return _IDENT
|
||||
switch val.tok {
|
||||
case "pass":
|
||||
return _PASS
|
||||
case "break":
|
||||
return _BREAK
|
||||
case "continue":
|
||||
return _CONTINUE
|
||||
}
|
||||
for _, c := range val.tok {
|
||||
if c > '9' || c < '0' {
|
||||
return _IDENT
|
||||
}
|
||||
}
|
||||
return _NUMBER
|
||||
}
|
||||
|
||||
// isIdent reports whether c is an identifier rune.
|
||||
|
|
@ -442,157 +593,15 @@ var keywordToken = map[string]int{
|
|||
"for": _FOR,
|
||||
"if": _IF,
|
||||
"else": _ELSE,
|
||||
"elif": _ELIF,
|
||||
"in": _IN,
|
||||
"is": _IS,
|
||||
"lambda": _LAMBDA,
|
||||
"load": _LOAD,
|
||||
"not": _NOT,
|
||||
"or": _OR,
|
||||
}
|
||||
|
||||
// Python scanning.
|
||||
// About 1% of BUILD files embed arbitrary Python into the file.
|
||||
// We do not attempt to parse it. Instead, we lex just enough to scan
|
||||
// beyond it, treating the Python block as an unintepreted blob.
|
||||
|
||||
// hasPythonPrefix reports whether p begins with a keyword that would
|
||||
// introduce an uninterpreted Python block.
|
||||
func hasPythonPrefix(p []byte) bool {
|
||||
for _, pre := range prefixes {
|
||||
if hasPrefixSpace(p, pre) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// These keywords introduce uninterpreted Python blocks.
|
||||
var prefixes = []string{
|
||||
"assert",
|
||||
"class",
|
||||
"def",
|
||||
"del",
|
||||
"for",
|
||||
"if",
|
||||
"try",
|
||||
}
|
||||
|
||||
// hasPrefixSpace reports whether p begins with pre followed by a space or colon.
|
||||
func hasPrefixSpace(p []byte, pre string) bool {
|
||||
if len(p) <= len(pre) || p[len(pre)] != ' ' && p[len(pre)] != '\t' && p[len(pre)] != ':' {
|
||||
return false
|
||||
}
|
||||
for i := range pre {
|
||||
if p[i] != pre[i] {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func isBlankOrComment(b []byte) bool {
|
||||
for _, c := range b {
|
||||
if c == '#' || c == '\n' {
|
||||
return true
|
||||
}
|
||||
if c != ' ' && c != '\t' && c != '\r' {
|
||||
return false
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// hasPythonContinuation reports whether p begins with a keyword that
|
||||
// continues an uninterpreted Python block.
|
||||
func hasPythonContinuation(p []byte) bool {
|
||||
for _, pre := range continuations {
|
||||
if hasPrefixSpace(p, pre) {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// These keywords continue uninterpreted Python blocks.
|
||||
var continuations = []string{
|
||||
"except",
|
||||
"else",
|
||||
}
|
||||
|
||||
// skipPython returns the data remaining after the uninterpreted
|
||||
// Python block beginning at p. It does not advance the input position.
|
||||
// (The only reason for the input receiver is to be able to call in.Error.)
|
||||
func (in *input) skipPython(p []byte) []byte {
|
||||
quote := byte(0) // if non-zero, the kind of quote we're in
|
||||
tripleQuote := false // if true, the quote is a triple quote
|
||||
depth := 0 // nesting depth for ( ) [ ] { }
|
||||
var rest []byte // data after the Python block
|
||||
|
||||
// Scan over input one byte at a time until we find
|
||||
// an unindented, non-blank, non-comment line
|
||||
// outside quoted strings and brackets.
|
||||
for i := 0; i < len(p); i++ {
|
||||
c := p[i]
|
||||
if quote != 0 && c == quote && !tripleQuote {
|
||||
quote = 0
|
||||
continue
|
||||
}
|
||||
if quote != 0 && c == quote && tripleQuote && i+2 < len(p) && p[i+1] == quote && p[i+2] == quote {
|
||||
i += 2
|
||||
quote = 0
|
||||
tripleQuote = false
|
||||
continue
|
||||
}
|
||||
if quote != 0 {
|
||||
if c == '\\' {
|
||||
i++ // skip escaped char
|
||||
}
|
||||
continue
|
||||
}
|
||||
if c == '\'' || c == '"' {
|
||||
if i+2 < len(p) && p[i+1] == c && p[i+2] == c {
|
||||
quote = c
|
||||
tripleQuote = true
|
||||
i += 2
|
||||
continue
|
||||
}
|
||||
quote = c
|
||||
continue
|
||||
}
|
||||
|
||||
if depth == 0 && i > 0 && p[i-1] == '\n' && (i < 2 || p[i-2] != '\\') {
|
||||
// Possible stopping point. Save the earliest one we find.
|
||||
if rest == nil {
|
||||
rest = p[i:]
|
||||
}
|
||||
|
||||
if !isBlankOrComment(p[i:]) {
|
||||
if !hasPythonContinuation(p[i:]) && c != ' ' && c != '\t' {
|
||||
// Yes, stop here.
|
||||
break
|
||||
}
|
||||
// Not a stopping point after all.
|
||||
rest = nil
|
||||
}
|
||||
}
|
||||
|
||||
switch c {
|
||||
case '#':
|
||||
// Skip comment.
|
||||
for i < len(p) && p[i] != '\n' {
|
||||
i++
|
||||
}
|
||||
|
||||
case '(', '[', '{':
|
||||
depth++
|
||||
|
||||
case ')', ']', '}':
|
||||
depth--
|
||||
}
|
||||
}
|
||||
if quote != 0 {
|
||||
in.Error("EOF scanning Python quoted string")
|
||||
}
|
||||
return rest
|
||||
"def": _DEF,
|
||||
"return": _RETURN,
|
||||
}
|
||||
|
||||
// Comment assignment.
|
||||
|
|
@ -628,12 +637,21 @@ func (in *input) order(v Expr) {
|
|||
in.order(x)
|
||||
}
|
||||
in.order(&v.End)
|
||||
case *PythonBlock:
|
||||
// nothing
|
||||
case *LoadStmt:
|
||||
in.order(v.Module)
|
||||
for i := range v.From {
|
||||
in.order(v.To[i])
|
||||
in.order(v.From[i])
|
||||
}
|
||||
in.order(&v.Rparen)
|
||||
case *LiteralExpr:
|
||||
// nothing
|
||||
case *StringExpr:
|
||||
// nothing
|
||||
case *Ident:
|
||||
// nothing
|
||||
case *BranchStmt:
|
||||
// nothing
|
||||
case *DotExpr:
|
||||
in.order(v.X)
|
||||
case *ListExpr:
|
||||
|
|
@ -641,22 +659,20 @@ func (in *input) order(v Expr) {
|
|||
in.order(x)
|
||||
}
|
||||
in.order(&v.End)
|
||||
case *ListForExpr:
|
||||
in.order(v.X)
|
||||
for _, c := range v.For {
|
||||
case *Comprehension:
|
||||
in.order(v.Body)
|
||||
for _, c := range v.Clauses {
|
||||
in.order(c)
|
||||
}
|
||||
in.order(&v.End)
|
||||
case *ForClauseWithIfClausesOpt:
|
||||
in.order(v.For)
|
||||
for _, c := range v.Ifs {
|
||||
in.order(c)
|
||||
case *SetExpr:
|
||||
for _, x := range v.List {
|
||||
in.order(x)
|
||||
}
|
||||
in.order(&v.End)
|
||||
case *ForClause:
|
||||
for _, name := range v.Var {
|
||||
in.order(name)
|
||||
}
|
||||
in.order(v.Expr)
|
||||
in.order(v.Vars)
|
||||
in.order(v.X)
|
||||
case *IfClause:
|
||||
in.order(v.Cond)
|
||||
case *KeyValueExpr:
|
||||
|
|
@ -671,7 +687,9 @@ func (in *input) order(v Expr) {
|
|||
for _, x := range v.List {
|
||||
in.order(x)
|
||||
}
|
||||
in.order(&v.End)
|
||||
if !v.NoBrackets {
|
||||
in.order(&v.End)
|
||||
}
|
||||
case *UnaryExpr:
|
||||
in.order(v.X)
|
||||
case *BinaryExpr:
|
||||
|
|
@ -686,16 +704,47 @@ func (in *input) order(v Expr) {
|
|||
in.order(&v.End)
|
||||
case *SliceExpr:
|
||||
in.order(v.X)
|
||||
in.order(v.Y)
|
||||
in.order(v.Z)
|
||||
in.order(v.From)
|
||||
in.order(v.To)
|
||||
in.order(v.Step)
|
||||
case *IndexExpr:
|
||||
in.order(v.X)
|
||||
in.order(v.Y)
|
||||
case *LambdaExpr:
|
||||
for _, name := range v.Var {
|
||||
in.order(name)
|
||||
for _, param := range v.Params {
|
||||
in.order(param)
|
||||
}
|
||||
for _, expr := range v.Body {
|
||||
in.order(expr)
|
||||
}
|
||||
case *ReturnStmt:
|
||||
if v.Result != nil {
|
||||
in.order(v.Result)
|
||||
}
|
||||
case *DefStmt:
|
||||
for _, x := range v.Params {
|
||||
in.order(x)
|
||||
}
|
||||
for _, x := range v.Body {
|
||||
in.order(x)
|
||||
}
|
||||
case *ForStmt:
|
||||
in.order(v.Vars)
|
||||
in.order(v.X)
|
||||
for _, x := range v.Body {
|
||||
in.order(x)
|
||||
}
|
||||
case *IfStmt:
|
||||
in.order(v.Cond)
|
||||
for _, s := range v.True {
|
||||
in.order(s)
|
||||
}
|
||||
if len(v.False) > 0 {
|
||||
in.order(&v.ElsePos)
|
||||
}
|
||||
for _, s := range v.False {
|
||||
in.order(s)
|
||||
}
|
||||
in.order(v.Expr)
|
||||
}
|
||||
if v != nil {
|
||||
in.post = append(in.post, v)
|
||||
|
|
@ -706,37 +755,19 @@ func (in *input) order(v Expr) {
|
|||
func (in *input) assignComments() {
|
||||
// Generate preorder and postorder lists.
|
||||
in.order(in.file)
|
||||
in.assignSuffixComments()
|
||||
in.assignLineComments()
|
||||
}
|
||||
|
||||
// Split into whole-line comments and suffix comments.
|
||||
var line, suffix []Comment
|
||||
for _, com := range in.comments {
|
||||
if com.Suffix {
|
||||
suffix = append(suffix, com)
|
||||
} else {
|
||||
line = append(line, com)
|
||||
}
|
||||
}
|
||||
|
||||
// Assign line comments to syntax immediately following.
|
||||
for _, x := range in.pre {
|
||||
start, _ := x.Span()
|
||||
xcom := x.Comment()
|
||||
for len(line) > 0 && start.Byte >= line[0].Start.Byte {
|
||||
xcom.Before = append(xcom.Before, line[0])
|
||||
line = line[1:]
|
||||
}
|
||||
}
|
||||
|
||||
// Remaining line comments go at end of file.
|
||||
in.file.After = append(in.file.After, line...)
|
||||
|
||||
func (in *input) assignSuffixComments() {
|
||||
// Assign suffix comments to syntax immediately before.
|
||||
suffix := in.suffixComments
|
||||
for i := len(in.post) - 1; i >= 0; i-- {
|
||||
x := in.post[i]
|
||||
|
||||
// Do not assign suffix comments to file
|
||||
// Do not assign suffix comments to file or to block statements
|
||||
switch x.(type) {
|
||||
case *File:
|
||||
case *File, *DefStmt, *IfStmt, *ForStmt, *CommentBlock:
|
||||
continue
|
||||
}
|
||||
|
||||
|
|
@ -759,6 +790,27 @@ func (in *input) assignComments() {
|
|||
in.file.Before = append(in.file.Before, suffix...)
|
||||
}
|
||||
|
||||
func (in *input) assignLineComments() {
|
||||
// Assign line comments to syntax immediately following.
|
||||
line := in.lineComments
|
||||
for _, x := range in.pre {
|
||||
start, _ := x.Span()
|
||||
xcom := x.Comment()
|
||||
for len(line) > 0 && start.Byte >= line[0].Start.Byte {
|
||||
xcom.Before = append(xcom.Before, line[0])
|
||||
line = line[1:]
|
||||
}
|
||||
// Line comments can be sorted in a wrong order because they get assigned from different
|
||||
// parts of the lexer and the parser. Restore the original order.
|
||||
sort.SliceStable(xcom.Before, func(i, j int) bool {
|
||||
return xcom.Before[i].Start.Byte < xcom.Before[j].Start.Byte
|
||||
})
|
||||
}
|
||||
|
||||
// Remaining line comments go at end of file.
|
||||
in.file.After = append(in.file.After, line...)
|
||||
}
|
||||
|
||||
// reverseComments reverses the []Comment list.
|
||||
func reverseComments(list []Comment) {
|
||||
for i, j := 0, len(list)-1; i < j; i, j = i+1, j-1 {
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -23,16 +23,27 @@ import (
|
|||
"strings"
|
||||
)
|
||||
|
||||
// Format returns the formatted form of the given BUILD file.
|
||||
const (
|
||||
nestedIndentation = 4 // Indentation of nested blocks
|
||||
listIndentation = 4 // Indentation of multiline expressions
|
||||
defIndentation = 8 // Indentation of multiline function definitions
|
||||
)
|
||||
|
||||
// Format returns the formatted form of the given BUILD or bzl file.
|
||||
func Format(f *File) []byte {
|
||||
pr := &printer{}
|
||||
pr := &printer{fileType: f.Type}
|
||||
pr.file(f)
|
||||
return pr.Bytes()
|
||||
}
|
||||
|
||||
// FormatString returns the string form of the given expression.
|
||||
func FormatString(x Expr) string {
|
||||
pr := &printer{}
|
||||
fileType := TypeBuild // for compatibility
|
||||
if file, ok := x.(*File); ok {
|
||||
fileType = file.Type
|
||||
}
|
||||
|
||||
pr := &printer{fileType: fileType}
|
||||
switch x := x.(type) {
|
||||
case *File:
|
||||
pr.file(x)
|
||||
|
|
@ -44,10 +55,13 @@ func FormatString(x Expr) string {
|
|||
|
||||
// A printer collects the state during printing of a file or expression.
|
||||
type printer struct {
|
||||
fileType FileType // different rules can be applied to different file types.
|
||||
bytes.Buffer // output buffer
|
||||
comment []Comment // pending end-of-line comments
|
||||
margin int // left margin (indent), a number of spaces
|
||||
depth int // nesting depth inside ( ) [ ] { }
|
||||
level int // nesting level of def-, if-else- and for-blocks
|
||||
needsNewLine bool // true if the next statement needs a new line before it
|
||||
}
|
||||
|
||||
// printf prints to the buffer.
|
||||
|
|
@ -71,6 +85,7 @@ func (p *printer) indent() int {
|
|||
// To break a line inside an expression that might not be enclosed
|
||||
// in brackets of some kind, use breakline instead.
|
||||
func (p *printer) newline() {
|
||||
p.needsNewLine = false
|
||||
if len(p.comment) > 0 {
|
||||
p.printf(" ")
|
||||
for i, com := range p.comment {
|
||||
|
|
@ -87,6 +102,28 @@ func (p *printer) newline() {
|
|||
p.printf("\n%*s", p.margin, "")
|
||||
}
|
||||
|
||||
// softNewline postpones a call to newline to the next call of p.newlineIfNeeded()
|
||||
// If softNewline is called several times, just one newline is printed.
|
||||
// Usecase: if there are several nested blocks ending at the same time, for instance
|
||||
//
|
||||
// if True:
|
||||
// for a in b:
|
||||
// pass
|
||||
// foo()
|
||||
//
|
||||
// the last statement (`pass`) doesn't end with a newline, each block ends with a lazy newline
|
||||
// which actually gets printed only once when right before the next statement (`foo()`) is printed.
|
||||
func (p *printer) softNewline() {
|
||||
p.needsNewLine = true
|
||||
}
|
||||
|
||||
// newlineIfNeeded calls newline if softNewline() has previously been called
|
||||
func (p *printer) newlineIfNeeded() {
|
||||
if p.needsNewLine == true {
|
||||
p.newline()
|
||||
}
|
||||
}
|
||||
|
||||
// breakline breaks the current line, inserting a continuation \ if needed.
|
||||
// If no continuation \ is needed, breakline flushes end-of-line comments.
|
||||
func (p *printer) breakline() {
|
||||
|
|
@ -118,63 +155,117 @@ func (p *printer) file(f *File) {
|
|||
p.newline()
|
||||
}
|
||||
|
||||
for i, stmt := range f.Stmt {
|
||||
switch stmt := stmt.(type) {
|
||||
case *CommentBlock:
|
||||
// comments already handled
|
||||
|
||||
case *PythonBlock:
|
||||
for _, com := range stmt.Before {
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
p.newline()
|
||||
}
|
||||
p.printf("%s", stmt.Token) // includes trailing newline
|
||||
|
||||
default:
|
||||
p.expr(stmt, precLow)
|
||||
p.newline()
|
||||
}
|
||||
|
||||
for _, com := range stmt.Comment().After {
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
p.newline()
|
||||
}
|
||||
|
||||
if i+1 < len(f.Stmt) && !compactStmt(stmt, f.Stmt[i+1]) {
|
||||
p.newline()
|
||||
}
|
||||
}
|
||||
p.statements(f.Stmt)
|
||||
|
||||
for _, com := range f.After {
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
p.newline()
|
||||
}
|
||||
|
||||
p.newlineIfNeeded()
|
||||
}
|
||||
|
||||
func (p *printer) nestedStatements(stmts []Expr) {
|
||||
p.margin += nestedIndentation
|
||||
p.level++
|
||||
p.newline()
|
||||
|
||||
p.statements(stmts)
|
||||
|
||||
p.margin -= nestedIndentation
|
||||
p.level--
|
||||
}
|
||||
|
||||
func (p *printer) statements(stmts []Expr) {
|
||||
for i, stmt := range stmts {
|
||||
switch stmt := stmt.(type) {
|
||||
case *CommentBlock:
|
||||
// comments already handled
|
||||
|
||||
default:
|
||||
p.expr(stmt, precLow)
|
||||
}
|
||||
|
||||
// A CommentBlock is an empty statement without a body,
|
||||
// it doesn't need an line break after the body
|
||||
if _, ok := stmt.(*CommentBlock); !ok {
|
||||
p.softNewline()
|
||||
}
|
||||
|
||||
for _, com := range stmt.Comment().After {
|
||||
p.newlineIfNeeded()
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
p.softNewline()
|
||||
}
|
||||
|
||||
// Print an empty line break after the statement unless it's the last statement in the sequence.
|
||||
// In that case a line break should be printed when the block or the file ends.
|
||||
if i < len(stmts)-1 {
|
||||
p.newline()
|
||||
}
|
||||
|
||||
if i+1 < len(stmts) && !p.compactStmt(stmt, stmts[i+1]) {
|
||||
p.newline()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// compactStmt reports whether the pair of statements s1, s2
|
||||
// should be printed without an intervening blank line.
|
||||
// We omit the blank line when both are subinclude statements
|
||||
// and the second one has no leading comments.
|
||||
func compactStmt(s1, s2 Expr) bool {
|
||||
func (p *printer) compactStmt(s1, s2 Expr) bool {
|
||||
if len(s2.Comment().Before) > 0 {
|
||||
return false
|
||||
} else if isLoad(s1) && isLoad(s2) {
|
||||
// Load statements should be compact
|
||||
return true
|
||||
} else if isLoad(s1) || isLoad(s2) {
|
||||
// Load statements should be separated from anything else
|
||||
return false
|
||||
} else if isCommentBlock(s1) || isCommentBlock(s2) {
|
||||
// Standalone comment blocks shouldn't be attached to other statements
|
||||
return false
|
||||
} else if p.fileType != TypeDefault && p.level == 0 {
|
||||
// Top-level statements in a BUILD or WORKSPACE file
|
||||
return false
|
||||
} else if isFunctionDefinition(s1) || isFunctionDefinition(s2) {
|
||||
// On of the statements is a function definition
|
||||
return false
|
||||
} else {
|
||||
// Depend on how the statements have been printed in the original file
|
||||
_, end := s1.Span()
|
||||
start, _ := s2.Span()
|
||||
return start.Line-end.Line <= 1
|
||||
}
|
||||
|
||||
return (isCall(s1, "subinclude") || isCall(s1, "load")) &&
|
||||
(isCall(s2, "subinclude") || isCall(s2, "load"))
|
||||
}
|
||||
|
||||
// isCall reports whether x is a call to a function with the given name.
|
||||
func isCall(x Expr, name string) bool {
|
||||
c, ok := x.(*CallExpr)
|
||||
if !ok {
|
||||
// isLoad reports whether x is a load statement.
|
||||
func isLoad(x Expr) bool {
|
||||
_, ok := x.(*LoadStmt)
|
||||
return ok
|
||||
}
|
||||
|
||||
// isCommentBlock reports whether x is a comment block node.
|
||||
func isCommentBlock(x Expr) bool {
|
||||
_, ok := x.(*CommentBlock)
|
||||
return ok
|
||||
}
|
||||
|
||||
// isFunctionDefinition checks if the statement is a def code block
|
||||
func isFunctionDefinition(x Expr) bool {
|
||||
_, ok := x.(*DefStmt)
|
||||
return ok
|
||||
}
|
||||
|
||||
// isDifferentLines reports whether two positions belong to different lines.
|
||||
// If one of the positions is null (Line == 0), it's not a real position but probably an indicator
|
||||
// of manually inserted node. Return false in this case
|
||||
func isDifferentLines(p1, p2 *Position) bool {
|
||||
if p1.Line == 0 || p2.Line == 0 {
|
||||
return false
|
||||
}
|
||||
nam, ok := c.X.(*LiteralExpr)
|
||||
if !ok {
|
||||
return false
|
||||
}
|
||||
return nam.Token == name
|
||||
return p1.Line != p2.Line
|
||||
}
|
||||
|
||||
// Expression formatting.
|
||||
|
|
@ -203,36 +294,43 @@ func isCall(x Expr, name string) bool {
|
|||
const (
|
||||
precLow = iota
|
||||
precAssign
|
||||
precComma
|
||||
precColon
|
||||
precIn
|
||||
precIfElse
|
||||
precOr
|
||||
precAnd
|
||||
precCmp
|
||||
precAdd
|
||||
precMultiply
|
||||
precSuffix
|
||||
precUnary
|
||||
precConcat
|
||||
precSuffix
|
||||
)
|
||||
|
||||
// opPrec gives the precedence for operators found in a BinaryExpr.
|
||||
var opPrec = map[string]int{
|
||||
"=": precAssign,
|
||||
"+=": precAssign,
|
||||
"or": precOr,
|
||||
"and": precAnd,
|
||||
"<": precCmp,
|
||||
">": precCmp,
|
||||
"==": precCmp,
|
||||
"!=": precCmp,
|
||||
"<=": precCmp,
|
||||
">=": precCmp,
|
||||
"+": precAdd,
|
||||
"-": precAdd,
|
||||
"*": precMultiply,
|
||||
"/": precMultiply,
|
||||
"%": precMultiply,
|
||||
"=": precAssign,
|
||||
"+=": precAssign,
|
||||
"-=": precAssign,
|
||||
"*=": precAssign,
|
||||
"/=": precAssign,
|
||||
"//=": precAssign,
|
||||
"%=": precAssign,
|
||||
"or": precOr,
|
||||
"and": precAnd,
|
||||
"in": precCmp,
|
||||
"not in": precCmp,
|
||||
"<": precCmp,
|
||||
">": precCmp,
|
||||
"==": precCmp,
|
||||
"!=": precCmp,
|
||||
"<=": precCmp,
|
||||
">=": precCmp,
|
||||
"+": precAdd,
|
||||
"-": precAdd,
|
||||
"*": precMultiply,
|
||||
"/": precMultiply,
|
||||
"//": precMultiply,
|
||||
"%": precMultiply,
|
||||
"|": precMultiply,
|
||||
}
|
||||
|
||||
// expr prints the expression v to the print buffer.
|
||||
|
|
@ -252,6 +350,8 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
// TODO(bazel-team): Check whether it is valid to emit comments right now,
|
||||
// and if not, insert them earlier in the output instead, at the most
|
||||
// recent \n not following a \ line.
|
||||
p.newlineIfNeeded()
|
||||
|
||||
if before := v.Comment().Before; len(before) > 0 {
|
||||
// Want to print a line comment.
|
||||
// Line comments must be at the current margin.
|
||||
|
|
@ -291,14 +391,19 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
case *LiteralExpr:
|
||||
p.printf("%s", v.Token)
|
||||
|
||||
case *Ident:
|
||||
p.printf("%s", v.Name)
|
||||
|
||||
case *BranchStmt:
|
||||
p.printf("%s", v.Token)
|
||||
|
||||
case *StringExpr:
|
||||
// If the Token is a correct quoting of Value, use it.
|
||||
// This preserves the specific escaping choices that
|
||||
// BUILD authors have made, and it also works around
|
||||
// b/7272572.
|
||||
if strings.HasPrefix(v.Token, `"`) {
|
||||
s, triple, err := unquote(v.Token)
|
||||
if s == v.Value && triple == v.TripleQuote && err == nil {
|
||||
// If the Token is a correct quoting of Value and has double quotes, use it,
|
||||
// also use it if it has single quotes and the value itself contains a double quote symbol.
|
||||
// This preserves the specific escaping choices that BUILD authors have made.
|
||||
s, triple, err := unquote(v.Token)
|
||||
if s == v.Value && triple == v.TripleQuote && err == nil {
|
||||
if strings.HasPrefix(v.Token, `"`) || strings.ContainsRune(v.Value, '"') {
|
||||
p.printf("%s", v.Token)
|
||||
break
|
||||
}
|
||||
|
|
@ -309,7 +414,16 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
case *DotExpr:
|
||||
addParen(precSuffix)
|
||||
p.expr(v.X, precSuffix)
|
||||
_, xEnd := v.X.Span()
|
||||
isMultiline := isDifferentLines(&v.NamePos, &xEnd)
|
||||
if isMultiline {
|
||||
p.margin += listIndentation
|
||||
p.breakline()
|
||||
}
|
||||
p.printf(".%s", v.Name)
|
||||
if isMultiline {
|
||||
p.margin -= listIndentation
|
||||
}
|
||||
|
||||
case *IndexExpr:
|
||||
addParen(precSuffix)
|
||||
|
|
@ -327,12 +441,18 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
addParen(precSuffix)
|
||||
p.expr(v.X, precSuffix)
|
||||
p.printf("[")
|
||||
if v.Y != nil {
|
||||
p.expr(v.Y, precLow)
|
||||
if v.From != nil {
|
||||
p.expr(v.From, precLow)
|
||||
}
|
||||
p.printf(":")
|
||||
if v.Z != nil {
|
||||
p.expr(v.Z, precLow)
|
||||
if v.To != nil {
|
||||
p.expr(v.To, precLow)
|
||||
}
|
||||
if v.SecondColon.Byte != 0 {
|
||||
p.printf(":")
|
||||
if v.Step != nil {
|
||||
p.expr(v.Step, precLow)
|
||||
}
|
||||
}
|
||||
p.printf("]")
|
||||
|
||||
|
|
@ -348,14 +468,14 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
case *LambdaExpr:
|
||||
addParen(precColon)
|
||||
p.printf("lambda ")
|
||||
for i, name := range v.Var {
|
||||
for i, param := range v.Params {
|
||||
if i > 0 {
|
||||
p.printf(", ")
|
||||
}
|
||||
p.expr(name, precLow)
|
||||
p.expr(param, precLow)
|
||||
}
|
||||
p.printf(": ")
|
||||
p.expr(v.Expr, precColon)
|
||||
p.expr(v.Body[0], precLow) // lambdas should have exactly one statement
|
||||
|
||||
case *BinaryExpr:
|
||||
// Precedence: use the precedence of the operator.
|
||||
|
|
@ -379,7 +499,7 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
if v.LineBreak {
|
||||
p.margin = p.indent()
|
||||
if v.Op == "=" {
|
||||
p.margin += 4
|
||||
p.margin += listIndentation
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -394,36 +514,142 @@ func (p *printer) expr(v Expr, outerPrec int) {
|
|||
p.margin = m
|
||||
|
||||
case *ParenExpr:
|
||||
p.seq("()", []Expr{v.X}, &v.End, modeParen, false, v.ForceMultiLine)
|
||||
p.seq("()", &v.Start, &[]Expr{v.X}, &v.End, modeParen, false, v.ForceMultiLine)
|
||||
|
||||
case *CallExpr:
|
||||
addParen(precSuffix)
|
||||
p.expr(v.X, precSuffix)
|
||||
p.seq("()", v.List, &v.End, modeCall, v.ForceCompact, v.ForceMultiLine)
|
||||
p.seq("()", &v.ListStart, &v.List, &v.End, modeCall, v.ForceCompact, v.ForceMultiLine)
|
||||
|
||||
case *LoadStmt:
|
||||
addParen(precSuffix)
|
||||
p.printf("load")
|
||||
args := []Expr{v.Module}
|
||||
for i := range v.From {
|
||||
from := v.From[i]
|
||||
to := v.To[i]
|
||||
var arg Expr
|
||||
if from.Name == to.Name {
|
||||
// Suffix comments are attached to the `to` token,
|
||||
// Before comments are attached to the `from` token,
|
||||
// they need to be combined.
|
||||
arg = from.asString()
|
||||
arg.Comment().Before = to.Comment().Before
|
||||
} else {
|
||||
arg = &BinaryExpr{
|
||||
X: to,
|
||||
Op: "=",
|
||||
Y: from.asString(),
|
||||
}
|
||||
}
|
||||
args = append(args, arg)
|
||||
}
|
||||
p.seq("()", &v.Load, &args, &v.Rparen, modeLoad, v.ForceCompact, false)
|
||||
|
||||
case *ListExpr:
|
||||
p.seq("[]", v.List, &v.End, modeList, false, v.ForceMultiLine)
|
||||
p.seq("[]", &v.Start, &v.List, &v.End, modeList, false, v.ForceMultiLine)
|
||||
|
||||
case *SetExpr:
|
||||
p.seq("{}", &v.Start, &v.List, &v.End, modeList, false, v.ForceMultiLine)
|
||||
|
||||
case *TupleExpr:
|
||||
p.seq("()", v.List, &v.End, modeTuple, v.ForceCompact, v.ForceMultiLine)
|
||||
mode := modeTuple
|
||||
if v.NoBrackets {
|
||||
mode = modeSeq
|
||||
}
|
||||
p.seq("()", &v.Start, &v.List, &v.End, mode, v.ForceCompact, v.ForceMultiLine)
|
||||
|
||||
case *DictExpr:
|
||||
var list []Expr
|
||||
for _, x := range v.List {
|
||||
list = append(list, x)
|
||||
}
|
||||
p.seq("{}", list, &v.End, modeDict, false, v.ForceMultiLine)
|
||||
p.seq("{}", &v.Start, &list, &v.End, modeDict, false, v.ForceMultiLine)
|
||||
|
||||
case *ListForExpr:
|
||||
case *Comprehension:
|
||||
p.listFor(v)
|
||||
|
||||
case *ConditionalExpr:
|
||||
addParen(precSuffix)
|
||||
p.expr(v.Then, precSuffix)
|
||||
p.expr(v.Then, precIfElse)
|
||||
p.printf(" if ")
|
||||
p.expr(v.Test, precSuffix)
|
||||
p.expr(v.Test, precIfElse)
|
||||
p.printf(" else ")
|
||||
p.expr(v.Else, precSuffix)
|
||||
p.expr(v.Else, precIfElse)
|
||||
|
||||
case *ReturnStmt:
|
||||
p.printf("return")
|
||||
if v.Result != nil {
|
||||
p.printf(" ")
|
||||
p.expr(v.Result, precLow)
|
||||
}
|
||||
|
||||
case *DefStmt:
|
||||
p.printf("def ")
|
||||
p.printf(v.Name)
|
||||
p.seq("()", &v.StartPos, &v.Params, nil, modeDef, v.ForceCompact, v.ForceMultiLine)
|
||||
p.printf(":")
|
||||
p.nestedStatements(v.Body)
|
||||
|
||||
case *ForStmt:
|
||||
p.printf("for ")
|
||||
p.expr(v.Vars, precLow)
|
||||
p.printf(" in ")
|
||||
p.expr(v.X, precLow)
|
||||
p.printf(":")
|
||||
p.nestedStatements(v.Body)
|
||||
|
||||
case *IfStmt:
|
||||
block := v
|
||||
isFirst := true
|
||||
needsEmptyLine := false
|
||||
for {
|
||||
p.newlineIfNeeded()
|
||||
if !isFirst {
|
||||
if needsEmptyLine {
|
||||
p.newline()
|
||||
}
|
||||
p.printf("el")
|
||||
}
|
||||
p.printf("if ")
|
||||
p.expr(block.Cond, precLow)
|
||||
p.printf(":")
|
||||
p.nestedStatements(block.True)
|
||||
|
||||
isFirst = false
|
||||
_, end := block.True[len(block.True)-1].Span()
|
||||
needsEmptyLine = block.ElsePos.Pos.Line-end.Line > 1
|
||||
|
||||
// If the else-block contains just one statement which is an IfStmt, flatten it as a part
|
||||
// of if-elif chain.
|
||||
// Don't do it if the "else" statement has a suffix comment.
|
||||
if len(block.ElsePos.Comment().Suffix) == 0 && len(block.False) == 1 {
|
||||
next, ok := block.False[0].(*IfStmt)
|
||||
if ok {
|
||||
block = next
|
||||
continue
|
||||
}
|
||||
}
|
||||
break
|
||||
}
|
||||
|
||||
if len(block.False) > 0 {
|
||||
p.newlineIfNeeded()
|
||||
if needsEmptyLine {
|
||||
p.newline()
|
||||
}
|
||||
p.printf("else:")
|
||||
p.comment = append(p.comment, block.ElsePos.Comment().Suffix...)
|
||||
p.nestedStatements(block.False)
|
||||
}
|
||||
case *ForClause:
|
||||
p.printf("for ")
|
||||
p.expr(v.Vars, precLow)
|
||||
p.printf(" in ")
|
||||
p.expr(v.X, precLow)
|
||||
case *IfClause:
|
||||
p.printf("if ")
|
||||
p.expr(v.Cond, precLow)
|
||||
}
|
||||
|
||||
// Add closing parenthesis if needed.
|
||||
|
|
@ -449,87 +675,150 @@ const (
|
|||
modeTuple // (x,)
|
||||
modeParen // (x)
|
||||
modeDict // {x:y}
|
||||
modeSeq // x, y
|
||||
modeDef // def f(x, y)
|
||||
modeLoad // load(a, b, c)
|
||||
)
|
||||
|
||||
// useCompactMode reports whether a sequence should be formatted in a compact mode
|
||||
func (p *printer) useCompactMode(start *Position, list *[]Expr, end *End, mode seqMode, forceCompact, forceMultiLine bool) bool {
|
||||
// If there are line comments, use multiline
|
||||
// so we can print the comments before the closing bracket.
|
||||
for _, x := range *list {
|
||||
if len(x.Comment().Before) > 0 {
|
||||
return false
|
||||
}
|
||||
}
|
||||
if end != nil && len(end.Before) > 0 {
|
||||
return false
|
||||
}
|
||||
|
||||
// Implicit tuples are always compact
|
||||
if mode == modeSeq {
|
||||
return true
|
||||
}
|
||||
|
||||
// In the Default printing mode try to keep the original printing style.
|
||||
// Non-top-level statements and lists of arguments of a function definition
|
||||
// should also keep the original style regardless of the mode.
|
||||
if (p.level != 0 || p.fileType == TypeDefault || mode == modeDef) && mode != modeLoad {
|
||||
// If every element (including the brackets) ends on the same line where the next element starts,
|
||||
// use the compact mode, otherwise use multiline mode.
|
||||
// If an node's line number is 0, it means it doesn't appear in the original file,
|
||||
// its position shouldn't be taken into account.
|
||||
previousEnd := start
|
||||
for _, x := range *list {
|
||||
start, end := x.Span()
|
||||
if isDifferentLines(&start, previousEnd) {
|
||||
return false
|
||||
}
|
||||
if end.Line != 0 {
|
||||
previousEnd = &end
|
||||
}
|
||||
}
|
||||
if end != nil && isDifferentLines(previousEnd, &end.Pos) {
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
// In Build mode, use the forceMultiline and forceCompact values
|
||||
if forceMultiLine {
|
||||
return false
|
||||
}
|
||||
if forceCompact {
|
||||
return true
|
||||
}
|
||||
// If neither of the flags are set, use compact mode only for empty or 1-element sequences
|
||||
return len(*list) <= 1
|
||||
}
|
||||
|
||||
// seq formats a list of values inside a given bracket pair (brack = "()", "[]", "{}").
|
||||
// The end node holds any trailing comments to be printed just before the
|
||||
// closing bracket.
|
||||
// The mode parameter specifies the sequence mode (see above).
|
||||
// If multiLine is true, seq avoids the compact form even
|
||||
// for 0- and 1-element sequences.
|
||||
func (p *printer) seq(brack string, list []Expr, end *End, mode seqMode, forceCompact, forceMultiLine bool) {
|
||||
p.printf("%s", brack[:1])
|
||||
func (p *printer) seq(brack string, start *Position, list *[]Expr, end *End, mode seqMode, forceCompact, forceMultiLine bool) {
|
||||
if mode != modeSeq {
|
||||
p.printf("%s", brack[:1])
|
||||
}
|
||||
p.depth++
|
||||
|
||||
// If there are line comments, force multiline
|
||||
// so we can print the comments before the closing bracket.
|
||||
for _, x := range list {
|
||||
if len(x.Comment().Before) > 0 {
|
||||
forceMultiLine = true
|
||||
defer func() {
|
||||
p.depth--
|
||||
if mode != modeSeq {
|
||||
p.printf("%s", brack[1:])
|
||||
}
|
||||
}
|
||||
if len(end.Before) > 0 {
|
||||
forceMultiLine = true
|
||||
}
|
||||
}()
|
||||
|
||||
// Resolve possibly ambiguous call arguments explicitly
|
||||
// instead of depending on implicit resolution in logic below.
|
||||
if forceMultiLine {
|
||||
forceCompact = false
|
||||
}
|
||||
|
||||
switch {
|
||||
case len(list) == 0 && !forceMultiLine:
|
||||
// Compact form: print nothing.
|
||||
|
||||
case len(list) == 1 && !forceMultiLine:
|
||||
// Compact form.
|
||||
p.expr(list[0], precLow)
|
||||
// Tuple must end with comma, to mark it as a tuple.
|
||||
if mode == modeTuple {
|
||||
p.printf(",")
|
||||
}
|
||||
|
||||
case forceCompact:
|
||||
// Compact form but multiple elements.
|
||||
for i, x := range list {
|
||||
if p.useCompactMode(start, list, end, mode, forceCompact, forceMultiLine) {
|
||||
for i, x := range *list {
|
||||
if i > 0 {
|
||||
p.printf(", ")
|
||||
}
|
||||
p.expr(x, precLow)
|
||||
}
|
||||
|
||||
default:
|
||||
// Multi-line form.
|
||||
p.margin += 4
|
||||
for i, x := range list {
|
||||
// If we are about to break the line before the first
|
||||
// element and there are trailing end-of-line comments
|
||||
// waiting to be printed, delay them and print them as
|
||||
// whole-line comments preceding that element.
|
||||
// Do this by printing a newline ourselves and positioning
|
||||
// so that the end-of-line comment, with the two spaces added,
|
||||
// will line up with the current margin.
|
||||
if i == 0 && len(p.comment) > 0 {
|
||||
p.printf("\n%*s", p.margin-2, "")
|
||||
}
|
||||
|
||||
p.newline()
|
||||
p.expr(x, precLow)
|
||||
if mode != modeParen || i+1 < len(list) {
|
||||
p.printf(",")
|
||||
}
|
||||
// Single-element tuple must end with comma, to mark it as a tuple.
|
||||
if len(*list) == 1 && mode == modeTuple {
|
||||
p.printf(",")
|
||||
}
|
||||
// Final comments.
|
||||
return
|
||||
}
|
||||
// Multi-line form.
|
||||
indentation := listIndentation
|
||||
if mode == modeDef {
|
||||
indentation = defIndentation
|
||||
}
|
||||
p.margin += indentation
|
||||
|
||||
for i, x := range *list {
|
||||
// If we are about to break the line before the first
|
||||
// element and there are trailing end-of-line comments
|
||||
// waiting to be printed, delay them and print them as
|
||||
// whole-line comments preceding that element.
|
||||
// Do this by printing a newline ourselves and positioning
|
||||
// so that the end-of-line comment, with the two spaces added,
|
||||
// will line up with the current margin.
|
||||
if i == 0 && len(p.comment) > 0 {
|
||||
p.printf("\n%*s", p.margin-2, "")
|
||||
}
|
||||
|
||||
p.newline()
|
||||
p.expr(x, precLow)
|
||||
|
||||
if i+1 < len(*list) || needsTrailingComma(mode, x) {
|
||||
p.printf(",")
|
||||
}
|
||||
}
|
||||
// Final comments.
|
||||
if end != nil {
|
||||
for _, com := range end.Before {
|
||||
p.newline()
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
}
|
||||
p.margin -= 4
|
||||
}
|
||||
p.margin -= indentation
|
||||
// in modeDef print the closing bracket on the same line
|
||||
if mode != modeDef {
|
||||
p.newline()
|
||||
}
|
||||
p.depth--
|
||||
p.printf("%s", brack[1:])
|
||||
}
|
||||
|
||||
func needsTrailingComma(mode seqMode, v Expr) bool {
|
||||
switch mode {
|
||||
case modeDef:
|
||||
return false
|
||||
case modeParen:
|
||||
return false
|
||||
case modeCall:
|
||||
// *args and **kwargs in fn calls
|
||||
switch v := v.(type) {
|
||||
case *UnaryExpr:
|
||||
if v.Op == "*" || v.Op == "**" {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
// listFor formats a ListForExpr (list comprehension).
|
||||
|
|
@ -543,7 +832,7 @@ func (p *printer) seq(brack string, list []Expr, end *End, mode seqMode, forceCo
|
|||
// if c
|
||||
// ]
|
||||
//
|
||||
func (p *printer) listFor(v *ListForExpr) {
|
||||
func (p *printer) listFor(v *Comprehension) {
|
||||
multiLine := v.ForceMultiLine || len(v.End.Before) > 0
|
||||
|
||||
// space breaks the line in multiline mode
|
||||
|
|
@ -556,41 +845,23 @@ func (p *printer) listFor(v *ListForExpr) {
|
|||
}
|
||||
}
|
||||
|
||||
if v.Brack != "" {
|
||||
p.depth++
|
||||
p.printf("%s", v.Brack[:1])
|
||||
open, close := "[", "]"
|
||||
if v.Curly {
|
||||
open, close = "{", "}"
|
||||
}
|
||||
p.depth++
|
||||
p.printf("%s", open)
|
||||
|
||||
if multiLine {
|
||||
if v.Brack != "" {
|
||||
p.margin += 4
|
||||
}
|
||||
p.margin += listIndentation
|
||||
p.newline()
|
||||
}
|
||||
|
||||
p.expr(v.X, precLow)
|
||||
p.expr(v.Body, precLow)
|
||||
|
||||
for _, c := range v.For {
|
||||
for _, c := range v.Clauses {
|
||||
space()
|
||||
p.printf("for ")
|
||||
for i, name := range c.For.Var {
|
||||
if i > 0 {
|
||||
p.printf(", ")
|
||||
}
|
||||
p.expr(name, precLow)
|
||||
}
|
||||
p.printf(" in ")
|
||||
p.expr(c.For.Expr, precLow)
|
||||
p.comment = append(p.comment, c.For.Comment().Suffix...)
|
||||
|
||||
for _, i := range c.Ifs {
|
||||
space()
|
||||
p.printf("if ")
|
||||
p.expr(i.Cond, precLow)
|
||||
p.comment = append(p.comment, i.Comment().Suffix...)
|
||||
}
|
||||
p.comment = append(p.comment, c.Comment().Suffix...)
|
||||
|
||||
p.expr(c, precLow)
|
||||
}
|
||||
|
||||
if multiLine {
|
||||
|
|
@ -598,14 +869,14 @@ func (p *printer) listFor(v *ListForExpr) {
|
|||
p.newline()
|
||||
p.printf("%s", strings.TrimSpace(com.Token))
|
||||
}
|
||||
if v.Brack != "" {
|
||||
p.margin -= 4
|
||||
}
|
||||
p.margin -= listIndentation
|
||||
p.newline()
|
||||
}
|
||||
|
||||
if v.Brack != "" {
|
||||
p.printf("%s", v.Brack[1:])
|
||||
p.depth--
|
||||
}
|
||||
p.printf("%s", close)
|
||||
p.depth--
|
||||
}
|
||||
|
||||
func (p *printer) isTopLevel() bool {
|
||||
return p.margin == 0
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,8 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
|||
package build
|
||||
|
||||
import (
|
||||
"path"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strings"
|
||||
|
|
@ -61,19 +63,24 @@ func Rewrite(f *File, info *RewriteInfo) {
|
|||
|
||||
for _, r := range rewrites {
|
||||
if !disabled(r.name) {
|
||||
r.fn(f, info)
|
||||
if f.Type&r.scope != 0 {
|
||||
r.fn(f, info)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// RewriteInfo collects information about what Rewrite did.
|
||||
type RewriteInfo struct {
|
||||
EditLabel int // number of label strings edited
|
||||
NameCall int // number of calls with argument names added
|
||||
SortCall int // number of call argument lists sorted
|
||||
SortStringList int // number of string lists sorted
|
||||
UnsafeSort int // number of unsafe string lists sorted
|
||||
Log []string // log entries - may change
|
||||
EditLabel int // number of label strings edited
|
||||
NameCall int // number of calls with argument names added
|
||||
SortCall int // number of call argument lists sorted
|
||||
SortStringList int // number of string lists sorted
|
||||
UnsafeSort int // number of unsafe string lists sorted
|
||||
SortLoad int // number of load argument lists sorted
|
||||
FormatDocstrings int // number of reindented docstrings
|
||||
ReorderArguments int // number of reordered function call arguments
|
||||
Log []string // log entries - may change
|
||||
}
|
||||
|
||||
func (info *RewriteInfo) String() string {
|
||||
|
|
@ -93,23 +100,56 @@ func (info *RewriteInfo) String() string {
|
|||
if info.UnsafeSort > 0 {
|
||||
s += " unsafesort"
|
||||
}
|
||||
if info.SortLoad > 0 {
|
||||
s += " sortload"
|
||||
}
|
||||
if info.FormatDocstrings > 0 {
|
||||
s += " formatdocstrings"
|
||||
}
|
||||
if info.ReorderArguments > 0 {
|
||||
s += " reorderarguments"
|
||||
}
|
||||
if s != "" {
|
||||
s = s[1:]
|
||||
}
|
||||
return s
|
||||
}
|
||||
|
||||
// Each rewrite function can be either applied for BUILD files, other files (such as .bzl),
|
||||
// or all files.
|
||||
const (
|
||||
scopeDefault = TypeDefault
|
||||
scopeBuild = TypeBuild | TypeWorkspace // BUILD and WORKSPACE files
|
||||
scopeBoth = scopeDefault | scopeBuild
|
||||
)
|
||||
|
||||
// rewrites is the list of all Buildifier rewrites, in the order in which they are applied.
|
||||
// The order here matters: for example, label canonicalization must happen
|
||||
// before sorting lists of strings.
|
||||
var rewrites = []struct {
|
||||
name string
|
||||
fn func(*File, *RewriteInfo)
|
||||
name string
|
||||
fn func(*File, *RewriteInfo)
|
||||
scope FileType
|
||||
}{
|
||||
{"callsort", sortCallArgs},
|
||||
{"label", fixLabels},
|
||||
{"listsort", sortStringLists},
|
||||
{"multiplus", fixMultilinePlus},
|
||||
{"callsort", sortCallArgs, scopeBuild},
|
||||
{"label", fixLabels, scopeBuild},
|
||||
{"listsort", sortStringLists, scopeBoth},
|
||||
{"multiplus", fixMultilinePlus, scopeBuild},
|
||||
{"loadsort", sortLoadArgs, scopeBoth},
|
||||
{"formatdocstrings", formatDocstrings, scopeBoth},
|
||||
{"reorderarguments", reorderArguments, scopeBoth},
|
||||
}
|
||||
|
||||
// DisableLoadSortForBuildFiles disables the loadsort transformation for BUILD files.
|
||||
// This is a temporary function for backward compatibility, can be called if there's plenty of
|
||||
// already formatted BUILD files that shouldn't be changed by the transformation.
|
||||
func DisableLoadSortForBuildFiles() {
|
||||
for i := range rewrites {
|
||||
if rewrites[i].name == "loadsort" {
|
||||
rewrites[i].scope = scopeDefault
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// leaveAlone reports whether any of the nodes on the stack are marked
|
||||
|
|
@ -160,8 +200,9 @@ func keepSorted(x Expr) bool {
|
|||
// First, it joins labels written as string addition, turning
|
||||
// "//x" + ":y" (usually split across multiple lines) into "//x:y".
|
||||
//
|
||||
// Second, it removes redundant target qualifiers, turning
|
||||
// "//third_party/m4:m4" into "//third_party/m4".
|
||||
// Second, it removes redundant target qualifiers, turning labels like
|
||||
// "//third_party/m4:m4" into "//third_party/m4" as well as ones like
|
||||
// "@foo//:foo" into "@foo".
|
||||
//
|
||||
func fixLabels(f *File, info *RewriteInfo) {
|
||||
joinLabel := func(p *Expr) {
|
||||
|
|
@ -194,22 +235,57 @@ func fixLabels(f *File, info *RewriteInfo) {
|
|||
*p = str1
|
||||
}
|
||||
|
||||
// labelRE matches label strings //x/y/z:abc.
|
||||
// $1 is //x/y/z, $2 is x/y/, $3 is z, $4 is :abc, and $5 is abc.
|
||||
labelRE := regexp.MustCompile(`^(//(.*/)?([^:]+))(:([^:]+))?$`)
|
||||
labelPrefix := "//"
|
||||
if tables.StripLabelLeadingSlashes {
|
||||
labelPrefix = ""
|
||||
}
|
||||
// labelRE matches label strings, e.g. @r//x/y/z:abc
|
||||
// where $1 is @r//x/y/z, $2 is @r//, $3 is r, $4 is z, $5 is abc.
|
||||
labelRE := regexp.MustCompile(`^(((?:@(\w+))?//|` + labelPrefix + `)(?:.+/)?([^:]*))(?::([^:]+))?$`)
|
||||
|
||||
shortenLabel := func(v Expr) {
|
||||
str, ok := v.(*StringExpr)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
editPerformed := false
|
||||
|
||||
if tables.StripLabelLeadingSlashes && strings.HasPrefix(str.Value, "//") {
|
||||
if filepath.Dir(f.Path) == "." || !strings.HasPrefix(str.Value, "//:") {
|
||||
editPerformed = true
|
||||
str.Value = str.Value[2:]
|
||||
}
|
||||
}
|
||||
|
||||
if tables.ShortenAbsoluteLabelsToRelative {
|
||||
thisPackage := labelPrefix + filepath.Dir(f.Path)
|
||||
// filepath.Dir on Windows uses backslashes as separators, while labels always have slashes.
|
||||
if filepath.Separator != '/' {
|
||||
thisPackage = strings.Replace(thisPackage, string(filepath.Separator), "/", -1)
|
||||
}
|
||||
|
||||
if str.Value == thisPackage {
|
||||
editPerformed = true
|
||||
str.Value = ":" + path.Base(str.Value)
|
||||
} else if strings.HasPrefix(str.Value, thisPackage+":") {
|
||||
editPerformed = true
|
||||
str.Value = str.Value[len(thisPackage):]
|
||||
}
|
||||
}
|
||||
|
||||
m := labelRE.FindStringSubmatch(str.Value)
|
||||
if m == nil {
|
||||
return
|
||||
}
|
||||
if m[3] == m[5] {
|
||||
info.EditLabel++
|
||||
if m[4] != "" && m[4] == m[5] { // e.g. //foo:foo
|
||||
editPerformed = true
|
||||
str.Value = m[1]
|
||||
} else if m[3] != "" && m[4] == "" && m[3] == m[5] { // e.g. @foo//:foo
|
||||
editPerformed = true
|
||||
str.Value = "@" + m[3]
|
||||
}
|
||||
if editPerformed {
|
||||
info.EditLabel++
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -227,8 +303,8 @@ func fixLabels(f *File, info *RewriteInfo) {
|
|||
if !ok || as.Op != "=" {
|
||||
continue
|
||||
}
|
||||
key, ok := as.X.(*LiteralExpr)
|
||||
if !ok || !tables.IsLabelArg[key.Token] || tables.LabelBlacklist[callName(v)+"."+key.Token] {
|
||||
key, ok := as.X.(*Ident)
|
||||
if !ok || !tables.IsLabelArg[key.Name] || tables.LabelBlacklist[callName(v)+"."+key.Name] {
|
||||
continue
|
||||
}
|
||||
if leaveAlone1(as.Y) {
|
||||
|
|
@ -242,6 +318,15 @@ func fixLabels(f *File, info *RewriteInfo) {
|
|||
joinLabel(&list.List[i])
|
||||
shortenLabel(list.List[i])
|
||||
}
|
||||
}
|
||||
if set, ok := as.Y.(*SetExpr); ok {
|
||||
for i := range set.List {
|
||||
if leaveAlone1(set.List[i]) {
|
||||
continue
|
||||
}
|
||||
joinLabel(&set.List[i])
|
||||
shortenLabel(set.List[i])
|
||||
}
|
||||
} else {
|
||||
joinLabel(&as.Y)
|
||||
shortenLabel(as.Y)
|
||||
|
|
@ -254,11 +339,11 @@ func fixLabels(f *File, info *RewriteInfo) {
|
|||
// callName returns the name of the rule being called by call.
|
||||
// If the call is not to a literal rule name, callName returns "".
|
||||
func callName(call *CallExpr) string {
|
||||
rule, ok := call.X.(*LiteralExpr)
|
||||
rule, ok := call.X.(*Ident)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return rule.Token
|
||||
return rule.Name
|
||||
}
|
||||
|
||||
// sortCallArgs sorts lists of named arguments to a call.
|
||||
|
|
@ -328,8 +413,8 @@ func ruleNamePriority(rule, arg string) int {
|
|||
// Otherwise argName returns "".
|
||||
func argName(x Expr) string {
|
||||
if as, ok := x.(*BinaryExpr); ok && as.Op == "=" {
|
||||
if id, ok := as.X.(*LiteralExpr); ok {
|
||||
return id.Token
|
||||
if id, ok := as.X.(*Ident); ok {
|
||||
return id.Name
|
||||
}
|
||||
}
|
||||
return ""
|
||||
|
|
@ -379,12 +464,12 @@ func sortStringLists(f *File, info *RewriteInfo) {
|
|||
if !ok || as.Op != "=" || leaveAlone1(as) || doNotSort(as) {
|
||||
continue
|
||||
}
|
||||
key, ok := as.X.(*LiteralExpr)
|
||||
key, ok := as.X.(*Ident)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
context := rule + "." + key.Token
|
||||
if !tables.IsSortableListArg[key.Token] || tables.SortableBlacklist[context] {
|
||||
context := rule + "." + key.Name
|
||||
if !tables.IsSortableListArg[key.Name] || tables.SortableBlacklist[context] || f.Type == TypeDefault {
|
||||
continue
|
||||
}
|
||||
if disabled("unsafesort") && !tables.SortableWhitelist[context] && !allowedSort(context) {
|
||||
|
|
@ -414,7 +499,7 @@ func sortStringLists(f *File, info *RewriteInfo) {
|
|||
return
|
||||
}
|
||||
// "keep sorted" comment above first list element also forces sorting of list.
|
||||
if len(v.List) > 0 && keepSorted(v.List[0]) {
|
||||
if len(v.List) > 0 && (keepSorted(v) || keepSorted(v.List[0])) {
|
||||
sortStringList(v, info, "?")
|
||||
}
|
||||
}
|
||||
|
|
@ -435,7 +520,7 @@ func sortStringList(x Expr, info *RewriteInfo, context string) {
|
|||
return
|
||||
}
|
||||
|
||||
forceSort := keepSorted(list.List[0])
|
||||
forceSort := keepSorted(list) || keepSorted(list.List[0])
|
||||
|
||||
// TODO(bazel-team): Decide how to recognize lists that cannot
|
||||
// be sorted. Avoiding all lists with comments avoids sorting
|
||||
|
|
@ -528,11 +613,11 @@ func callArgName(stk []Expr) string {
|
|||
if !ok {
|
||||
return ""
|
||||
}
|
||||
rule, ok := call.X.(*LiteralExpr)
|
||||
rule, ok := call.X.(*Ident)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
return rule.Token + "." + arg
|
||||
return rule.Name + "." + arg
|
||||
}
|
||||
|
||||
// A stringSortKey records information about a single string literal to be
|
||||
|
|
@ -559,7 +644,7 @@ func makeSortKey(index int, x *StringExpr) stringSortKey {
|
|||
switch {
|
||||
case strings.HasPrefix(x.Value, ":"):
|
||||
key.phase = 1
|
||||
case strings.HasPrefix(x.Value, "//"):
|
||||
case strings.HasPrefix(x.Value, "//") || (tables.StripLabelLeadingSlashes && !strings.HasPrefix(x.Value, "@")):
|
||||
key.phase = 2
|
||||
case strings.HasPrefix(x.Value, "@"):
|
||||
key.phase = 3
|
||||
|
|
@ -753,6 +838,20 @@ func fixMultilinePlus(f *File, info *RewriteInfo) {
|
|||
})
|
||||
}
|
||||
|
||||
func sortLoadArgs(f *File, info *RewriteInfo) {
|
||||
Walk(f, func(v Expr, stk []Expr) {
|
||||
load, ok := v.(*LoadStmt)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
args := loadArgs{From: load.From, To: load.To}
|
||||
sort.Sort(args)
|
||||
if args.modified {
|
||||
info.SortLoad++
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// hasComments reports whether any comments are associated with
|
||||
// the list or its elements.
|
||||
func hasComments(list *ListExpr) (line, suffix bool) {
|
||||
|
|
@ -774,3 +873,129 @@ func hasComments(list *ListExpr) (line, suffix bool) {
|
|||
}
|
||||
return
|
||||
}
|
||||
|
||||
// A wrapper for a LoadStmt's From and To slices for consistent sorting of their contents.
|
||||
// It's assumed that the following slices have the same length. The contents are sorted by
|
||||
// the `To` attribute, but all items with equal "From" and "To" parts are placed before the items
|
||||
// with different parts.
|
||||
type loadArgs struct {
|
||||
From []*Ident
|
||||
To []*Ident
|
||||
modified bool
|
||||
}
|
||||
|
||||
func (args loadArgs) Len() int {
|
||||
return len(args.From)
|
||||
}
|
||||
|
||||
func (args loadArgs) Swap(i, j int) {
|
||||
args.From[i], args.From[j] = args.From[j], args.From[i]
|
||||
args.To[i], args.To[j] = args.To[j], args.To[i]
|
||||
args.modified = true
|
||||
}
|
||||
|
||||
func (args loadArgs) Less(i, j int) bool {
|
||||
// Arguments with equal "from" and "to" parts are prioritized
|
||||
equalI := args.From[i].Name == args.To[i].Name
|
||||
equalJ := args.From[j].Name == args.To[j].Name
|
||||
if equalI != equalJ {
|
||||
// If equalI and !equalJ, return true, otherwise false.
|
||||
// Equivalently, return equalI.
|
||||
return equalI
|
||||
}
|
||||
return args.To[i].Name < args.To[j].Name
|
||||
}
|
||||
|
||||
// formatDocstrings fixes the indentation and trailing whitespace of docstrings
|
||||
func formatDocstrings(f *File, info *RewriteInfo) {
|
||||
Walk(f, func(v Expr, stk []Expr) {
|
||||
def, ok := v.(*DefStmt)
|
||||
if !ok || len(def.Body) == 0 {
|
||||
return
|
||||
}
|
||||
docstring, ok := def.Body[0].(*StringExpr)
|
||||
if !ok || !docstring.TripleQuote {
|
||||
return
|
||||
}
|
||||
|
||||
oldIndentation := docstring.Start.LineRune - 1 // LineRune starts with 1
|
||||
newIndentation := nestedIndentation * len(stk)
|
||||
|
||||
// Operate on Token, not Value, because their line breaks can be different if a line ends with
|
||||
// a backslash.
|
||||
updatedToken := formatString(docstring.Token, oldIndentation, newIndentation)
|
||||
if updatedToken != docstring.Token {
|
||||
docstring.Token = updatedToken
|
||||
// Update the value to keep it consistent with Token
|
||||
docstring.Value, _, _ = unquote(updatedToken)
|
||||
info.FormatDocstrings++
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// formatString modifies a string value of a docstring to match the new indentation level and
|
||||
// to remove trailing whitespace from its lines.
|
||||
func formatString(value string, oldIndentation, newIndentation int) string {
|
||||
difference := newIndentation - oldIndentation
|
||||
lines := strings.Split(value, "\n")
|
||||
for i, line := range lines {
|
||||
if i == 0 {
|
||||
// The first line shouldn't be touched because it starts right after ''' or """
|
||||
continue
|
||||
}
|
||||
if difference > 0 {
|
||||
line = strings.Repeat(" ", difference) + line
|
||||
} else {
|
||||
for i, rune := range line {
|
||||
if i == -difference || rune != ' ' {
|
||||
line = line[i:]
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
if i != len(lines)-1 {
|
||||
// Remove trailing space from the line unless it's the last line that's responsible
|
||||
// for the indentation of the closing `"""`
|
||||
line = strings.TrimRight(line, " ")
|
||||
}
|
||||
lines[i] = line
|
||||
}
|
||||
return strings.Join(lines, "\n")
|
||||
}
|
||||
|
||||
// argumentType returns an integer by which funcall arguments can be sorted:
|
||||
// 1 for positional, 2 for named, 3 for *args, 4 for **kwargs
|
||||
func argumentType(expr Expr) int {
|
||||
switch expr := expr.(type) {
|
||||
case *UnaryExpr:
|
||||
switch expr.Op {
|
||||
case "**":
|
||||
return 4
|
||||
case "*":
|
||||
return 3
|
||||
}
|
||||
case *BinaryExpr:
|
||||
if expr.Op == "=" {
|
||||
return 2
|
||||
}
|
||||
}
|
||||
return 1
|
||||
}
|
||||
|
||||
// reorderArguments fixes the order of arguments of a function call
|
||||
// (positional, named, *args, **kwargs)
|
||||
func reorderArguments(f *File, info *RewriteInfo) {
|
||||
Walk(f, func(expr Expr, stack []Expr) {
|
||||
call, ok := expr.(*CallExpr)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
compare := func(i, j int) bool {
|
||||
return argumentType(call.List[i]) < argumentType(call.List[j])
|
||||
}
|
||||
if !sort.SliceIsSorted(call.List, compare) {
|
||||
sort.SliceStable(call.List, compare)
|
||||
info.ReorderArguments++
|
||||
}
|
||||
})
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,33 +18,64 @@ distributed under the License is distributed on an "AS IS" BASIS,
|
|||
|
||||
package build
|
||||
|
||||
import "strings"
|
||||
import (
|
||||
"path/filepath"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// A Rule represents a single BUILD rule.
|
||||
type Rule struct {
|
||||
Call *CallExpr
|
||||
Call *CallExpr
|
||||
ImplicitName string // The name which should be used if the name attribute is not set. See the comment on File.implicitRuleName.
|
||||
}
|
||||
|
||||
// NewRule is a simple constructor for Rule.
|
||||
func NewRule(call *CallExpr) *Rule {
|
||||
return &Rule{call, ""}
|
||||
}
|
||||
|
||||
func (f *File) Rule(call *CallExpr) *Rule {
|
||||
r := &Rule{call, ""}
|
||||
if r.AttrString("name") == "" {
|
||||
r.ImplicitName = f.implicitRuleName()
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
||||
// Rules returns the rules in the file of the given kind (such as "go_library").
|
||||
// If kind == "", Rules returns all rules in the file.
|
||||
func (f *File) Rules(kind string) []*Rule {
|
||||
var all []*Rule
|
||||
|
||||
for _, stmt := range f.Stmt {
|
||||
call, ok := stmt.(*CallExpr)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
rule := &Rule{call}
|
||||
if kind != "" && rule.Kind() != kind {
|
||||
continue
|
||||
}
|
||||
all = append(all, rule)
|
||||
Walk(stmt, func(x Expr, stk []Expr) {
|
||||
call, ok := x.(*CallExpr)
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
|
||||
// Skip nested calls.
|
||||
for _, frame := range stk {
|
||||
if _, ok := frame.(*CallExpr); ok {
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// Check if the rule kind is correct.
|
||||
rule := f.Rule(call)
|
||||
if kind != "" && rule.Kind() != kind {
|
||||
return
|
||||
}
|
||||
all = append(all, rule)
|
||||
})
|
||||
}
|
||||
|
||||
return all
|
||||
}
|
||||
|
||||
// RuleAt returns the rule in the file that starts at the specified line, or null if no such rule.
|
||||
func (f *File) RuleAt(linenum int) *Rule {
|
||||
|
||||
for _, stmt := range f.Stmt {
|
||||
call, ok := stmt.(*CallExpr)
|
||||
if !ok {
|
||||
|
|
@ -52,7 +83,7 @@ func (f *File) RuleAt(linenum int) *Rule {
|
|||
}
|
||||
start, end := call.X.Span()
|
||||
if start.Line <= linenum && linenum <= end.Line {
|
||||
return &Rule{call}
|
||||
return f.Rule(call)
|
||||
}
|
||||
}
|
||||
return nil
|
||||
|
|
@ -65,9 +96,9 @@ func (f *File) DelRules(kind, name string) int {
|
|||
var i int
|
||||
for _, stmt := range f.Stmt {
|
||||
if call, ok := stmt.(*CallExpr); ok {
|
||||
r := &Rule{call}
|
||||
r := f.Rule(call)
|
||||
if (kind == "" || r.Kind() == kind) &&
|
||||
(name == "" || r.AttrString("name") == name) {
|
||||
(name == "" || r.Name() == name) {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
|
@ -79,6 +110,42 @@ func (f *File) DelRules(kind, name string) int {
|
|||
return n
|
||||
}
|
||||
|
||||
// If a build file contains exactly one unnamed rule, and no rules in the file explicitly have the
|
||||
// same name as the name of the directory the build file is in, we treat the unnamed rule as if it
|
||||
// had the name of the directory containing the BUILD file.
|
||||
// This is following a convention used in the Pants build system to cut down on boilerplate.
|
||||
func (f *File) implicitRuleName() string {
|
||||
// We disallow empty names in the top-level BUILD files.
|
||||
dir := filepath.Dir(f.Path)
|
||||
if dir == "." {
|
||||
return ""
|
||||
}
|
||||
sawAnonymousRule := false
|
||||
possibleImplicitName := filepath.Base(dir)
|
||||
|
||||
for _, stmt := range f.Stmt {
|
||||
call, ok := stmt.(*CallExpr)
|
||||
if !ok {
|
||||
continue
|
||||
}
|
||||
temp := &Rule{call, ""}
|
||||
if temp.AttrString("name") == possibleImplicitName {
|
||||
// A target explicitly has the name of the dir, so no implicit targets are allowed.
|
||||
return ""
|
||||
}
|
||||
if temp.Kind() != "" && temp.AttrString("name") == "" {
|
||||
if sawAnonymousRule {
|
||||
return ""
|
||||
}
|
||||
sawAnonymousRule = true
|
||||
}
|
||||
}
|
||||
if sawAnonymousRule {
|
||||
return possibleImplicitName
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// Kind returns the rule's kind (such as "go_library").
|
||||
// The kind of the rule may be given by a literal or it may be a sequence of dot expressions that
|
||||
// begins with a literal, if the call expression does not conform to either of these forms, an
|
||||
|
|
@ -94,11 +161,11 @@ func (r *Rule) Kind() string {
|
|||
names = append(names, x.Name)
|
||||
expr = x.X
|
||||
}
|
||||
x, ok := expr.(*LiteralExpr)
|
||||
x, ok := expr.(*Ident)
|
||||
if !ok {
|
||||
return ""
|
||||
}
|
||||
names = append(names, x.Token)
|
||||
names = append(names, x.Name)
|
||||
// Reverse the elements since the deepest expression contains the leading literal
|
||||
for l, r := 0, len(names)-1; l < r; l, r = l+1, r-1 {
|
||||
names[l], names[r] = names[r], names[l]
|
||||
|
|
@ -110,7 +177,7 @@ func (r *Rule) Kind() string {
|
|||
func (r *Rule) SetKind(kind string) {
|
||||
names := strings.Split(kind, ".")
|
||||
var expr Expr
|
||||
expr = &LiteralExpr{Token: names[0]}
|
||||
expr = &Ident{Name: names[0]}
|
||||
for _, name := range names[1:] {
|
||||
expr = &DotExpr{X: expr, Name: name}
|
||||
}
|
||||
|
|
@ -118,9 +185,13 @@ func (r *Rule) SetKind(kind string) {
|
|||
}
|
||||
|
||||
// Name returns the rule's target name.
|
||||
// If the rule has no target name, Name returns the empty string.
|
||||
// If the rule has no explicit target name, Name returns the implicit name if there is one, else the empty string.
|
||||
func (r *Rule) Name() string {
|
||||
return r.AttrString("name")
|
||||
explicitName := r.AttrString("name")
|
||||
if explicitName == "" && r.Kind() != "package" {
|
||||
return r.ImplicitName
|
||||
}
|
||||
return explicitName
|
||||
}
|
||||
|
||||
// AttrKeys returns the keys of all the rule's attributes.
|
||||
|
|
@ -128,8 +199,8 @@ func (r *Rule) AttrKeys() []string {
|
|||
var keys []string
|
||||
for _, expr := range r.Call.List {
|
||||
if binExpr, ok := expr.(*BinaryExpr); ok && binExpr.Op == "=" {
|
||||
if keyExpr, ok := binExpr.X.(*LiteralExpr); ok {
|
||||
keys = append(keys, keyExpr.Token)
|
||||
if keyExpr, ok := binExpr.X.(*Ident); ok {
|
||||
keys = append(keys, keyExpr.Name)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -145,8 +216,8 @@ func (r *Rule) AttrDefn(key string) *BinaryExpr {
|
|||
if !ok || as.Op != "=" {
|
||||
continue
|
||||
}
|
||||
k, ok := as.X.(*LiteralExpr)
|
||||
if !ok || k.Token != key {
|
||||
k, ok := as.X.(*Ident)
|
||||
if !ok || k.Name != key {
|
||||
continue
|
||||
}
|
||||
return as
|
||||
|
|
@ -174,8 +245,8 @@ func (r *Rule) DelAttr(key string) Expr {
|
|||
if !ok || as.Op != "=" {
|
||||
continue
|
||||
}
|
||||
k, ok := as.X.(*LiteralExpr)
|
||||
if !ok || k.Token != key {
|
||||
k, ok := as.X.(*Ident)
|
||||
if !ok || k.Name != key {
|
||||
continue
|
||||
}
|
||||
copy(list[i:], list[i+1:])
|
||||
|
|
@ -197,7 +268,7 @@ func (r *Rule) SetAttr(key string, val Expr) {
|
|||
|
||||
r.Call.List = append(r.Call.List,
|
||||
&BinaryExpr{
|
||||
X: &LiteralExpr{Token: key},
|
||||
X: &Ident{Name: key},
|
||||
Op: "=",
|
||||
Y: val,
|
||||
},
|
||||
|
|
@ -210,11 +281,14 @@ func (r *Rule) SetAttr(key string, val Expr) {
|
|||
// If the rule has no such attribute or the attribute is not an identifier or number,
|
||||
// AttrLiteral returns "".
|
||||
func (r *Rule) AttrLiteral(key string) string {
|
||||
lit, ok := r.Attr(key).(*LiteralExpr)
|
||||
if !ok {
|
||||
return ""
|
||||
value := r.Attr(key)
|
||||
if ident, ok := value.(*Ident); ok {
|
||||
return ident.Name
|
||||
}
|
||||
return lit.Token
|
||||
if literal, ok := value.(*LiteralExpr); ok {
|
||||
return literal.Token
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// AttrString returns the value of the rule's attribute
|
||||
|
|
|
|||
|
|
@ -57,9 +57,8 @@ type Expr interface {
|
|||
|
||||
// A Comment represents a single # comment.
|
||||
type Comment struct {
|
||||
Start Position
|
||||
Token string // without trailing newline
|
||||
Suffix bool // an end of line (not whole line) comment
|
||||
Start Position
|
||||
Token string // without trailing newline
|
||||
}
|
||||
|
||||
// Comments collects the comments associated with an expression.
|
||||
|
|
@ -83,16 +82,25 @@ func (c *Comments) Comment() *Comments {
|
|||
// A File represents an entire BUILD file.
|
||||
type File struct {
|
||||
Path string // file path, relative to workspace directory
|
||||
Type FileType
|
||||
Comments
|
||||
Stmt []Expr
|
||||
}
|
||||
|
||||
func (x *File) Span() (start, end Position) {
|
||||
if len(x.Stmt) == 0 {
|
||||
// DisplayPath returns the filename if it's not empty, "<stdin>" otherwise
|
||||
func (f *File) DisplayPath() string {
|
||||
if f.Path == "" {
|
||||
return "<stdin>"
|
||||
}
|
||||
return f.Path
|
||||
}
|
||||
|
||||
func (f *File) Span() (start, end Position) {
|
||||
if len(f.Stmt) == 0 {
|
||||
return
|
||||
}
|
||||
start, _ = x.Stmt[0].Span()
|
||||
_, end = x.Stmt[len(x.Stmt)-1].Span()
|
||||
start, _ = f.Stmt[0].Span()
|
||||
_, end = f.Stmt[len(f.Stmt)-1].Span()
|
||||
return start, end
|
||||
}
|
||||
|
||||
|
|
@ -107,18 +115,39 @@ func (x *CommentBlock) Span() (start, end Position) {
|
|||
return x.Start, x.Start
|
||||
}
|
||||
|
||||
// A PythonBlock represents a blob of Python code, typically a def or for loop.
|
||||
type PythonBlock struct {
|
||||
// An Ident represents an identifier.
|
||||
type Ident struct {
|
||||
Comments
|
||||
Start Position
|
||||
Token string // raw Python code, including final newline
|
||||
NamePos Position
|
||||
Name string
|
||||
}
|
||||
|
||||
func (x *PythonBlock) Span() (start, end Position) {
|
||||
return x.Start, x.Start.add(x.Token)
|
||||
func (x *Ident) Span() (start, end Position) {
|
||||
return x.NamePos, x.NamePos.add(x.Name)
|
||||
}
|
||||
|
||||
// A LiteralExpr represents a literal identifier or number.
|
||||
// BranchStmt represents a `pass` statement.
|
||||
type BranchStmt struct {
|
||||
Comments
|
||||
Token string // pass, break, continue
|
||||
TokenPos Position
|
||||
}
|
||||
|
||||
func (x *BranchStmt) Span() (start, end Position) {
|
||||
return x.TokenPos, x.TokenPos.add(x.Token)
|
||||
}
|
||||
|
||||
func (x *Ident) asString() *StringExpr {
|
||||
_, end := x.Span()
|
||||
return &StringExpr{
|
||||
Comments: x.Comments,
|
||||
Start: x.NamePos,
|
||||
Value: x.Name,
|
||||
End: end,
|
||||
}
|
||||
}
|
||||
|
||||
// A LiteralExpr represents a literal number.
|
||||
type LiteralExpr struct {
|
||||
Comments
|
||||
Start Position
|
||||
|
|
@ -189,32 +218,32 @@ func (x *DotExpr) Span() (start, end Position) {
|
|||
return start, x.NamePos.add(x.Name)
|
||||
}
|
||||
|
||||
// A ListForExpr represents a list comprehension expression: [X for ... if ...].
|
||||
type ListForExpr struct {
|
||||
// A Comprehension represents a list comprehension expression: [X for ... if ...].
|
||||
type Comprehension struct {
|
||||
Comments
|
||||
Curly bool // curly braces (as opposed to square brackets)
|
||||
Lbrack Position
|
||||
Body Expr
|
||||
Clauses []Expr // = *ForClause | *IfClause
|
||||
ForceMultiLine bool // split expression across multiple lines
|
||||
Brack string // "", "()", or "[]"
|
||||
Start Position
|
||||
X Expr
|
||||
For []*ForClauseWithIfClausesOpt
|
||||
End
|
||||
}
|
||||
|
||||
func (x *ListForExpr) Span() (start, end Position) {
|
||||
return x.Start, x.End.Pos.add("]")
|
||||
func (x *Comprehension) Span() (start, end Position) {
|
||||
return x.Lbrack, x.End.Pos.add("]")
|
||||
}
|
||||
|
||||
// A ForClause represents a for clause in a list comprehension: for Var in Expr.
|
||||
type ForClause struct {
|
||||
Comments
|
||||
For Position
|
||||
Var []Expr
|
||||
Vars Expr
|
||||
In Position
|
||||
Expr Expr
|
||||
X Expr
|
||||
}
|
||||
|
||||
func (x *ForClause) Span() (start, end Position) {
|
||||
_, end = x.Expr.Span()
|
||||
_, end = x.X.Span()
|
||||
return x.For, end
|
||||
}
|
||||
|
||||
|
|
@ -230,23 +259,6 @@ func (x *IfClause) Span() (start, end Position) {
|
|||
return x.If, end
|
||||
}
|
||||
|
||||
// A ForClauseWithIfClausesOpt represents a for clause in a list comprehension followed by optional
|
||||
// if expressions: for ... in ... [if ... if ...]
|
||||
type ForClauseWithIfClausesOpt struct {
|
||||
Comments
|
||||
For *ForClause
|
||||
Ifs []*IfClause
|
||||
}
|
||||
|
||||
func (x *ForClauseWithIfClausesOpt) Span() (start, end Position) {
|
||||
start, end = x.For.Span()
|
||||
if len(x.Ifs) > 0 {
|
||||
_, end = x.Ifs[len(x.Ifs) - 1].Span()
|
||||
}
|
||||
|
||||
return start, end
|
||||
}
|
||||
|
||||
// A KeyValueExpr represents a dictionary entry: Key: Value.
|
||||
type KeyValueExpr struct {
|
||||
Comments
|
||||
|
|
@ -265,8 +277,7 @@ func (x *KeyValueExpr) Span() (start, end Position) {
|
|||
type DictExpr struct {
|
||||
Comments
|
||||
Start Position
|
||||
List []Expr // all *KeyValueExprs
|
||||
Comma Position // position of trailing comma, if any
|
||||
List []Expr // all *KeyValueExprs
|
||||
End
|
||||
ForceMultiLine bool // force multiline form when printing
|
||||
}
|
||||
|
|
@ -280,7 +291,6 @@ type ListExpr struct {
|
|||
Comments
|
||||
Start Position
|
||||
List []Expr
|
||||
Comma Position // position of trailing comma, if any
|
||||
End
|
||||
ForceMultiLine bool // force multiline form when printing
|
||||
}
|
||||
|
|
@ -289,19 +299,37 @@ func (x *ListExpr) Span() (start, end Position) {
|
|||
return x.Start, x.End.Pos.add("]")
|
||||
}
|
||||
|
||||
// A TupleExpr represents a tuple literal: (List)
|
||||
type TupleExpr struct {
|
||||
// A SetExpr represents a set literal: { List }.
|
||||
type SetExpr struct {
|
||||
Comments
|
||||
Start Position
|
||||
List []Expr
|
||||
Comma Position // position of trailing comma, if any
|
||||
End
|
||||
ForceMultiLine bool // force multiline form when printing
|
||||
}
|
||||
|
||||
func (x *SetExpr) Span() (start, end Position) {
|
||||
return x.Start, x.End.Pos.add("}")
|
||||
}
|
||||
|
||||
// A TupleExpr represents a tuple literal: (List)
|
||||
type TupleExpr struct {
|
||||
Comments
|
||||
NoBrackets bool // true if a tuple has no brackets, e.g. `a, b = x`
|
||||
Start Position
|
||||
List []Expr
|
||||
End
|
||||
ForceCompact bool // force compact (non-multiline) form when printing
|
||||
ForceMultiLine bool // force multiline form when printing
|
||||
}
|
||||
|
||||
func (x *TupleExpr) Span() (start, end Position) {
|
||||
return x.Start, x.End.Pos.add(")")
|
||||
if !x.NoBrackets {
|
||||
return x.Start, x.End.Pos.add(")")
|
||||
}
|
||||
start, _ = x.List[0].Span()
|
||||
_, end = x.List[len(x.List)-1].Span()
|
||||
return start, end
|
||||
}
|
||||
|
||||
// A UnaryExpr represents a unary expression: Op X.
|
||||
|
|
@ -346,20 +374,22 @@ func (x *ParenExpr) Span() (start, end Position) {
|
|||
return x.Start, x.End.Pos.add(")")
|
||||
}
|
||||
|
||||
// A SliceExpr represents a slice expression: X[Y:Z].
|
||||
// A SliceExpr represents a slice expression: expr[from:to] or expr[from:to:step] .
|
||||
type SliceExpr struct {
|
||||
Comments
|
||||
X Expr
|
||||
SliceStart Position
|
||||
Y Expr
|
||||
Colon Position
|
||||
Z Expr
|
||||
End Position
|
||||
X Expr
|
||||
SliceStart Position
|
||||
From Expr
|
||||
FirstColon Position
|
||||
To Expr
|
||||
SecondColon Position
|
||||
Step Expr
|
||||
End Position
|
||||
}
|
||||
|
||||
func (x *SliceExpr) Span() (start, end Position) {
|
||||
start, _ = x.X.Span()
|
||||
return start, x.End
|
||||
return start, x.End.add("]")
|
||||
}
|
||||
|
||||
// An IndexExpr represents an index expression: X[Y].
|
||||
|
|
@ -373,21 +403,30 @@ type IndexExpr struct {
|
|||
|
||||
func (x *IndexExpr) Span() (start, end Position) {
|
||||
start, _ = x.X.Span()
|
||||
return start, x.End
|
||||
return start, x.End.add("]")
|
||||
}
|
||||
|
||||
// A Function represents the common parts of LambdaExpr and DefStmt
|
||||
type Function struct {
|
||||
Comments
|
||||
StartPos Position // position of DEF or LAMBDA token
|
||||
Params []Expr
|
||||
Body []Expr
|
||||
}
|
||||
|
||||
func (x *Function) Span() (start, end Position) {
|
||||
_, end = x.Body[len(x.Body)-1].Span()
|
||||
return x.StartPos, end
|
||||
}
|
||||
|
||||
// A LambdaExpr represents a lambda expression: lambda Var: Expr.
|
||||
type LambdaExpr struct {
|
||||
Comments
|
||||
Lambda Position
|
||||
Var []Expr
|
||||
Colon Position
|
||||
Expr Expr
|
||||
Function
|
||||
}
|
||||
|
||||
func (x *LambdaExpr) Span() (start, end Position) {
|
||||
_, end = x.Expr.Span()
|
||||
return x.Lambda, end
|
||||
return x.Function.Span()
|
||||
}
|
||||
|
||||
// ConditionalExpr represents the conditional: X if TEST else ELSE.
|
||||
|
|
@ -407,3 +446,88 @@ func (x *ConditionalExpr) Span() (start, end Position) {
|
|||
_, end = x.Else.Span()
|
||||
return start, end
|
||||
}
|
||||
|
||||
// A LoadStmt loads another module and binds names from it:
|
||||
// load(Module, "x", y="foo").
|
||||
//
|
||||
// The AST is slightly unfaithful to the concrete syntax here because
|
||||
// Skylark's load statement, so that it can be implemented in Python,
|
||||
// binds some names (like y above) with an identifier and some (like x)
|
||||
// without. For consistency we create fake identifiers for all the
|
||||
// strings.
|
||||
type LoadStmt struct {
|
||||
Comments
|
||||
Load Position
|
||||
Module *StringExpr
|
||||
From []*Ident // name defined in loading module
|
||||
To []*Ident // name in loaded module
|
||||
Rparen End
|
||||
ForceCompact bool // force compact (non-multiline) form when printing
|
||||
}
|
||||
|
||||
func (x *LoadStmt) Span() (start, end Position) {
|
||||
return x.Load, x.Rparen.Pos.add(")")
|
||||
}
|
||||
|
||||
// A DefStmt represents a function definition expression: def foo(List):.
|
||||
type DefStmt struct {
|
||||
Comments
|
||||
Function
|
||||
Name string
|
||||
ForceCompact bool // force compact (non-multiline) form when printing the arguments
|
||||
ForceMultiLine bool // force multiline form when printing the arguments
|
||||
}
|
||||
|
||||
func (x *DefStmt) Span() (start, end Position) {
|
||||
return x.Function.Span()
|
||||
}
|
||||
|
||||
// A ReturnStmt represents a return statement: return f(x).
|
||||
type ReturnStmt struct {
|
||||
Comments
|
||||
Return Position
|
||||
Result Expr // may be nil
|
||||
}
|
||||
|
||||
func (x *ReturnStmt) Span() (start, end Position) {
|
||||
if x.Result == nil {
|
||||
return x.Return, x.Return.add("return")
|
||||
}
|
||||
_, end = x.Result.Span()
|
||||
return x.Return, end
|
||||
}
|
||||
|
||||
// A ForStmt represents a for loop block: for x in range(10):.
|
||||
type ForStmt struct {
|
||||
Comments
|
||||
Function
|
||||
For Position // position of for
|
||||
Vars Expr
|
||||
X Expr
|
||||
Body []Expr
|
||||
}
|
||||
|
||||
func (x *ForStmt) Span() (start, end Position) {
|
||||
_, end = x.Body[len(x.Body)-1].Span()
|
||||
return x.For, end
|
||||
}
|
||||
|
||||
// An IfStmt represents an if-else block: if x: ... else: ... .
|
||||
// `elif`s are treated as a chain of `IfStmt`s.
|
||||
type IfStmt struct {
|
||||
Comments
|
||||
If Position // position of if
|
||||
Cond Expr
|
||||
True []Expr
|
||||
ElsePos End // position of else or elif
|
||||
False []Expr // optional
|
||||
}
|
||||
|
||||
func (x *IfStmt) Span() (start, end Position) {
|
||||
body := x.False
|
||||
if body == nil {
|
||||
body = x.True
|
||||
}
|
||||
_, end = body[len(body)-1].Span()
|
||||
return x.If, end
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,7 +30,7 @@ func Walk(v Expr, f func(x Expr, stk []Expr)) {
|
|||
})
|
||||
}
|
||||
|
||||
// WalkAndUpdate walks the expression tree v, calling f on all subexpressions
|
||||
// Edit walks the expression tree v, calling f on all subexpressions
|
||||
// in a preorder traversal. If f returns a non-nil value, the tree is mutated.
|
||||
// The new value replaces the old one.
|
||||
//
|
||||
|
|
@ -42,12 +42,16 @@ func Edit(v Expr, f func(x Expr, stk []Expr) Expr) Expr {
|
|||
return walk1(&v, &stack, f)
|
||||
}
|
||||
|
||||
// walk1 is the actual implementation of Walk and WalkAndUpdate.
|
||||
// It has the same signature and meaning as Walk,
|
||||
// except that it maintains in *stack the current stack
|
||||
// of nodes. Using a pointer to a slice here ensures that
|
||||
// as the stack grows and shrinks the storage can be
|
||||
// reused for the next growth.
|
||||
// EditChildren is similar to Edit but doesn't visit the initial node, instead goes
|
||||
// directly to its children.
|
||||
func EditChildren(v Expr, f func(x Expr, stk []Expr) Expr) {
|
||||
stack := []Expr{v}
|
||||
WalkOnce(v, func(x *Expr) {
|
||||
walk1(x, &stack, f)
|
||||
})
|
||||
}
|
||||
|
||||
// walk1 is a helper function for Walk, WalkWithPostfix, and Edit.
|
||||
func walk1(v *Expr, stack *[]Expr, f func(x Expr, stk []Expr) Expr) Expr {
|
||||
if v == nil {
|
||||
return nil
|
||||
|
|
@ -57,72 +61,170 @@ func walk1(v *Expr, stack *[]Expr, f func(x Expr, stk []Expr) Expr) Expr {
|
|||
*v = res
|
||||
}
|
||||
*stack = append(*stack, *v)
|
||||
switch v := (*v).(type) {
|
||||
case *File:
|
||||
for _, stmt := range v.Stmt {
|
||||
walk1(&stmt, stack, f)
|
||||
}
|
||||
case *DotExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
case *IndexExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
walk1(&v.Y, stack, f)
|
||||
case *KeyValueExpr:
|
||||
walk1(&v.Key, stack, f)
|
||||
walk1(&v.Value, stack, f)
|
||||
case *SliceExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
if v.Y != nil {
|
||||
walk1(&v.Y, stack, f)
|
||||
}
|
||||
if v.Z != nil {
|
||||
walk1(&v.Z, stack, f)
|
||||
}
|
||||
case *ParenExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
case *UnaryExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
case *BinaryExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
walk1(&v.Y, stack, f)
|
||||
case *LambdaExpr:
|
||||
for i := range v.Var {
|
||||
walk1(&v.Var[i], stack, f)
|
||||
}
|
||||
walk1(&v.Expr, stack, f)
|
||||
case *CallExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
for i := range v.List {
|
||||
walk1(&v.List[i], stack, f)
|
||||
}
|
||||
case *ListExpr:
|
||||
for i := range v.List {
|
||||
walk1(&v.List[i], stack, f)
|
||||
}
|
||||
case *TupleExpr:
|
||||
for i := range v.List {
|
||||
walk1(&v.List[i], stack, f)
|
||||
}
|
||||
case *DictExpr:
|
||||
for i := range v.List {
|
||||
walk1(&v.List[i], stack, f)
|
||||
}
|
||||
case *ListForExpr:
|
||||
walk1(&v.X, stack, f)
|
||||
for _, c := range v.For {
|
||||
for j := range c.For.Var {
|
||||
walk1(&c.For.Var[j], stack, f)
|
||||
}
|
||||
walk1(&c.For.Expr, stack, f)
|
||||
for _, i := range c.Ifs {
|
||||
walk1(&i.Cond, stack, f)
|
||||
}
|
||||
}
|
||||
case *ConditionalExpr:
|
||||
walk1(&v.Then, stack, f)
|
||||
walk1(&v.Test, stack, f)
|
||||
walk1(&v.Else, stack, f)
|
||||
}
|
||||
|
||||
WalkOnce(*v, func(x *Expr) {
|
||||
walk1(x, stack, f)
|
||||
})
|
||||
|
||||
*stack = (*stack)[:len(*stack)-1]
|
||||
return *v
|
||||
}
|
||||
|
||||
// WalkOnce calls f on every child of v.
|
||||
func WalkOnce(v Expr, f func(x *Expr)) {
|
||||
switch v := v.(type) {
|
||||
case *File:
|
||||
for i := range v.Stmt {
|
||||
f(&v.Stmt[i])
|
||||
}
|
||||
case *DotExpr:
|
||||
f(&v.X)
|
||||
case *IndexExpr:
|
||||
f(&v.X)
|
||||
f(&v.Y)
|
||||
case *KeyValueExpr:
|
||||
f(&v.Key)
|
||||
f(&v.Value)
|
||||
case *SliceExpr:
|
||||
f(&v.X)
|
||||
if v.From != nil {
|
||||
f(&v.From)
|
||||
}
|
||||
if v.To != nil {
|
||||
f(&v.To)
|
||||
}
|
||||
if v.Step != nil {
|
||||
f(&v.Step)
|
||||
}
|
||||
case *ParenExpr:
|
||||
f(&v.X)
|
||||
case *UnaryExpr:
|
||||
f(&v.X)
|
||||
case *BinaryExpr:
|
||||
f(&v.X)
|
||||
f(&v.Y)
|
||||
case *LambdaExpr:
|
||||
for i := range v.Params {
|
||||
f(&v.Params[i])
|
||||
}
|
||||
for i := range v.Body {
|
||||
f(&v.Body[i])
|
||||
}
|
||||
case *CallExpr:
|
||||
f(&v.X)
|
||||
for i := range v.List {
|
||||
f(&v.List[i])
|
||||
}
|
||||
case *ListExpr:
|
||||
for i := range v.List {
|
||||
f(&v.List[i])
|
||||
}
|
||||
case *SetExpr:
|
||||
for i := range v.List {
|
||||
f(&v.List[i])
|
||||
}
|
||||
case *TupleExpr:
|
||||
for i := range v.List {
|
||||
f(&v.List[i])
|
||||
}
|
||||
case *DictExpr:
|
||||
for i := range v.List {
|
||||
f(&v.List[i])
|
||||
}
|
||||
case *Comprehension:
|
||||
f(&v.Body)
|
||||
for _, c := range v.Clauses {
|
||||
f(&c)
|
||||
}
|
||||
case *IfClause:
|
||||
f(&v.Cond)
|
||||
case *ForClause:
|
||||
f(&v.Vars)
|
||||
f(&v.X)
|
||||
case *ConditionalExpr:
|
||||
f(&v.Then)
|
||||
f(&v.Test)
|
||||
f(&v.Else)
|
||||
case *LoadStmt:
|
||||
module := (Expr)(v.Module)
|
||||
f(&module)
|
||||
v.Module = module.(*StringExpr)
|
||||
for i := range v.From {
|
||||
from := (Expr)(v.From[i])
|
||||
f(&from)
|
||||
v.From[i] = from.(*Ident)
|
||||
to := (Expr)(v.To[i])
|
||||
f(&to)
|
||||
v.To[i] = to.(*Ident)
|
||||
}
|
||||
case *DefStmt:
|
||||
for i := range v.Params {
|
||||
f(&v.Params[i])
|
||||
}
|
||||
for i := range v.Body {
|
||||
f(&v.Body[i])
|
||||
}
|
||||
case *IfStmt:
|
||||
f(&v.Cond)
|
||||
for i := range v.True {
|
||||
f(&v.True[i])
|
||||
}
|
||||
for i := range v.False {
|
||||
f(&v.False[i])
|
||||
}
|
||||
case *ForStmt:
|
||||
f(&v.Vars)
|
||||
f(&v.X)
|
||||
for i := range v.Body {
|
||||
f(&v.Body[i])
|
||||
}
|
||||
case *ReturnStmt:
|
||||
if v.Result != nil {
|
||||
f(&v.Result)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// walkStatements is a helper function for WalkStatements
|
||||
func walkStatements(v Expr, stack *[]Expr, f func(x Expr, stk []Expr)) {
|
||||
if v == nil {
|
||||
return
|
||||
}
|
||||
|
||||
f(v, *stack)
|
||||
*stack = append(*stack, v)
|
||||
|
||||
traverse := func(x Expr) {
|
||||
walkStatements(x, stack, f)
|
||||
}
|
||||
|
||||
switch expr := v.(type) {
|
||||
case *File:
|
||||
for _, s := range expr.Stmt {
|
||||
traverse(s)
|
||||
}
|
||||
case *DefStmt:
|
||||
for _, s := range expr.Body {
|
||||
traverse(s)
|
||||
}
|
||||
case *IfStmt:
|
||||
for _, s := range expr.True {
|
||||
traverse(s)
|
||||
}
|
||||
for _, s := range expr.False {
|
||||
traverse(s)
|
||||
}
|
||||
case *ForStmt:
|
||||
for _, s := range expr.Body {
|
||||
traverse(s)
|
||||
}
|
||||
}
|
||||
|
||||
*stack = (*stack)[:len(*stack)-1]
|
||||
}
|
||||
|
||||
// WalkStatements traverses sub statements (not all nodes)
|
||||
func WalkStatements(v Expr, f func(x Expr, stk []Expr)) {
|
||||
var stack []Expr
|
||||
walkStatements(v, &stack, f)
|
||||
}
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue