#cargo-toml #licensing #embed #free #information #license #run-time

embed-licensing

将依赖项的许可信息嵌入,以符合免费软件许可

3个版本 (破坏性更新)

0.3.1 2024年8月14日
0.2.0 2024年8月8日
0.1.0 2024年7月31日

#159过程宏

Download history 108/week @ 2024-07-29 116/week @ 2024-08-05 134/week @ 2024-08-12

每月358次下载

MPL-2.0 许可证

46KB
655

embed-licensing

将依赖项的许可信息嵌入,以符合免费软件许可。

这允许在运行时输出所有依赖项的列表。

功能

  • 在构建时使用过程宏收集依赖项
    • 名称
    • 版本
    • 作者(来自Cargo.toml)
    • 许可(来自Cargo.toml的license字段或license-file的内容)
    • 网站(来自Cargo.toml的homepagerepositorydocumentation
  • 收集依赖项的许可
  • 收集依赖项的许可例外
  • 可选收集开发(仅针对直接依赖项)和构建依赖项(默认情况下,仅收集普通依赖项)
  • 可选限制依赖项到特定平台(目标配置选项)

非功能特性

  • 准备好使用的HTML模板(每个应用程序都有不同的需求)
  • CLI工具(已经有很好的工具了,请参阅替代方案
  • 手动覆盖错误或不完整的数据(这应该通过crate上游进行更改)

准确性

这个crate使用的机制永远不会完全准确。对于确定依赖项的许可证,只使用Cargo清单中的licenselicense-file属性。同样,作者也只从Cargo清单中获取。

因此,在您使用此crate之前,请始终咨询法律专业人士,以确认此crate的输出是否符合所有依赖项的许可证义务。

替代方案

  • cargo-about是这个项目的最初灵感。它采用不同的方法,并从handlebars模板生成一个静态文件。
  • cargo-deny 是一个用于依赖项的代码检查器,包括它们的许可证。它还提供 cargo deny list 子命令,用于列出所有依赖项的许可证(以及使用它们的依赖项)。
  • cargo-license 输出的列表类似于 cargo deny list,但具有更可配置的输出。
  • cargo-cyclonedx 为 crate 创建一个 CycloneDX SBOM。

所有替代方案都不允许在编译时(作为 proc-macro)运行并使用运行时结果。

许可证

本项目可在 MPL 2.0 许可证下使用。具体详情可在每个文件的头部找到。

依赖项

~2–3MB
~46K SLoC