rafrsr / licenser

自动将许可证头部文档块添加到您的源文件中。

v1.0.4 2016-07-27 17:31 UTC

This package is auto-updated.

Last update: 2024-09-15 10:10:00 UTC


README

Build Status Coverage Status Scrutinizer Code Quality Latest Stable Version Latest Unstable Version Total Downloads License

SensioLabsInsight

自动将许可证头部文档块添加到您的源文件目录(ies)。

  • 接受源文件目录或单个源文件的路径进行处理
  • 接受包含您自定义许可证文档块的文件路径
  • 可以检查您的源文件是否包含正确的许可证信息
  • 支持通过每个项目的 .yml 配置进行全局安装

安装

您可以通过以下方式之一获取 rafrsr/licenser 的副本。

作为 Phar

您可以直接下载一个预编译的、即用型的 Phar 到任何目录。只需从我们的发布页面下载最新的 licenser.phar 文件。

最新版本

运行以下命令以验证一切是否正常

php licenser.phar --version

现在可以复制此工具,并在任何项目中使用

更新 Phar

没有单独的更新程序,只需再次下载最新版本并覆盖现有的 Phar。

使用 Composer 安装

或者,您还可以将 Licenser 作为您的开发依赖项的一部分进行安装。您可能希望使用 require-dev 部分在生产环境中排除 rafrsr/licenser。

  1. 安装 composer
  2. 执行:require rafrsr/licenser --dev
  3. 运行 ./vendor/bin/licenser --version

更新依赖项

只需运行 composer update rafrsr/licenser 即可更新到最新版本。

用法

使用内置许可证类型

Licenser 支持以下内置许可证和头部

  • Apache 2.0 许可证(在 Licenser 中称为 apache2.0
  • MIT 许可证(在 Licenser 中称为 mit
  • 默认 - 不是一个许可证,是添加到任何项目的常见头部(在 Licenser 中称为 default
  • Symfony - 是 symfony 组件和捆绑中常用的头部(在 Licenser 中称为 symfony

要使用这些内置许可证之一,只需将自定义许可证文件的路径替换为内置许可证的名称。例如,如果您想使用 MIT 许可证,则可以运行类似以下命令

./bin/licenser run /path/to/files mit

运行以下命令时使用 default 头部

./bin/licenser run /path/to/files

内置许可证中的值替换

当使用内置许可证时,Licenser 将将特殊占位符替换为自定义值。占位符会根据许可证而有所不同

例如
./bin/licenser /path/to/files -p author:"Author Name <email@example.com>" -p version:1.0
./bin/licenser /path/to/files mit -p author:"Author Name <email@example.com>"
./bin/licenser /path/to/files apache2.0 -p author:"Author Name <email@example.com>"
./bin/licenser /path/to/files symfony -p author:"Author Name <email@example.com>" -p package:MyPHPPackage

创建您自己的许可证模板

可以使用简单的文本文件创建许可证模板。许可证模板使用 Twig 处理,然后可以使用任何 Twig 功能。

例如
This file is part of the {{ package }}.

(c) {{ 'now'|date('Y') }}

@version {{ version }}

For the full copyright and license information, please view the LICENSE
file that was distributed with this source code.

要处理此许可证

./bin/licenser /path/to/files /path/to/license -p package:MyPHPPackage -p version:1.0

注意:命令行中传递的参数可以在许可证模板中使用

检查文件以获取正确的许可证

Licenser 还允许您检查您的源文件是否包含正确的许可证信息。如果有任何源文件没有与您提供的选项匹配的许可证头部,它会警告您。

./bin/licenser /path/to/files mit --only-check

默认情况下,检查只返回所有文件是否正常或异常,但可以使用详细级别来查看更多详细信息。

./bin/licenser /path/to/files mit --only-check -vv

详细级别在所有操作中可用

dry-run

Licenser 还允许您使用 dry-run 验证所有可用更改。这是正常过程和 only-check 的组合,在添加头部之前验证所有更改以查看受影响的文件。

./bin/licenser /path/to/files mit --dry-run -vv

每个项目的 YML 配置

授权器支持为每个项目创建具有自定义设置的 .yml 文件。使用全局安装的 授权器 和所有项目相同的命令行很有帮助。

在您的项目目录下创建一个 yml 文件

例如:

#.licenser.yml
finder:
  in: 
    - src
    - tests
license: default
parameters:
   author: Rafael SR <https://github.com/rafrsr>
   package: Licenser
   version: '@Rafrsr\Licenser\Licenser::VERSION'

然后执行

./bin/licenser --config=.licenser.yml

或者

./bin/licenser MyClass.php --config=.licenser.yml

在第二个示例中,finder 被覆盖,并将给定的配置应用到指定的文件或目录。

YML 设置

  • finder: 用于创建 Finder 实例以定位源文件
    • in: [array, string] 相对目录以查找文件
    • name: [array, string] 要处理的文件名称(默认:*.php)
    • exclude: [array, string] 排除目录
    • path: [array, string] 通过路径限制文件和目录
    • notPath: [array, string] 通过路径排除文件和目录
    • size: [array, string] 通过大小限制,例如 ['>= 1K','<= 2K']
    • date: [array, string] 通过最后修改日期限制文件

要查看所有可用选项和用法,请参阅: Finder。此配置中给出的所有选项都用于构建 Finder 实例。

  • finders: [array] 要使用多个不同文件类型或源的多重 Finder 的数组
  • license: [string] 要使用的内置许可证的名称或相对文件名
  • license_content: [string] 作为不引用任何文件的许可证的替代方案创建许可证
  • parameters: [array] 传递到模板的参数数组

注意:您可以在参数中通过 @ 在常量名称之前引用常量,例如:@Rafrsr\Licenser\Licenser::VERSION

在其他文件类型(如 JavaScript 源文件)中的使用

默认情况下,授权器仅查找名为 *.php 的文件,您可以在 Finder 配置中更改此行为。

例如:

#.licenser.yml
finder:
  in: 
    - src
  name:
    - *.php
    - *.js

为每种文件类型使用多 Finder

授权器 支持配置多个 Finder,以便在文件夹中查找不同的文件类型,使用 finders 而不是 finder 以启用此功能。

例如:

#.licenser.yml
finders:
  php:
    in:
      - src
  javascript:
     in:
      - web/js/
     name: '*.js'
     notPath:
      - jquery
      - bootstrap

上述示例在 src 文件夹中查找默认的 *.php 文件,并在 web/js 文件夹中查找 *.js 文件,忽略此位置中的 jquerybootstrap 文件夹。

注意

建议在运行工具时,您的源文件处于版本控制之下,因为该工具仍处于实验阶段。

版权

本项目遵循 MIT 许可证