1 个不稳定版本
0.1.0 | 2022年8月6日 |
---|
#587 in 构建工具
28KB
660 行
hatto
hatto 是 SBOM 政策评估的 CLI 工具。
需求
hatto 使用 PyO3。因此,hatto 需要 Python 共享库。
sudo apt install python3-dev
使用方法
评估
hatto evaluate <SBOM or tsv file>
$ hatto evaluate --help
evaluate policy
USAGE:
hatto evaluate [OPTIONS] <FILE>
ARGS:
<FILE>
OPTIONS:
-c, --curation <FILE>
-h, --help Print help information
-o, --output <OUTPUT_FORMAT> [default: human] [possible values: human, json]
-p, --policy <FILE>
-t, --source-type <SOURCE_TYPE> [possible values: tsv, spdx-tag, spdx-json, spdx-yaml,
cyclone-dx-json, cyclone-dx-xml]
评估参数文件为 SBOM 或 tsv。SBOM 支持 SPDX
或 CycloneDX
。
另一个 hatto 支持 tsv。此 tsv 文件必须包含标题。
示例 example.tsv
name version licenses annotations
foo 1.0.1 MIT,Apache-2.0 usage=service
bar 1.1.2 UNKNOWN
这些文件可以使用任何许可收集工具生成。如果许可收集工具不支持 SBOM,则应将其转换为 tsv 或 SBOM。
并且您可以配置 --policy
和 --curation
。
--policy
文件定义了用 Python 编写的许可策略。策略文件必须实现 def evaluate(material, result)
。
示例 polocy.py
#!/usr/bin/python
allowed_licenses = [
"Apache-2.0",
"BSD-3-Clause",
"MIT",
"Unlicense",
]
def evaluate(material, result):
for license in material.licenses:
if license not in allowed_licenses:
result.add_error(f"{license} is not allowed")
$ hatto evaluate --policy policy.py example.tsv
OK foo 1.0.1 licenses:["MIT", "Apache-2.0"] annotations:{"usage": "service"}
NG bar 1.1.2 licenses:["UNKNOWN"] annotations:{}
ERROR UNKNOWN is not allowed
Failure: evaluate failed
UNKNOWN
不允许在 policy.py
中使用。因此,hatto evaluate
会失败。
您可能知道 bar
真实许可为 BSD-3-Clause
。在这种情况下,您可以通过 --curation
文件修补许可信息。curate 文件必须实现 def curate_material(material)
。
示例 curation.py
#!/usr/bin/python
def curate_material(material):
if material.name == "bar":
material.licenses = ["BSD-3-Clause"]
$ hatto evaluate --policy policy.py --curation curation.py example.tsv
OK foo 1.0.1 licenses:["MIT", "Apache-2.0"] annotations:{"usage": "service"}
OK bar 1.1.2 licenses:["BSD-3-Clause"] annotations:{}
这些允许 hatto 在您的团队或组织中灵活地进行许可政策评估。
许可证
许可证为以下之一
- Apache 许可证 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0)
- 麻省理工学院许可证(《LICENSE-MIT》或http://opensource.org/licenses/MIT)
由您选择。
贡献
除非您明确说明,否则根据Apache-2.0许可证定义,您有意提交的任何贡献,以包含在本工作中,将按照上述方式双许可,不附加任何额外条款或条件。
依赖项
~9–16MB
~196K SLoC