#template #json-file #license #cargo-toml #formatter #nodejs #package-json

app extrude-licenses

这是一个用于 Rust 和 Node.js 项目的许可证(相当于一个带有用户模板的格式化工具)的挤出工具

1 个稳定版本

1.0.0 2020 年 10 月 2 日

#2620命令行工具

MIT 许可证

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 命令。

用法

  1. 安装,cargo install extrude-licenses
  2. 使用 cargo-licenselicense-checker 生成许可证 JSON 文件、源许可证 JSON 文件,生成许可证列表 JSON 文件 -> licenses.json
    • 例如:cargo install cargo-license -> cargo-license -j > licenses.json
    • 例如:npx license-checker --json --relativeLicensePath --summay -out licenses.json
  3. 创建一个用于挤出的模板文件。
  4. 运行,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 &ltemail@example.com&gt. (默认未设置。)
    • --match-name-invert: 如果设置 => 反转 --match-name 的结果。(默认未设置。)
    • --match-licsense-invert: 如果设置 => 反转 --match-license 的结果。(默认未设置。)

注意: --match-name-invert--match-license-invert(?!not-included-pattern) 的替代方案。因为,目前Rust不支持在正则表达式中使用它。

示例结果

注意: 若要在项目中运行而不是安装,请使用 cargo run -- -t ... -i ...

  1. 一个简单的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
  1. 名称过滤: 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
  1. 许可证过滤: 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>
  1. 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]> |
  1. 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>)};

您可以为模板文件使用任何文本模式。支持的模板模式包括

  • {名称}
  • {版本}
  • {作者}
  • {仓库}
  • {许可证}
  • {许可证文件}
  • {描述}

许可证

作者

依赖项

~3.5–5.5MB
~93K SLoC