From c283a842637e18f01b72db4c2dbb047f23afafe7 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Fri, 17 Feb 2023 16:32:10 +0800 Subject: [PATCH 1/5] update workflows --- .github/workflows/build-release-artifacts.yml | 68 +++++++++++++++++++ .github/workflows/increment-build-number.yml | 10 +++ 2 files changed, 78 insertions(+) create mode 100644 .github/workflows/build-release-artifacts.yml diff --git a/.github/workflows/build-release-artifacts.yml b/.github/workflows/build-release-artifacts.yml new file mode 100644 index 00000000..54394115 --- /dev/null +++ b/.github/workflows/build-release-artifacts.yml @@ -0,0 +1,68 @@ +name: Build Release Artifacts + +on: + release: + types: + - published + workflow_dispatch: + +jobs: + build-release-artifacts: + name: Build Release Artifacts + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.base_ref }} + + - name: Setup PHP + uses: sunxyw/workflows/setup-environment@main + with: + php-version: 8.1 + php-extensions: swoole, posix, json + operating-system: ubuntu-latest + use-cache: true + + - name: Build Phar + run: ./zhamao build + + - name: Get Latest Release Upload URL + id: get-latest-release + run: curl https://api.github.com/repos/${{ github.repository }}/releases/latest | jq -r '.upload_url' | sed 's/{?name,label}//g' > upload_url.txt + + - name: Upload Phar + run: | + curl -X POST \ + -H "Accept: application/vnd.github+json" \ + -H "Authorization: Bearer ${{ secrets.GITHUB_TOKEN }}"\ + -H "X-GitHub-Api-Version: 2022-11-28" \ + -H "Content-Type: application/octet-stream" \ + $(cat upload_url.txt)/zm.phar \ + --data-binary "@build/zm.phar" + + update-changelog: + name: Update Changelog + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v3 + with: + ref: ${{ github.base_ref }} + + - name: Setup PHP + uses: sunxyw/workflows/setup-environment@main + with: + php-version: 8.1 + php-extensions: swoole, posix, json + operating-system: ubuntu-latest + use-cache: true + + - name: Update Changelog + run: ./zhamao generate:text update-log-md + + - name: Commit Changelog + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: update changelog + branch: ${{ github.base_ref }} diff --git a/.github/workflows/increment-build-number.yml b/.github/workflows/increment-build-number.yml index ca096f11..bbb4bb8b 100644 --- a/.github/workflows/increment-build-number.yml +++ b/.github/workflows/increment-build-number.yml @@ -47,6 +47,16 @@ jobs: commit_message: update api docs branch: ${{ github.base_ref }} + - name: Update Class Aliases Docs + run: ./zhamao generate:text class-alias-md + if: ${{ github.event.pull_request.merged == true && contains(github.event.pull_request.changed_files, 'src/Globals/global_class_alias.php') }} + + - name: Commit Class Aliases Docs + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: update class aliases docs + branch: ${{ github.base_ref }} + - name: Increment build number id: increment-build-number run: | From 0b8a2dd494467c73da38d912fd59902d508e2e5d Mon Sep 17 00:00:00 2001 From: sunxyw Date: Sat, 18 Feb 2023 07:18:52 +0800 Subject: [PATCH 2/5] fix composer production bugs --- composer.json | 2 +- src/ZM/Command/BuildCommand.php | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index d5549733..d79e719d 100644 --- a/composer.json +++ b/composer.json @@ -96,7 +96,7 @@ } }, "scripts": { - "post-autoload-dump": "vendor/bin/captainhook install -f -s", + "post-autoload-dump": "[ $COMPOSER_DEV_MODE -eq 0 ] || vendor/bin/captainhook install -f -s", "analyse": "phpstan analyse --memory-limit 300M", "cs-fix": "PHP_CS_FIXER_FUTURE_MODE=1 php-cs-fixer fix", "test": "bin/phpunit-zm --no-coverage" diff --git a/src/ZM/Command/BuildCommand.php b/src/ZM/Command/BuildCommand.php index 90554552..5526da05 100644 --- a/src/ZM/Command/BuildCommand.php +++ b/src/ZM/Command/BuildCommand.php @@ -42,6 +42,7 @@ class BuildCommand extends Command } $target = $build_dir . '/' . $target; // 确认 Phar 文件可以写入 + FileSystem::createDir($build_dir); FileSystem::ensureFileWritable($target); $this->comment("目标文件:{$target}"); @@ -51,6 +52,8 @@ class BuildCommand extends Command unlink($target); } + // TODO: 增加开发依赖的判定并提醒 + $this->info('正在构建 Phar 包'); $this->build( From fb12c9dc0429738280568786dbdc9080ca1afa19 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Sat, 18 Feb 2023 07:19:11 +0800 Subject: [PATCH 3/5] update release artifacts build workflow --- .github/workflows/build-release-artifacts.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-release-artifacts.yml b/.github/workflows/build-release-artifacts.yml index 54394115..573da797 100644 --- a/.github/workflows/build-release-artifacts.yml +++ b/.github/workflows/build-release-artifacts.yml @@ -19,11 +19,14 @@ jobs: - name: Setup PHP uses: sunxyw/workflows/setup-environment@main with: - php-version: 8.1 + php-version: 8.0 php-extensions: swoole, posix, json operating-system: ubuntu-latest use-cache: true + - name: Remove Dev Dependencies + run: composer install --no-dev + - name: Build Phar run: ./zhamao build From de88c26427341e58672ba73d2ff9ac918a3e0608 Mon Sep 17 00:00:00 2001 From: sunxyw Date: Sat, 18 Feb 2023 07:33:02 +0800 Subject: [PATCH 4/5] fix composer hook on windows --- composer.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/composer.json b/composer.json index d79e719d..2b739641 100644 --- a/composer.json +++ b/composer.json @@ -34,6 +34,7 @@ }, "require-dev": { "captainhook/captainhook": "^5.10", + "captainhook/plugin-composer": "^5.3", "friendsofphp/php-cs-fixer": "^3.2 != 3.7.0", "jangregor/phpstan-prophecy": "^1.0", "jetbrains/phpstorm-attributes": "^1.0", @@ -82,7 +83,8 @@ ], "config": { "allow-plugins": { - "phpstan/extension-installer": true + "phpstan/extension-installer": true, + "captainhook/plugin-composer": true }, "optimize-autoloader": true, "sort-packages": true @@ -96,7 +98,6 @@ } }, "scripts": { - "post-autoload-dump": "[ $COMPOSER_DEV_MODE -eq 0 ] || vendor/bin/captainhook install -f -s", "analyse": "phpstan analyse --memory-limit 300M", "cs-fix": "PHP_CS_FIXER_FUTURE_MODE=1 php-cs-fixer fix", "test": "bin/phpunit-zm --no-coverage" From 65c609754a666f22f49573da5eb16648d2da99be Mon Sep 17 00:00:00 2001 From: crazywhalecc Date: Sat, 18 Feb 2023 14:38:48 +0800 Subject: [PATCH 5/5] update class-alias update command --- .../Command/Generate/TextGenerateCommand.php | 28 +++++++++++++++---- 1 file changed, 23 insertions(+), 5 deletions(-) diff --git a/src/ZM/Command/Generate/TextGenerateCommand.php b/src/ZM/Command/Generate/TextGenerateCommand.php index b47b975f..45e934dc 100644 --- a/src/ZM/Command/Generate/TextGenerateCommand.php +++ b/src/ZM/Command/Generate/TextGenerateCommand.php @@ -45,11 +45,29 @@ class TextGenerateCommand extends Command $full_maxlen = max($full_maxlen, strlen('`' . $full_class . '`')); $short_maxlen = max($short_maxlen, strlen('`' . $short_class . '`')); } - $this->write('| ' . str_pad('全类名', $full_maxlen) . ' | ' . str_pad('别名', $short_maxlen) . ' |'); - $this->write('| ' . str_pad('', $full_maxlen, '-') . ' | ' . str_pad('', $short_maxlen, '-') . ' |'); - foreach ($line as $v) { - $this->write('| ' . str_pad('`' . $v[0] . '`', $full_maxlen) . ' | ' . str_pad('`' . $v[1] . '`', $short_maxlen) . ' |'); - } + $obj = <<<'LINE' +# 类全局别名 + +在框架 1.x 和 2.x 老版本中,我们发现许多开发者在使用框架时,往往不会使用 PhpStorm 这类大型 IDE,而即使使用 VSCode 这类编辑器的时候也不一定会安装补全插件, +这样在编写机器人模块或插件时会因寻找每个对象的完整命名空间而烦恼。 + +在 3.0 版本起,框架对常用的注解事件和对象均使用了类别名功能,方便非 IDE 开发者编写插件。 + +## 别名使用 + +框架对别名的定义比较简单,由于内部暂时没有不同命名空间下重复类名的情况,所以我们目前只对需要别名类名的命名空间移除,例如: + +`\ZM\Annotation\OneBot\BotCommand` 注解事件类,在经过全局别名后,你也可以使用 `\BotCommand` 作为注解事件,效果相同。 + +## 别名列表 +LINE; + file_put_contents( + SOURCE_ROOT_DIR . '/docs/components/common/class-alias.md', + $obj . "\n" . '| ' . str_pad('全类名', $full_maxlen) . ' | ' . str_pad('别名', $short_maxlen) . ' |' . + "\n" . '| ' . str_pad('', $full_maxlen, '-') . ' | ' . str_pad('', $short_maxlen, '-') . ' |' . + "\n" . implode("\n", array_map(fn ($v) => '| ' . str_pad('`' . $v[0] . '`', $full_maxlen) . ' | ' . str_pad('`' . $v[1] . '`', $short_maxlen) . ' |', $line)) . "\n" + ); + $this->write('成功'); return static::SUCCESS; }