#license #policy #cli #check #evaluate #tsv #file

build hatto

软件许可政策检查的 CLI 工具

1 个不稳定版本

0.1.0 2022年8月6日

#587 in 构建工具

MIT/Apache

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 支持 SPDXCycloneDX

另一个 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许可证定义,您有意提交的任何贡献,以包含在本工作中,将按照上述方式双许可,不附加任何额外条款或条件。

依赖项

~9–16MB
~196K SLoC