1 个稳定版本
1.0.0 | 2020 年 10 月 2 日 |
---|
#2620 在 命令行工具
18KB
291 行
extrude-licenses
这是一个 挤出工具(≈一个带有用户模板的格式化工具),用于 Rust 和 Node.js 项目的许可证。
- Cargo.toml|package.json + template.xxx -> your-project-licenses.xxx
- 这是一个命令行工具;
extrude-licenses
- 其他要求
- 如果您想从
Cargo.toml
源生成,则需要cargo-license
命令。 - 如果您想从
package.json
源生成,则需要license-checker
命令。
- 如果您想从
用法
- 安装,
cargo install extrude-licenses
。 - 使用
cargo-license
或license-checker
生成许可证 JSON 文件、源许可证 JSON 文件,生成许可证列表 JSON 文件 ->licenses.json
。- 例如:
cargo install cargo-license
->cargo-license -j > licenses.json
- 例如:
npx license-checker --json --relativeLicensePath --summay -out licenses.json
- 例如:
- 创建一个用于挤出的模板文件。
- 运行,
extrude-licenses -t template.xxx -i licenses.json
及其他选项。-t
或--template-file
:模板文件。 (必需)-i
,--input-file
: 输入源JSON文件。(必须)
命令行参数
- 必需,需要值参数
-t
,--template-file
: 模板文件。-
,--input-file
: 输入源JSON文件。
- 可选,需要值参数
--o
,--output-file
: 输出到指定文件。(默认输出到STDOUT。)--h
,--header-lines
: 模板文件中的头部行数。(默认为0。)--f
,--footer-lines
: 模板文件中的尾部行数。(默认为0。)--match-name
: 用于匹配名称的正则表达式过滤器。(默认匹配任何模式。)--match-license
: 用于匹配许可证的正则表达式过滤器。(默认匹配任何模式。)
- 可选,仅标志
--escape-authors
: 如果设置 =>It's Me <its_me@example.com>
->It's Me <email@example.com>
. (默认未设置。)--match-name-invert
: 如果设置 => 反转--match-name
的结果。(默认未设置。)--match-licsense-invert
: 如果设置 => 反转--match-license
的结果。(默认未设置。)
注意: --match-name-invert
和 --match-license-invert
是 (?!not-included-pattern)
的替代方案。因为,目前Rust不支持在正则表达式中使用它。
示例结果
注意: 若要在项目中运行而不是安装,请使用 cargo run -- -t ... -i ...
。
- 一个简单的CSV样式的模板(仅主体):
extrude-licenses --t examples/template-1.csv --i examples/result-of-license-checker
anymatch,1.3.2,ISC,Elan Shanker
arr-diff,2.0.0,MIT,Jon Schlinkert
arr-diff,4.0.0,MIT,Jon Schlinkert
arr-flatten,1.1.0,MIT,Jon Schlinkert
arr-union,3.1.0,MIT,Jon Schlinkert
- 名称过滤:
extrude-licenses --t examples/template-1.csv --i examples/result-of-license-checker --match-name diff
arr-diff,4.0.0,MIT,Jon Schlinkert
arr-diff,2.0.0,MIT,Jon Schlinkert
- 许可证过滤:
extrude-licenses --t examples/template-1.csv --i examples/result-of-cargo-license.json --match-license BSL
ryu,1.0.5,Apache-2.0 OR BSL-1.0,David Tolnay <dtolnay@gmail.com>
- Markdown表格模板(标题=2行 + 正文):
extrude-licenses -t examples/template-2.md -h 2 -i examples/result-of-cargo-license.json --match-name serde
| Package | Version | License | Authors |
| ------------ | ------- | ----------------- | ------------------------------------------- |
| serde | 1.0.116 | Apache-2.0 OR MIT | Erick Tryzelaar <[email protected]> | David Tolnay <[email protected]> |
| serde_derive | 1.0.116 | Apache-2.0 OR MIT | Erick Tryzelaar <[email protected]> | David Tolnay <[email protected]> |
| serde_json | 1.0.58 | Apache-2.0 OR MIT | Erick Tryzelaar <[email protected]> | David Tolnay <[email protected]> |
- HTML表格模板(标题=7行 + 正文 + 页脚=2行):
extrude-licenses -t examples/template-3.html -h 7 -f 2 -i examples/result-of-cargo-license.json --match-name serde
<table>
<tbody>
<tr>
<th>Package</th>
<th>License</th>
<th>Authors</th>
</tr>
<tr>
<a href="https://crates.io/crates/serde"><td>serde 1.0.116</td></a>
<td>Apache-2.0 OR MIT</td>
<td>Erick Tryzelaar <[email protected]>|David Tolnay <[email protected]></td>
</tr>
<tr>
<a href="https://crates.io/crates/serde_derive"><td>serde_derive 1.0.116</td></a>
<td>Apache-2.0 OR MIT</td>
<td>Erick Tryzelaar <[email protected]>|David Tolnay <[email protected]></td>
</tr>
<tr>
<a href="https://crates.io/crates/serde_json"><td>serde_json 1.0.58</td></a>
<td>Apache-2.0 OR MIT</td>
<td>Erick Tryzelaar <[email protected]>|David Tolnay <[email protected]></td>
</tr>
</tbody>
</table>
等等...
更多示例,.tsx (React/typescript) 模板
import React, { Component } from "react";
export default class LicensesNode extends Component { render = () => (<ul>
<a href="https://crates.io/crates/{name}"><li>{name} {version} ({license}) -- {authors}</li></a>
</ul>)};
您可以为模板文件使用任何文本模式。支持的模板模式包括
{名称}
{版本}
{作者}
{仓库}
{许可证}
{许可证文件}
{描述}
许可证
作者
- USAGI.NETWORK / Usagi Ito https://usagi.network/
依赖项
~3.5–5.5MB
~93K SLoC