| # Copyright 2021 The Pigweed Authors |
| # |
| # 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. |
| """Bazel rules for downloading CIPD packages.""" |
| |
| load( |
| "//pw_env_setup/bazel/cipd_setup/internal:cipd_internal.bzl", |
| _cipd_client_impl = "cipd_client_impl", |
| _cipd_deps_impl = "cipd_deps_impl", |
| _cipd_repository_impl = "cipd_repository_impl", |
| ) |
| |
| _cipd_client_repository = repository_rule( |
| _cipd_client_impl, |
| attrs = { |
| "_cipd_version_file": attr.label(default = "@pigweed//pw_env_setup:py/pw_env_setup/cipd_setup/.cipd_version"), |
| "_cipd_digest_file": attr.label(default = "@pigweed//pw_env_setup:py/pw_env_setup/cipd_setup/.cipd_version.digests"), |
| }, |
| doc = """ |
| Fetches the cipd client. |
| |
| This rule should not be used directly and instead should be called via |
| the cipd_client_repository macro. |
| """, |
| ) |
| |
| def cipd_client_repository(): |
| """Fetches the cipd client. |
| |
| Fetches the cipd client to the prescribed remote repository target |
| prefix 'cipd_client'. This rule should be called before a |
| cipd_repository rule is instantiated. |
| """ |
| _cipd_client_repository( |
| name = "cipd_client", |
| ) |
| |
| cipd_repository = repository_rule( |
| _cipd_repository_impl, |
| attrs = { |
| "_cipd_client": attr.label(default = "@cipd_client//:cipd"), |
| "path": attr.string(), |
| "tag": attr.string(), |
| }, |
| doc = """ |
| Downloads a singular CIPD dependency to the root of a remote repository. |
| |
| Example: |
| |
| load( |
| "//pw_env_setup/bazel/cipd_setup:cipd_rules.bzl", |
| "cipd_client_repository", |
| "cipd_repository", |
| ) |
| |
| # Must be called before cipd_repository |
| cipd_client_repository() |
| |
| cipd_repository( |
| name = "bloaty", |
| path = "pigweed/third_party/bloaty-embedded/${os=linux,mac}-${arch=amd64}", |
| tag = "git_revision:2d87d204057b419f5290f8d38b61b9c2c5b4fb52-2", |
| ) |
| """, |
| ) |
| |
| _pigweed_deps = repository_rule( |
| _cipd_deps_impl, |
| attrs = { |
| "_pigweed_packages_json": attr.label( |
| default = "@pigweed//pw_env_setup:py/pw_env_setup/cipd_setup/pigweed.json", |
| ), |
| "_python_packages_json": attr.label( |
| default = "@pigweed//pw_env_setup:py/pw_env_setup/cipd_setup/python.json", |
| ), |
| }, |
| ) |
| |
| def pigweed_deps(): |
| """Configures Pigweeds Bazel dependencies |
| |
| Example: |
| load("@pigweed//pw_env_setup:pigweed_deps.bzl", "pigweed_deps") |
| |
| pigweed_deps() |
| |
| load("@cipd_deps//:cipd_init.bzl", "cipd_init") |
| |
| cipd_init() |
| """ |
| _pigweed_deps( |
| name = "cipd_deps", |
| ) |