v2/walk: use v2 packages
diff --git a/testtools/config.go b/testtools/config.go index f50fa1e..a263d72 100644 --- a/testtools/config.go +++ b/testtools/config.go
@@ -16,9 +16,9 @@ package testtools import ( + "flag" "testing" - v2 "github.com/bazel-contrib/bazel-gazelle/v2/testtools" "github.com/bazelbuild/bazel-gazelle/config" "github.com/bazelbuild/bazel-gazelle/language" ) @@ -31,7 +31,25 @@ // error is encountered while processing flags. // // Deprecated: Use github.com/bazel-contrib/bazel-gazelle/v2/testtools.NewTestConfig instead. -//go:fix inline func NewTestConfig(t *testing.T, cexts []config.Configurer, langs []language.Language, args []string) *config.Config { - return v2.NewTestConfig(t, cexts, langs, args) + c := config.New() + fs := flag.NewFlagSet("test", flag.ContinueOnError) + + for _, lang := range langs { + cexts = append(cexts, lang) + } + for _, cext := range cexts { + cext.RegisterFlags(fs, "update", c) + } + + if err := fs.Parse(args); err != nil { + t.Fatal(err) + } + for _, cext := range cexts { + if err := cext.CheckFlags(fs, c); err != nil { + t.Fatal(err) + } + } + + return c }
diff --git a/v2/cmd/gazelle/update/BUILD.bazel b/v2/cmd/gazelle/update/BUILD.bazel index f8f0c19..7afc2e2 100644 --- a/v2/cmd/gazelle/update/BUILD.bazel +++ b/v2/cmd/gazelle/update/BUILD.bazel
@@ -27,7 +27,7 @@ "//v2/label", "//v2/merger", "//v2/rule", - "//v2/walk", + "//walk", "@com_github_bazelbuild_buildtools//build", "@com_github_pmezard_go_difflib//difflib", ],
diff --git a/v2/cmd/gazelle/update/update.go b/v2/cmd/gazelle/update/update.go index aa2c266..a5b6b8c 100644 --- a/v2/cmd/gazelle/update/update.go +++ b/v2/cmd/gazelle/update/update.go
@@ -39,7 +39,7 @@ "github.com/bazel-contrib/bazel-gazelle/v2/label" "github.com/bazel-contrib/bazel-gazelle/v2/merger" "github.com/bazel-contrib/bazel-gazelle/v2/rule" - "github.com/bazel-contrib/bazel-gazelle/v2/walk" + "github.com/bazelbuild/bazel-gazelle/walk" "github.com/bazelbuild/bazel-gazelle/config" "github.com/bazelbuild/bazel-gazelle/language" "github.com/bazelbuild/bazel-gazelle/repo"
diff --git a/v2/testtools/BUILD.bazel b/v2/testtools/BUILD.bazel index 9ef3fe2..ed329ad 100644 --- a/v2/testtools/BUILD.bazel +++ b/v2/testtools/BUILD.bazel
@@ -10,8 +10,9 @@ importpath = "github.com/bazel-contrib/bazel-gazelle/v2/testtools", visibility = ["//visibility:public"], deps = [ - "//config", - "//language", + "//v2/compat", + "//v2/config", + "//v2/language", "@com_github_google_go_cmp//cmp", ], )
diff --git a/v2/testtools/config.go b/v2/testtools/config.go index 3586fda..9caf597 100644 --- a/v2/testtools/config.go +++ b/v2/testtools/config.go
@@ -19,8 +19,9 @@ "flag" "testing" - "github.com/bazelbuild/bazel-gazelle/config" - "github.com/bazelbuild/bazel-gazelle/language" + "github.com/bazel-contrib/bazel-gazelle/v2/compat" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + "github.com/bazel-contrib/bazel-gazelle/v2/language" ) // NewTestConfig returns a Config used for tests in any language extension. @@ -34,18 +35,24 @@ fs := flag.NewFlagSet("test", flag.ContinueOnError) for _, lang := range langs { - cexts = append(cexts, lang) + if cfg, ok := compat.ConfigurerV2(lang); ok { + cexts = append(cexts, cfg) + } } for _, cext := range cexts { - cext.RegisterFlags(fs, "update", c) + if fc, ok := cext.(compat.FlagConfigurer); ok { + fc.RegisterFlags(fs, "update", c) + } } if err := fs.Parse(args); err != nil { t.Fatal(err) } for _, cext := range cexts { - if err := cext.CheckFlags(fs, c); err != nil { - t.Fatal(err) + if fc, ok := cext.(compat.FlagConfigurer); ok { + if err := fc.CheckFlags(fs, c); err != nil { + t.Fatal(err) + } } }
diff --git a/v2/walk/BUILD.bazel b/v2/walk/BUILD.bazel index e00762c..c2e466e 100644 --- a/v2/walk/BUILD.bazel +++ b/v2/walk/BUILD.bazel
@@ -11,10 +11,10 @@ importpath = "github.com/bazel-contrib/bazel-gazelle/v2/walk", visibility = ["//visibility:public"], deps = [ - "//config", - "//flag", - "//pathtools", - "//rule", + "//v2/config", + "//v2/flag", + "//v2/pathtools", + "//v2/rule", "@com_github_bazelbuild_buildtools//build", "@com_github_bmatcuk_doublestar_v4//:doublestar", ], @@ -28,9 +28,9 @@ ], embed = [":walk"], deps = [ - "//config", - "//rule", - "//testtools", + "//v2/config", + "//v2/rule", + "//v2/testtools", "@com_github_bmatcuk_doublestar_v4//:doublestar", "@com_github_google_go_cmp//cmp", ],
diff --git a/v2/walk/cache.go b/v2/walk/cache.go index e2fbba5..e3e09aa 100644 --- a/v2/walk/cache.go +++ b/v2/walk/cache.go
@@ -5,7 +5,7 @@ "path" "sync" - "github.com/bazelbuild/bazel-gazelle/pathtools" + "github.com/bazel-contrib/bazel-gazelle/v2/pathtools" ) // cache is an in-memory cache for file system information. Its purpose is to
diff --git a/v2/walk/config.go b/v2/walk/config.go index f02c721..f3f482c 100644 --- a/v2/walk/config.go +++ b/v2/walk/config.go
@@ -17,6 +17,7 @@ import ( "bufio" + "context" "errors" "flag" "fmt" @@ -27,12 +28,11 @@ "path/filepath" "strings" - "github.com/bazelbuild/bazel-gazelle/config" - "github.com/bazelbuild/bazel-gazelle/rule" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + gzflag "github.com/bazel-contrib/bazel-gazelle/v2/flag" + "github.com/bazel-contrib/bazel-gazelle/v2/rule" bzl "github.com/bazelbuild/buildtools/build" "github.com/bmatcuk/doublestar/v4" - - gzflag "github.com/bazelbuild/bazel-gazelle/flag" ) // generationModeType represents one of the generation modes. @@ -142,7 +142,8 @@ return []string{"build_file_name", "directive_file", "generation_mode", "exclude", "follow", "ignore"} } -func (cr *Configurer) Configure(c *config.Config, rel string, f *rule.File) { +func (cr *Configurer) Configure(_ context.Context, args config.ConfigureArgs) error { + c := args.Config if c.Exts[walkNameCached] != nil { // A normal Configurer implementation would process directives and set // c.Exts[walkName] here. However, we've parallelized the tree walk and @@ -155,9 +156,10 @@ } else { // In some unit tests, c.Exts[walkNameCached] is not set. // Process directives normally using the same code. - c.Exts[walkName] = configureForWalk(getWalkConfig(c), rel, f) + c.Exts[walkName] = configureForWalk(getWalkConfig(c), args.Rel, args.File) } c.ValidBuildFileNames = getWalkConfig(c).validBuildFileNames + return nil } func configureForWalk(parent *walkConfig, rel string, f *rule.File) *walkConfig {
diff --git a/v2/walk/config_test.go b/v2/walk/config_test.go index ce615d7..3995dfe 100644 --- a/v2/walk/config_test.go +++ b/v2/walk/config_test.go
@@ -1,14 +1,15 @@ package walk import ( + "context" "flag" "os" "path/filepath" "reflect" "testing" - "github.com/bazelbuild/bazel-gazelle/config" - "github.com/bazelbuild/bazel-gazelle/rule" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + "github.com/bazel-contrib/bazel-gazelle/v2/rule" "github.com/bmatcuk/doublestar/v4" ) @@ -74,7 +75,7 @@ if err := cc.CheckFlags(nil, c); err != nil { t.Errorf("CheckFlags: %v", err) } - cc.Configure(c, "", f) + cc.Configure(context.TODO(), config.ConfigureArgs{Config: c, Rel: "", File: f}) want := []string{"x", "y"} if !reflect.DeepEqual(c.ValidBuildFileNames, want) { t.Errorf("for ValidBuildFileNames, got %#v, want %#v", c.ValidBuildFileNames, want)
diff --git a/v2/walk/dirinfo.go b/v2/walk/dirinfo.go index 97097aa..60be63c 100644 --- a/v2/walk/dirinfo.go +++ b/v2/walk/dirinfo.go
@@ -8,7 +8,7 @@ "path/filepath" "sync" - "github.com/bazelbuild/bazel-gazelle/rule" + "github.com/bazel-contrib/bazel-gazelle/v2/rule" ) // DirInfo holds all the information about a directory that Walk2 needs.
diff --git a/v2/walk/walk.go b/v2/walk/walk.go index ca88b43..416682a 100644 --- a/v2/walk/walk.go +++ b/v2/walk/walk.go
@@ -18,6 +18,7 @@ package walk import ( + "context" "errors" "fmt" "io/fs" @@ -27,9 +28,9 @@ "path/filepath" "strings" - "github.com/bazelbuild/bazel-gazelle/config" - "github.com/bazelbuild/bazel-gazelle/pathtools" - "github.com/bazelbuild/bazel-gazelle/rule" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + "github.com/bazel-contrib/bazel-gazelle/v2/pathtools" + "github.com/bazel-contrib/bazel-gazelle/v2/rule" ) // Mode determines which directories Walk visits and which directories @@ -435,7 +436,9 @@ // Configure the directory, if we haven't done so already. _, alreadyConfigured := w.visits[rel] if !containedByParent && !alreadyConfigured { - configure(w.cexts, w.knownDirectives, c, rel, info.File, info.config) + if err := configure(w.cexts, w.knownDirectives, c, rel, info.File, info.config); err != nil { + w.errs = append(w.errs, err) + } } regularFiles := info.RegularFiles @@ -531,7 +534,7 @@ return rule.LoadFile(path, pkg) } -func configure(cexts []config.Configurer, knownDirectives map[string]bool, c *config.Config, rel string, f *rule.File, wc *walkConfig) { +func configure(cexts []config.Configurer, knownDirectives map[string]bool, c *config.Config, rel string, f *rule.File, wc *walkConfig) error { if f != nil { for _, d := range f.Directives { if !knownDirectives[d.Key] { @@ -545,9 +548,17 @@ } } c.Exts[walkNameCached] = wc + var errs []error for _, cext := range cexts { - cext.Configure(c, rel, f) + if err := cext.Configure(context.TODO(), config.ConfigureArgs{ + Config: c, + Rel: rel, + File: f, + }); err != nil { + errs = append(errs, err) + } } + return errors.Join(errs...) } func findGenFiles(wc *walkConfig, f *rule.File) []string {
diff --git a/v2/walk/walk_test.go b/v2/walk/walk_test.go index d295ac0..83d3109 100644 --- a/v2/walk/walk_test.go +++ b/v2/walk/walk_test.go
@@ -17,6 +17,7 @@ import ( "bytes" + "context" "flag" "fmt" "os" @@ -26,9 +27,9 @@ "strings" "testing" - "github.com/bazelbuild/bazel-gazelle/config" - "github.com/bazelbuild/bazel-gazelle/rule" - "github.com/bazelbuild/bazel-gazelle/testtools" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + "github.com/bazel-contrib/bazel-gazelle/v2/rule" + "github.com/bazel-contrib/bazel-gazelle/v2/testtools" "github.com/google/go-cmp/cmp" ) @@ -901,14 +902,11 @@ configure func(c *config.Config, rel string, f *rule.File) } -func (*testConfigurer) RegisterFlags(_ *flag.FlagSet, _ string, _ *config.Config) {} - -func (*testConfigurer) CheckFlags(_ *flag.FlagSet, _ *config.Config) error { return nil } - func (*testConfigurer) KnownDirectives() []string { return nil } -func (tc *testConfigurer) Configure(c *config.Config, rel string, f *rule.File) { - tc.configure(c, rel, f) +func (tc *testConfigurer) Configure(_ context.Context, args config.ConfigureArgs) error { + tc.configure(args.Config, args.Rel, args.File) + return nil } func TestDirectiveFile(t *testing.T) { @@ -1170,14 +1168,14 @@ c.IndexLibraries = true fs := flag.NewFlagSet("gazelle", flag.ContinueOnError) for _, cext := range cexts { - cext.RegisterFlags(fs, "update", c) + cext.(*Configurer).RegisterFlags(fs, "update", c) } args := []string{rootDir} if err := fs.Parse(args); err != nil { b.Fatal(err) } for _, cext := range cexts { - cext.CheckFlags(fs, c) + cext.(*Configurer).CheckFlags(fs, c) } // Benchmark calling Walk with a trivial callback function.
diff --git a/walk/BUILD.bazel b/walk/BUILD.bazel index 9f7f77a..42ddfb0 100644 --- a/walk/BUILD.bazel +++ b/walk/BUILD.bazel
@@ -12,6 +12,9 @@ visibility = ["//visibility:public"], deps = [ "//config", + "//rule", + "//v2/compat", + "//v2/config", "//v2/walk", ], )
diff --git a/walk/config.go b/walk/config.go index ae21f22..86ac7eb 100644 --- a/walk/config.go +++ b/walk/config.go
@@ -15,7 +15,38 @@ package walk -import v2 "github.com/bazel-contrib/bazel-gazelle/v2/walk" +import ( + "context" + "flag" + "github.com/bazel-contrib/bazel-gazelle/v2/config" + v2 "github.com/bazel-contrib/bazel-gazelle/v2/walk" + "github.com/bazelbuild/bazel-gazelle/rule" +) + +// Configurer sets walk-specific configuration in each directory. +// // Deprecated: Use github.com/bazel-contrib/bazel-gazelle/v2/walk.Configurer instead. -type Configurer = v2.Configurer +type Configurer struct { + v2 v2.Configurer +} + +func (cr *Configurer) RegisterFlags(fs *flag.FlagSet, cmd string, c *config.Config) { + cr.v2.RegisterFlags(fs, cmd, c) +} + +func (cr *Configurer) CheckFlags(fs *flag.FlagSet, c *config.Config) error { + return cr.v2.CheckFlags(fs, c) +} + +func (cr *Configurer) KnownDirectives() []string { + return cr.v2.KnownDirectives() +} + +func (cr *Configurer) Configure(c *config.Config, rel string, f *rule.File) { + cr.v2.Configure(context.TODO(), config.ConfigureArgs{ + Config: c, + Rel: rel, + File: f, + }) +}
diff --git a/walk/walk.go b/walk/walk.go index 2db8ec1..db0c6de 100644 --- a/walk/walk.go +++ b/walk/walk.go
@@ -18,6 +18,8 @@ package walk import ( + "github.com/bazel-contrib/bazel-gazelle/v2/compat" + v2config "github.com/bazel-contrib/bazel-gazelle/v2/config" v2 "github.com/bazel-contrib/bazel-gazelle/v2/walk" "github.com/bazelbuild/bazel-gazelle/config" ) @@ -101,7 +103,11 @@ // // Deprecated: Use github.com/bazel-contrib/bazel-gazelle/v2/walk.Walk instead. func Walk(c *config.Config, cexts []config.Configurer, dirs []string, mode Mode, wf WalkFunc) { - v2.Walk(c, cexts, dirs, mode, wf) + v2cexts := make([]v2config.Configurer, len(cexts)) + for i, cext := range cexts { + v2cexts[i] = compat.MustConfigurerV2(cext) + } + v2.Walk(c, v2cexts, dirs, mode, wf) } // Deprecated: Use github.com/bazel-contrib/bazel-gazelle/v2/walk.Walk2Func instead. @@ -134,5 +140,9 @@ // // Deprecated: Use github.com/bazel-contrib/bazel-gazelle/v2/walk.Walk2 instead. func Walk2(c *config.Config, cexts []config.Configurer, dirs []string, mode Mode, wf Walk2Func) error { - return v2.Walk2(c, cexts, dirs, mode, wf) + v2cexts := make([]v2config.Configurer, len(cexts)) + for i, cext := range cexts { + v2cexts[i] = compat.MustConfigurerV2(cext) + } + return v2.Walk2(c, v2cexts, dirs, mode, wf) }