From 07309a4c42701777eb591e541558f303cdd82acb Mon Sep 17 00:00:00 2001 From: Damien Elmes Date: Tue, 13 Apr 2021 21:21:30 +1000 Subject: [PATCH] expose binaries from pip --- pip/BUILD.bazel | 14 ++++++++++++++ pip/binary.bzl | 28 ++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 pip/binary.bzl diff --git a/pip/BUILD.bazel b/pip/BUILD.bazel index 649a992d3..88b688004 100644 --- a/pip/BUILD.bazel +++ b/pip/BUILD.bazel @@ -1,5 +1,19 @@ load("@rules_python//python:defs.bzl", "py_binary") load("@py_deps//:requirements.bzl", "requirement") +load(":binary.bzl", "pip_binary") + +pip_binary(name = "black") + +pip_binary(name = "isort") + +pip_binary(name = "mypy") + +pip_binary(name = "pylint") + +pip_binary( + name = "protoc-gen-mypy", + pkg = "mypy-protobuf", +) py_binary( name = "update", diff --git a/pip/binary.bzl b/pip/binary.bzl new file mode 100644 index 000000000..c2ada5ca3 --- /dev/null +++ b/pip/binary.bzl @@ -0,0 +1,28 @@ +load("@bazel_skylib//rules:copy_file.bzl", "copy_file") +load("@py_deps//:requirements.bzl", "requirement") + +def pip_binary(name, pkg = None): + "Expose a binary from pip as an executable for linting." + + if not pkg: + pkg = name + + binary_prefix = requirement(pkg).replace(":pkg", ":bin/" + name) + + copy_file( + name = name + "_bin", + src = select({ + "@platforms//os:windows": binary_prefix + ".exe", + "//conditions:default": binary_prefix, + }), + out = name + "_bin.py", + ) + + native.py_binary( + name = name, + srcs = [":" + name + "_bin.py"], + main = ":" + name + "_bin.py", + deps = [ + requirement(pkg), + ], + )