Skip to content

Commit

Permalink
rexstan nutzen
Browse files Browse the repository at this point in the history
  • Loading branch information
gharlan committed Sep 29, 2023
1 parent c3ce63e commit a974a3e
Show file tree
Hide file tree
Showing 7 changed files with 174 additions and 59 deletions.
124 changes: 124 additions & 0 deletions .github/workflows/check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,124 @@
name: Check

on:
push:
branches: [main, bugfix, temp]
pull_request:
types: [opened, synchronize, reopened, ready_for_review]

env:
writable: ${{ github.event_name != 'push' && github.event.pull_request.head.repo.full_name == github.repository && github.actor != 'dependabot[bot]' && 1 || 0 }}

jobs:
php-cs-fixer:
runs-on: ubuntu-latest
if: github.event.pull_request.draft == false

steps:
- name: Checkout
uses: actions/checkout@v3
if: env.writable == 1
with:
ref: ${{ github.head_ref }}
token: ${{ secrets.BOT_TOKEN }}
- name: Checkout fork
uses: actions/checkout@v3
if: env.writable == 0

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: 8.1
coverage: none # disable xdebug, pcov
tools: cs2pr

- name: Composer install
uses: ramsey/composer-install@v2
with:
composer-options: --ansi --prefer-dist

- name: Fix code style
if: env.writable == 1
run: vendor/bin/php-cs-fixer list-files --config=.php-cs-fixer.dist.php | xargs -n 250 -P 3 vendor/bin/php-cs-fixer fix --diff --config=.php-cs-fixer.dist.php

- name: Commit changed files
uses: stefanzweifel/git-auto-commit-action@v4
if: env.writable == 1
with:
commit_message: Apply php-cs-fixer changes
commit_user_name: rex-bot
commit_user_email: [email protected]

- name: Check code style
if: env.writable == 0
run: vendor/bin/php-cs-fixer fix --ansi --diff --dry-run --format=checkstyle | cs2pr # check whether there are still errors left

rexstan:
runs-on: ubuntu-latest
env:
ADDON_KEY: ${{ github.event.repository.name }}

steps:
- name: Checkout
uses: actions/checkout@v3

- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '8.2'
extensions: gd, intl, pdo_mysql, iconv
coverage: none # disable xdebug, pcov

- name: Composer install
uses: ramsey/composer-install@v2
with:
composer-options: --ansi --prefer-dist

