17 个版本 (8 个稳定版)
2.0.0 | 2024年3月17日 |
---|---|
1.3.0 | 2023年11月1日 |
1.2.1 | 2023年4月14日 |
1.0.1 | 2022年10月7日 |
0.3.0 | 2021年9月20日 |
#106 在 Cargo 插件
每月10,229 次下载
100KB
1K SLoC
cargo-bundle-licenses
将所有第三方许可证捆绑到一个文件中。
注意 此工具不是律师,不能对其选择的许可证的正确性作出保证。此工具依赖于包元数据中提供的信息是正确的,这不能保证,因此对于“真实”场景,建议所有许可证都进行审查和手动验证。
安装
cargo install cargo-bundle-licenses
使用方法
此工具的典型使用方法如下
- 生成初始捆绑文件
cargo bundle-licenses --format yaml --output THIRDPARTY.yml
- 处理列出的警告,追踪找不到的许可证,并将许可证文本粘贴到“THIRDPARTY.yml”文件中。
- 注意:如果许可证 应该 被该工具找到,请创建一个问题,或者更好的是,创建一个拉取请求!
- 在您的 CI 中,以下方式运行
cargo-bundle-licenses
以检查更改,如果发现更改则失败。这将生成新的第三方文件,应用任何手动添加的许可证以填补“未找到”的许可证,然后比较新版本与旧版本,如果存在任何差异则失败。
cargo bundle-licenses --format yaml --output CI.yaml --previous THIRDPARTY.yml --check-previous
为了帮助复制粘贴找不到的许可证,可以使用 esc 工具以正确创建转义后的许可证字符串,以便将其插入您选择的格式中。
格式
目前支持以下格式:json
、yaml
和 toml
。正在积极寻找更易于人类阅读的格式,该格式更接近传统的 THIRDPARTY 文件,并且已经具有 serde
支持。如果您有想法,请创建一个问题或拉取请求。
常见警告和解决方案
缺少许可证的最常见原因是工作区没有将许可证文件include
。请前往工作区的仓库并从中复制相关文件。
包许可证可能会收到一个信心警告,表明cargo-bundle-licenses
是“不确定”或“半信半疑”。这意味着当找到的许可证与模板许可证进行比较时,它在多个单词上有所差异。在这种情况下,您应验证许可证文本确实正确。
与其他工具的差异
cargo-about
也会查找和汇总所有依赖项的许可证文本。cargo-bundle-licenses
的不同之处在于,它更专注于生成某些内容,然后允许手动更新未找到的许可证,而cargo-about
则不会在这种情况下生成输出。此外,cargo-bundle-licenses
允许将手动更新应用于第三方文件的后续版本。然而,cargo-about
会生成非常易读的格式,并提供更多关于允许哪些包/许可证的粒度。cargo-license
只生成Cargo.toml
文件中找到的许可证列表。cargo-deny
也会收集依赖项的许可证列表,以及分析LICENSE
文件,但它这样做的目的是在依赖项具有用户认为不可接受的许可证时发出警告或错误;不会发出许可证文本的收集
致谢
这个crate受到了cargo-lichking
的极大启发。
依赖项
~6–16MB
~190K SLoC