123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- /* 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 language
- import (
- "github.com/bazelbuild/bazel-gazelle/config"
- "github.com/bazelbuild/bazel-gazelle/repo"
- "github.com/bazelbuild/bazel-gazelle/rule"
- )
- // RepoUpdater may be implemented by languages that support updating
- // repository rules that provide named libraries.
- //
- // EXPERIMENTAL: this may change or be removed.
- type RepoUpdater interface {
- UpdateRepos(args UpdateReposArgs) UpdateReposResult
- }
- // UpdateReposArgs contains arguments for RepoUpdater.UpdateRepos.
- // Arguments are passed in a struct value so that new fields may be added
- // in the future without breaking existing implementations.
- //
- // EXPERIMENTAL: this may change or be removed.
- type UpdateReposArgs struct {
- // Config is the configuration for the main workspace.
- Config *config.Config
- // Imports is a list of libraries to update. UpdateRepos should return
- // repository rules that provide these libraries. It may also return
- // repository rules providing transitive dependencies.
- Imports []string
- // Cache stores information fetched from the network and ensures that
- // the same request isn't made multiple times.
- Cache *repo.RemoteCache
- }
- // UpdateReposResult contains return values for RepoUpdater.UpdateRepos.
- // Results are returned through a struct so that new (optional) fields may be
- // added without breaking existing implementations.
- //
- // EXPERIMENTAL: this may change or be removed.
- type UpdateReposResult struct {
- // Gen is a list of repository rules that provide libraries named by
- // UpdateImportArgs.Imports. These will be merged with existing rules or
- // added to WORKSPACE. This list may be shorter or longer than the list
- // of imports, since a single repository may provide multiple imports,
- // and additional repositories may be needed for transitive dependencies.
- Gen []*rule.Rule
- // Error is any fatal error that occurred. Non-fatal errors should be logged.
- Error error
- }
- // RepoImporter may be implemented by languages that support importing
- // repository rules from another build system.
- //
- // EXPERIMENTAL: this may change or be removed.
- type RepoImporter interface {
- // CanImport returns whether a given configuration file may be imported
- // with this extension. Only one extension may import any given file.
- // ImportRepos will not be called unless this returns true.
- CanImport(path string) bool
- // ImportRepos generates a list of repository rules by reading a
- // configuration file from another build system.
- ImportRepos(args ImportReposArgs) ImportReposResult
- }
- // ImportReposArgs contains arguments for RepoImporter.ImportRepos.
- // Arguments are passed in a struct value so that new fields may be added
- // in the future without breaking existing implementations.
- //
- // EXPERIMENTAL: this may change or be removed.
- type ImportReposArgs struct {
- // Config is the configuration for the main workspace.
- Config *config.Config
- // Path is the name of the configuration file to import.
- Path string
- // Prune indicates whether repository rules that are no longer needed
- // should be deleted. This means the Empty list in the result should be
- // filled in.
- Prune bool
- // Cache stores information fetched from the network and ensures that
- // the same request isn't made multiple times.
- Cache *repo.RemoteCache
- }
- // ImportReposResult contains return values for RepoImporter.ImportRepos.
- // Results are returned through a struct so that new (optional) fields may
- // be added without breaking existing implementations.
- //
- // EXPERIMENTAL: this may change or be removed.
- type ImportReposResult struct {
- // Gen is a list of imported repository rules.
- Gen []*rule.Rule
- // Empty is a list of repository rules that may be deleted. This should only
- // be set if ImportReposArgs.Prune is true.
- Empty []*rule.Rule
- // Error is any fatal error that occurred. Non-fatal errors should be logged.
- Error error
- }
|