要列出Bazel运行shell命令的目标范围内的工具列表,可以使用bazel query
命令结合attr
过滤器和kind
过滤器来实现。
以下是一个示例解决方法:
tools_list.sh
的Shell脚本文件,内容如下:#!/bin/bash
# 使用 bazel query 命令获取目标范围内所有工具的列表
bazel query 'kind(".*_binary rule", //...) union kind(".*_test rule", //...)' | \
xargs bazel query --output label 'attr("tags", "tools", @)' | \
xargs -I{} bazel query --output package {} | \
xargs -I{} bazel query 'kind(".*_binary", {}) union kind(".*_test", {})' | \
xargs -I{} bazel query --output label 'rdeps({}, attr("tags", "manual", @))'
保存并关闭文件。
在命令行中运行以下命令,给tools_list.sh
文件添加执行权限:
chmod +x tools_list.sh
tools_list.sh
脚本:./tools_list.sh
这将输出目标范围内的所有工具的列表。
请注意,上述方法假定您的工具目标都有tags
属性,并且使用"tools"
标签标识工具目标。您可以根据自己的项目结构和规则定义进行调整。