# download the latest REDAXO release and unzip it
# credits https://blog.markvincze.com/download-artifacts-from-a-latest-github-release-in-sh-and-powershell/
- name: Download latest REDAXO release
run: |
LATEST_RELEASE=$(curl -L -s -H 'Accept: application/json' https://github.com/redaxo/redaxo/releases/latest)
REDAXO_VERSION=$(echo $LATEST_RELEASE | sed -e 's/.*"tag_name":"\([^"]*\)".*/\1/')
echo "Downloaded REDAXO $REDAXO_VERSION"
curl -Ls -o redaxo.zip https://github.com/redaxo/redaxo/releases/download/$REDAXO_VERSION/redaxo_$REDAXO_VERSION.zip
unzip -oq redaxo.zip -d redaxo_cms
rm redaxo.zip
# start mysql service, create a database called redaxo5, apply config patch
- name: Init database
run: |
sudo /etc/init.d/mysql start
mysql -uroot -h127.0.0.1 -proot -e 'create database redaxo5;'
# run REDAXO setup with the following parameters
# Language: de
# DB password: root
# Create DB: no
# Admin username: admin
# Admin password: adminpassword
# Error E-mail: [email protected]
- name: Setup REDAXO
run: |
php redaxo_cms/redaxo/bin/console setup:run -n --lang=de_de --agree-license --db-host=127.0.0.1 --db-name=redaxo5 --db-password=root --db-createdb=no --db-setup=normal --admin-username=admin --admin-password=adminpassword [email protected] --ansi
php redaxo_cms/redaxo/bin/console config:set --type boolean debug.enabled true
php redaxo_cms/redaxo/bin/console config:set --type boolean debug.throw_always_exception true
# copy Addon files, ignore some directories...
# install the addon
# if the addon name does not match the repository name, ${{ github.event.repository.name }} must be replaced with the addon name
# install latest rexstan
# if additional addons are needed, they can be installed via the console commands
# see: https://www.redaxo.org/doku/main/basis-addons#console
- name: Copy and install Addons
run: |
rsync -av --exclude='.github' --exclude='.git' --exclude='redaxo_cms' './' 'redaxo_cms/redaxo/src/addons/${{ github.event.repository.name }}'
redaxo_cms/redaxo/bin/console install:download 'rexstan' '1.*'
redaxo_cms/redaxo/bin/console package:install 'rexstan'
redaxo_cms/redaxo/bin/console package:install '${{ github.event.repository.name }}'
# execute rexstan.php to create the needed user-config.neon
- name: Execute .tools/rexstan.php
run: php -f redaxo/src/addons/${{ github.event.repository.name }}/.tools/rexstan.php
working-directory: redaxo_cms

# run rexstan
- id: rexstan
name: Run rexstan
run: redaxo_cms/redaxo/bin/console rexstan:analyze
54 changes: 0 additions & 54 deletions .github/workflows/code-style.yml

This file was deleted.

3 changes: 3 additions & 0 deletions .tools/rexstan.neon
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
parameters:
bootstrapFiles:
- ../vendor/deployer/deployer/src/functions.php
42 changes: 42 additions & 0 deletions .tools/rexstan.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
<?php
/**
* boot redaxo and load packages
* necessary to use \rexstan\RexStanUserConfig::save()
*/
unset($REX);
$REX['REDAXO'] = true;
$REX['HTDOCS_PATH'] = './';
$REX['BACKEND_FOLDER'] = 'redaxo';
$REX['LOAD_PAGE'] = false;

require './redaxo/src/core/boot.php';
require './redaxo/src/core/packages.php';
require './redaxo/src/addons/ydeploy/vendor/deployer/deployer/src/functions.php';

/**
* rexstan config
*/
$extensions = [
'../../../../redaxo/src/addons/rexstan/config/rex-superglobals.neon',
'../../../../redaxo/src/addons/rexstan/vendor/phpstan/phpstan/conf/bleedingEdge.neon',
// '../../../../redaxo/src/addons/rexstan/vendor/phpstan/phpstan-strict-rules/rules.neon',
'../../../../redaxo/src/addons/rexstan/vendor/phpstan/phpstan-deprecation-rules/rules.neon',
'../../../../redaxo/src/addons/rexstan/config/phpstan-phpunit.neon',
'../../../../redaxo/src/addons/rexstan/config/phpstan-dba.neon',
// '../../../../redaxo/src/addons/rexstan/config/cognitive-complexity.neon',
// '../../../../redaxo/src/addons/rexstan/config/code-complexity.neon',
'../../../../redaxo/src/addons/rexstan/config/dead-code.neon',
'../../../../redaxo/src/addons/ydeploy/.tools/rexstan.neon',
];

// get addon key from environment variable
$addon = ['../../../../redaxo/src/addons/' . getenv('ADDON_KEY') . '/'];

/**
* save config
* @param int $level the level to use
* @param array $addon the addon to use
* @param array $extensions the extensions to use
* @param int $phpVersion the php version to use
*/
\rexstan\RexStanUserConfig::save(5, $addon, $extensions, 80203);
6 changes: 3 additions & 3 deletions boot.php
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@

rex_view::addCssFile($this->getAssetsUrl('ydeploy.css'));

rex_extension::register('PAGE_BODY_ATTR', 'rex_ydeploy_handler::addBodyClasses');
rex_extension::register('OUTPUT_FILTER', 'rex_ydeploy_handler::addBadge');
rex_extension::register('PAGE_BODY_ATTR', rex_ydeploy_handler::addBodyClasses(...));
rex_extension::register('OUTPUT_FILTER', rex_ydeploy_handler::addBadge(...));

if (rex_ydeploy::factory()->isDeployed()) {
$developer = rex_addon::get('developer');
Expand All @@ -19,5 +19,5 @@
$this->setProperty('config', $config);
}

rex_extension::register('PAGE_CHECKED', 'rex_ydeploy_handler::protectPages');
rex_extension::register('PAGE_CHECKED', rex_ydeploy_handler::protectPages(...));
}
2 changes: 1 addition & 1 deletion lib/command/migrate.php
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ protected function execute(InputInterface $input, OutputInterface $output): int
$io->title('YDeploy migration');

$sql = rex_sql::factory();
$migrated = $sql->getArray('SELECT `timestamp` FROM ' . $this->migrationTable);
$migrated = $sql->getArray('SELECT `timestamp` FROM ' . $sql->escapeIdentifier($this->migrationTable));
$migrated = array_column($migrated, 'timestamp', 'timestamp');

$fake = $input->getOption('fake');
Expand Down
2 changes: 1 addition & 1 deletion lib/handler.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ public static function addBadge(rex_extension_point $ep): ?string
$badge = 'Development';
}

$badge = rex_extension::registerPoint(new rex_extension_point('YDEPLOY_BADGE', $badge));
$badge = rex_extension::registerPoint(new rex_extension_point('YDEPLOY_BADGE', $badge)); // @phpstan-ignore-line

if (!$badge) {
return null;
Expand Down

0 comments on commit a974a3e

Please sign in to comment.