|  | # Copyright 2019 Google LLC | 
|  | # | 
|  | # 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 | 
|  | # | 
|  | #      https://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. | 
|  |  | 
|  | # TODO(laurenzo): This is available upstream as of 0.28. Remove when ready. | 
|  | # See: https://docs.bazel.build/versions/master/repo/utils.html#maybe | 
|  | def maybe(repo_rule, name, **kwargs): | 
|  | """Utility function for only adding a repository if it's not already present. | 
|  | This is to implement safe repositories.bzl macro documented in | 
|  | https://docs.bazel.build/versions/master/skylark/deploying.html#dependencies. | 
|  | Args: | 
|  | repo_rule: repository rule function. | 
|  | name: name of the repository to create. | 
|  | **kwargs: remaining arguments that are passed to the repo_rule function. | 
|  | Returns: | 
|  | Nothing, defines the repository when needed as a side-effect. | 
|  | """ | 
|  | if not native.existing_rule(name): | 
|  | repo_rule(name = name, **kwargs) |