#spdx #config-file #cli-tool #license-management #package-json #cli #license-headers

bin+lib licensa

支持 65+ 种文件类型的无缝源代码许可证管理 CLI 工具

8 个版本

0.1.7 2024 年 3 月 28 日
0.1.6 2024 年 3 月 3 日
0.1.5 2024 年 2 月 12 日

395开发工具 中排名

Download history 8/week @ 2024-04-04 1/week @ 2024-05-16 1/week @ 2024-05-23

每月下载量 471

MIT/Apache 许可协议

155KB
3.5K SLoC

Licensa

codecov Crates.io Version docs.rs Crates.io License (version)

Licensa 是一款强大的 CLI 工具,旨在实现源代码许可证管理的无缝操作。开发者可以轻松地 验证应用修改执行 SPDX 许可证头。

截至目前,Licensa 兼容 65 种以上的文件类型,使其成为多代码环境中的许可证管理的灵活和全面解决方案。

你可能还想要查找

概述

查看完整的 CLI 参考,以获取 选项 的完整列表。

init 生成项目范围的 Licensa 配置。

licensa init [OPTIONS]

apply 将 SPDX 版权许可证头添加到源代码文件。

licensa apply [OPTIONS]

verify 验证源代码文件中是否存在许可证头。

licensa verify

安装

Cargo

cargo install licensa

Linux

Licensa 目前支持以下架构

  • x86_64 (64 位 Intel/AMD 处理器)
  • aarch64 (64 位 ARM 处理器)

运行以下命令并遵循屏幕上的说明

bash -c "$(curl -fsSL https://raw.githubusercontent.com/ekkolon/licensa/main/scripts/install.sh)"

此脚本将

  • 自动检测您的机器架构
  • 下载并解压必要的 .tar
  • licensa 二进制文件复制到 usr/local/bin

有关更多详细信息,您可以直接查看 安装脚本

Windows (PowerShell)

在运行安装脚本之前,请确保您的 PowerShell 执行策略允许(远程)脚本执行。您可以使用以下命令设置执行策略

Set-ExecutionPolicy RemoteSigned -Scope CurrentUser

运行以下脚本将引导您完成安装过程(您可能需要从提升的壳中运行此命令)

Invoke-Expression -Command (Invoke-WebRequest -Uri "https://raw.githubusercontent.com/ekkolon/licensa/main/scripts/install.ps1" -UseBasicParsing).Content

使用方法

这是一个示例教程

假设您有一个 TypeScript 项目 "The Lord Of The Rings Map" (lotr-map),其初始结构如下

.
└── lotr-map/
    ├── node_modules/
    ├── src/
       ├── map/
       │   └── Terrain.ts    # has license header
    │   ├── Rivendell.ts      # no license header
    │   ├── Isengard.ts       # no license header
    │   ├── Mithrandir.ts     # has license header
    │   ├── Gondor.ts         # has license header
    │   └── MinasTirith.ts    # has license header
    ├── .gitignore  
    ├── package.json
    └── tsconfig.json

生成项目范围的 Licensa 配置

当存在 .licensarc 配置文件时,后续命令中已经定义在配置文件中的必选参数将变为可选参数。

Licensa 包含一个预构建的 .licensaignore 文件,类似于 .gitignore,允许您指定包括/排除文件的模式,以便在许可过程中使用。

要生成项目范围的配置,请执行以下命令

licensa init --type Apache-2.0 --owner "Eru Ilúvata" --year 2001

执行成功后,该命令将扩展您的项目结构以包含 .licensarc.licensaignore

.
└── lotr-map/
    ├── node_modules/
    ├── src/
       ├── map/
       │   └── Terrain.ts    # has license header
    │   ├── Rivendell.ts      # no license header
    │   ├── Isengard.ts       # no license header
    │   ├── Mithrandir.ts     # has license header
    │   ├── Gondor.ts         # has license header
    │   └── MinasTirith.ts    # has license header
    ├── .gitignore  
    ├── .licensaignore        # ADDED
    ├── .licensarc            # ADDED
    ├── package.json
    └── tsconfig.json

生成的 .licensarc 配置文件将包含以下设置

{
  "type": "Apache-2.0",
  "owner": "Eru Ilúvata",
  "year": 2001
}

为源文件添加许可证头

在前面描述的项目布局的基础上,注意到已经有三个源文件应用了 SPDX 许可证头。因此,这些文件被排除在许可过程之外。

使用来自 .licensarc 配置文件的默认值

licensa apply
src/Rivendell.ts
/**
 * Copyright 2001 Eru Ilúvata
 * SPDX-License-Identifier: Apache-2.0
 */

import Terrain from './map/Terrain.ts';

export class Rivendell extends Terrain {}
src/Isengard.ts
/**
 * Copyright 2001 Eru Ilúvata
 * SPDX-License-Identifier: Apache-2.0
 */

import Terrain from './map/Terrain.ts';

export class Isengard extends Terrain {}

使用提供的选项覆盖默认值

licensa apply --type AGPL-3.0-only --owner Sauron --year "2002-present"
src/Rivendell.ts
/**
 * Copyright 2002-present Sauron
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import Terrain from './map/Terrain.ts';

export class Rivendell extends Terrain {}
src/Isengard.ts
/**
 * Copyright 2002-present Sauron
 * SPDX-License-Identifier: AGPL-3.0-only
 */

import Terrain from './map/Terrain.ts';

export class Isengard extends Terrain {}

CLI 参考

命令

init

生成项目范围的 Licensa 配置。

licensa init [OPTIONS]

apply

将 SPDX 版权许可证头添加到源代码文件。

licensa apply [OPTIONS]

verify

验证源代码文件中是否存在许可证头。

licensa verify

选项

-t, --type required SPDX 许可证标识符(不区分大小写)

如果存在于 .licensarc 配置文件中则为可选

默认值: N/A

-o, --owner required 版权所有者

如果存在于 .licensarc 配置文件中则为可选

默认值: N/A

--year 版权年份或年份范围

默认值: null

--exclude 要排除在许可过程之外的 glob 模式列表

全局

--verbose 详细命令输出

-h, --help 显示帮助信息

-v, --version 显示程序版本号

许可证

根据您的选择,许可协议可以是以下之一

贡献

除非您明确说明,否则您根据 Apache-2.0 许可证定义的任何有意提交以包含在此作品中的贡献,都将根据上述方式双重许可,而无需任何额外条款或条件。

依赖项

~18-35MB
~552K SLoC