ergebnis/license

提供开源许可证的抽象。

2.4.0 2023-11-30 13:28 UTC

README

Integrate Merge Release Renew

Code Coverage Type Coverage

Latest Stable Version Total Downloads Monthly Downloads

此项目提供了一个composer包,用于对开源许可证进行抽象。

安装

运行

composer require --dev ergebnis/license

使用

有时开源维护者会抱怨管理开源项目的负担。有时他们会辩称,贡献者不必要地通过打开请求更新许可证年份增加了他们的工作量。

当然,所有这些都可以自动化,不是吗?

friendsofphp/php-cs-fixer的配置

使用 friendsofphp/php-cs-fixer,您可以使用配置文件 .php-cs-fixer.php

  • 将许可证保存到文件中,例如 LICENSELICENSE.md
  • 使用 header_comment 修复器指定文件级别的头部,该头部将在PHP文件中被替换

以下是一个针对使用 MIT 许可证类型的开源项目的 .php-cs-fixer.php 文件示例

<?php

declare(strict_types=1);

/**
 * Copyright (c) 2020-2022 Andreas Möller
 *
 * For the full copyright and license information, please view
 * the LICENSE.md file that was distributed with this source code.
 *
 * @see https://github.com/ergebnis/license
 */

use Ergebnis\License;
use PhpCsFixer\Config;
use PhpCsFixer\Finder;

$license = License\Type\MIT::text(
    __DIR__ . '/LICENSE',
    License\Range::since(
        License\Year::fromString('2020'),
        new DateTimeZone('UTC')
    ),
    License\Holder::fromString('Andreas Möller'),
    License\Url::fromString('https://github.com/ergebnis/license')
);

$license->save();

$finder = Finder::create()->in(__DIR__);

return Config::create()
    ->setFinder($finder)
    ->setRules([
        'header_comment' => [
            'comment_type' => 'PHPDoc',
            'header' => $license->header(),
            'location' => 'after_declare_strict',
            'separate' => 'both',
        ],
    ]);

💡 也可以看看这个项目的 .php-cs-fixer.php

以下是一个针对使用 None 许可证类型的封闭源代码项目的 .php-cs-fixer.php 文件示例

<?php

declare(strict_types=1);

/**
 * Copyright (c) 2011-2019 Andreas Möller
 *
 * @see https://github.com/localheinz/localheinz.com
 */

use Ergebnis\License;
use PhpCsFixer\Config;
use PhpCsFixer\Finder;

$license = License\Type\None::text(
    License\Range::since(
        License\Year::fromString('2020'),
        new DateTimeZone('UTC')
    ),
    License\Holder::fromString('Andreas Möller'),
    License\Url::fromString('https://github.com/localheinz/localheinz.com')
);

$finder = Finder::create()->in(__DIR__);

return Config::create()
    ->setFinder($finder)
    ->setRules([
        'header_comment' => [
            'comment_type' => 'PHPDoc',
            'header' => $license->header(),
            'location' => 'after_declare_strict',
            'separate' => 'both',
        ],
    ]);

GitHub Actions

当使用 GitHub Actions 时,您可以设置一个计划的工作流程,该工作流程将在1月1日自动打开许可证年份的请求。

name: "License"

on:
  schedule:
    - cron: "1 0 1 1 *"

jobs:
  license:
    name: "License"

    runs-on: "ubuntu-latest"

    steps:
      - name: "Checkout"
        uses: "actions/[email protected]"

      - name: "Install dependencies with composer"
        run: "composer install --no-interaction --no-progress --no-suggest"

      - name: "Run friendsofphp/php-cs-fixer"
        run: "vendor/bin/php-cs-fixer fix --config=.php-cs-fixer.php --diff --dry-run --verbose"

      - name: "Open pull request updating license year"
        uses: "gr2m/[email protected]"
        with:
          author: "Andreas Möller <[email protected]>"
          branch: "feature/license-year"
          body: |
            This PR

            - [x] updates the license year
          commit-message: "Enhancement: Update license year"
          path: "."
          title: "Enhancement: Update license year"
        env:
          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"

💡 如果需要帮助安排工作流程,请查看 crontab.guru

请注意,由GitHub Actions打开的请求或推送的提交不会触发构建。作为替代方案,您可以设置一个机器人用户

       - name: "Open pull request updating license year"
         uses: "gr2m/[email protected]"
         with:
-          author: "Andreas Möller <[email protected]>"
+          author: "ergebnis-bot <[email protected]>"
           branch: "feature/license-year"
           body: |
             This PR

             - [x] updates the license year
           commit-message: "Enhancement: Update license year"
           path: "."
           title: "Enhancement: Update license year"
         env:
-          GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
+          GITHUB_TOKEN: "${{ secrets.ERGEBNIS_BOT_TOKEN }}"

类型

以下许可证类型目前可用

💡 需要其他许可证类型?请随意打开一个请求!

变更日志

此项目的维护者在变更日志中记录了此项目的显著更改。

贡献

此项目的维护者建议遵循贡献指南

行为准则

此项目的维护者要求贡献者遵循行为准则

一般支持策略

此项目的维护者提供有限的支持。

您可以通过赞助 @localheinz请求与该项目相关的服务发票来支持此项目的维护。

PHP版本支持策略

此项目支持具有活动和安全支持的PHP版本。

本项目的维护者在其初始发布后添加对PHP版本的兼容支持,并在其安全支持结束时停止支持该PHP版本。

安全策略

本项目有一个安全策略

许可证

本项目使用MIT许可证

社交

在Twitter上关注@localheinz@ergebnis