diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index eeaf12b..0000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,12 +0,0 @@ -| Q | A -| ---------------- | ----- -| Bug report? | yes/no -| Feature request? | yes/no -| BC Break report? | yes/no -| RFC? | yes/no - - diff --git a/.github/ISSUE_TEMPLATE/1_Bug_report.md b/.github/ISSUE_TEMPLATE/1_Bug_report.md new file mode 100644 index 0000000..1e26723 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/1_Bug_report.md @@ -0,0 +1,20 @@ +--- +name: "\U0001F41B Bug Report" +about: Report errors and problems +title: "[bug] " +labels: Potential Bug +assignees: '' + +--- + +**Description** + + +**How to reproduce** + + +**Possible Solution** + + +**Additional context** + diff --git a/.github/ISSUE_TEMPLATE/2_Feature_request.md b/.github/ISSUE_TEMPLATE/2_Feature_request.md new file mode 100644 index 0000000..c21e708 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/2_Feature_request.md @@ -0,0 +1,15 @@ +--- +name: "\U0001F680 Feature Request" +about: "I have a suggestion (and may want to implement it \U0001F642)!" +title: "[Feature] " +labels: Feature +assignees: '' + +--- + +**Description** + + +**Example** + diff --git a/.github/ISSUE_TEMPLATE/3_Support_question.md b/.github/ISSUE_TEMPLATE/3_Support_question.md new file mode 100644 index 0000000..f933bf2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/3_Support_question.md @@ -0,0 +1,13 @@ +--- +name: 👩‍🏫 Support Question +about: Questions about using this library +labels: Question / Support + +--- + +**Description** + diff --git a/.github/ISSUE_TEMPLATE/4_Security_issue.md b/.github/ISSUE_TEMPLATE/4_Security_issue.md new file mode 100644 index 0000000..ea75484 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/4_Security_issue.md @@ -0,0 +1,14 @@ +--- +name: ⛔ Security Issue +about: Report security issues and problems (PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY) + +--- + +⚠ PLEASE DON'T DISCLOSE SECURITY-RELATED ISSUES PUBLICLY, SEE BELOW. + +If you have found a security issue in this project, please send the details to +security [at] rollerscapes.net and don't disclose it publicly until we can provide a +fix for it. + +**Note:** Please don't blindly send reports about automated tools, make sure the +reported issue is in fact exploitable. Thanks. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index fa91947..c0f5573 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -5,10 +5,11 @@ | BC breaks? | yes/no | Deprecations? | yes/no | Fixed tickets | #... -| License | MIT +| License | MPL-2.0 diff --git a/.github/composer-config.json b/.github/composer-config.json new file mode 100644 index 0000000..3cf8468 --- /dev/null +++ b/.github/composer-config.json @@ -0,0 +1,13 @@ +{ + "config": { + "cache-vcs-dir": "/dev/null", + "platform-check": false, + "preferred-install": { + "*": "dist" + }, + "allow-plugins": { + "ergebnis/composer-normalize": true, + "symfony/flex": true + } + } +} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml deleted file mode 100644 index 84a1f32..0000000 --- a/.github/workflows/ci.yaml +++ /dev/null @@ -1,158 +0,0 @@ -name: 'CI' - -on: - push: - branches: - - main - pull_request: - branches: - - main - -jobs: - cs-fixer: - name: 'PHP CS Fixer' - - runs-on: 'ubuntu-latest' - - strategy: - matrix: - php-version: - - '8.2' - - steps: - - - name: 'Check out' - uses: 'actions/checkout@v4' - - - - name: 'Set up PHP' - uses: 'shivammathur/setup-php@v2' - with: - php-version: '${{ matrix.php-version }}' - coverage: 'none' - - - - name: 'Get Composer cache directory' - id: 'composer-cache' - run: 'echo "cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT' - - - - name: 'Cache dependencies' - uses: 'actions/cache@v3' - with: - path: '${{ steps.composer-cache.outputs.cache_dir }}' - key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}" - restore-keys: 'php-${{ matrix.php-version }}-composer-locked-' - - - - name: 'Install dependencies' - run: 'composer install --no-progress' - - - - name: 'Check the code style' - run: 'make cs' - - phpstan: - name: 'PhpStan' - - runs-on: 'ubuntu-latest' - - strategy: - matrix: - php-version: - - '8.3' - - steps: - - - name: 'Check out' - uses: 'actions/checkout@v4' - - - - name: 'Set up PHP' - uses: 'shivammathur/setup-php@v2' - with: - php-version: '${{ matrix.php-version }}' - coverage: 'none' - - - - name: 'Get Composer cache directory' - id: 'composer-cache' - run: 'echo "cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT' - - - - name: 'Cache dependencies' - uses: 'actions/cache@v3' - with: - path: '${{ steps.composer-cache.outputs.cache_dir }}' - key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}" - restore-keys: 'php-${{ matrix.php-version }}-composer-locked-' - - - - name: 'Install dependencies' - run: 'composer install --no-progress' - - - - name: 'Run PhpStan' - run: 'vendor/bin/phpstan analyze --no-progress' - - tests: - name: 'PHPUnit' - - runs-on: 'ubuntu-latest' - - strategy: - matrix: - include: - - - php-version: '8.2' - composer-options: '--prefer-stable' - symfony-version: '^6.4' - - - - php-version: '8.3' - composer-options: '--prefer-stable' - symfony-version: '^7.0' - - - - php-version: '8.4' - composer-options: '--prefer-stable' - symfony-version: '^7.2' - - steps: - - - name: 'Check out' - uses: 'actions/checkout@v4' - - - - name: 'Set up PHP' - uses: 'shivammathur/setup-php@v2' - with: - php-version: '${{ matrix.php-version }}' - coverage: 'none' - - - - name: 'Get Composer cache directory' - id: 'composer-cache' - run: 'echo "cache_dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT' - - - - name: 'Cache dependencies' - uses: 'actions/cache@v3' - with: - path: '${{ steps.composer-cache.outputs.cache_dir }}' - key: "php-${{ matrix.php-version }}-composer-locked-${{ hashFiles('composer.lock') }}" - restore-keys: 'php-${{ matrix.php-version }}-composer-locked-' - - - - name: 'Install dependencies' - env: - COMPOSER_OPTIONS: '${{ matrix.composer-options }}' - SYMFONY_REQUIRE: '${{ matrix.symfony-version }}' - run: | - composer global config --no-plugins allow-plugins.symfony/flex true - composer global require --no-progress --no-scripts --no-plugins symfony/flex - composer update --no-progress $COMPOSER_OPTIONS - - - - name: 'Run tests' - run: make phpunit diff --git a/.github/workflows/composer-validate.yaml b/.github/workflows/composer-validate.yaml new file mode 100644 index 0000000..4eaa602 --- /dev/null +++ b/.github/workflows/composer-validate.yaml @@ -0,0 +1,51 @@ +name: Composer Validate + +on: + push: + paths: + - 'composer.json' + pull_request: + paths: + - 'composer.json' + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + composer-sync: + name: 'Composer validation' + runs-on: ubuntu-24.04 + env: + php-version: '8.4' + + steps: + - + name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ env.php-version }} + ini-values: "memory_limit=-1" + coverage: none + + - + name: Checkout target branch + uses: actions/checkout@v6 + + - + name: 'Install dependencies' + run: | + COMPOSER_HOME="$(composer config home)" + ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" + composer global require -q "ergebnis/composer-normalize" + composer install --no-progress + + - + name: 'Normalized composer.json' + run: | + echo "composer.json" + composer validate + composer normalize diff --git a/.github/workflows/inspector-bot.yaml b/.github/workflows/inspector-bot.yaml new file mode 100644 index 0000000..a46a893 --- /dev/null +++ b/.github/workflows/inspector-bot.yaml @@ -0,0 +1,16 @@ +name: CS + +on: + pull_request: + +permissions: + contents: read + +jobs: + call-inspector-bot: + name: InspectorBot + uses: rollerscapes/inspector-bot/.github/workflows/inspector-bot.yml@main + with: + package: RollerworksSplitToken + check_license: false # We use MPL-2.0 and this not supported by the bot yet + diff --git a/.github/workflows/phpstan.yaml b/.github/workflows/phpstan.yaml new file mode 100644 index 0000000..6169481 --- /dev/null +++ b/.github/workflows/phpstan.yaml @@ -0,0 +1,62 @@ +name: PHPStan + +on: + pull_request: + +defaults: + run: + shell: bash + +concurrency: + group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + phpstan: + name: PHPStan + runs-on: ubuntu-24.04 + + env: + php-version: '8.2' + steps: + - + name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ env.php-version }} + ini-values: "memory_limit=-1" + coverage: none + + - + name: Checkout target branch + uses: actions/checkout@v6 + with: + ref: ${{ github.base_ref }} + + - + name: Checkout PR + uses: actions/checkout@v6 + + - + name: Install dependencies + run: | + COMPOSER_HOME="$(composer config home)" + ([ -d "$COMPOSER_HOME" ] || mkdir "$COMPOSER_HOME") && cp .github/composer-config.json "$COMPOSER_HOME/config.json" + composer install --no-progress --ansi --no-plugins + + - + name: Generate PHPStan baseline + run: | + git checkout composer.json + git checkout -m ${{ github.base_ref }} + vendor/bin/phpstan analyze --generate-baseline --allow-empty-baseline --no-progress + git checkout -m FETCH_HEAD + + - + name: PHPStan + run: | + vendor/bin/phpstan analyze --no-progress --error-format=github + diff --git a/.github/workflows/unit-tests.yml b/.github/workflows/unit-tests.yml new file mode 100644 index 0000000..18c17b0 --- /dev/null +++ b/.github/workflows/unit-tests.yml @@ -0,0 +1,72 @@ +name: CI +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + + test: + + name: 'PHPUnit with PHP ${{ matrix.php-version }} / Symfony ${{ matrix.symfony-version }}' + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + include: + - + php-version: '8.2' + composer-options: '--prefer-stable' + symfony-version: '^6.4' + + - + php-version: '8.3' + composer-options: '--prefer-stable' + symfony-version: '^7.4' + + - + php-version: '8.4' + composer-options: '--prefer-stable' + symfony-version: '^7.4' + + - + php-version: '8.4' + composer-options: '--prefer-stable' + symfony-version: '^8.0' + + - + php-version: '8.5' + composer-options: '--prefer-stable' + symfony-version: '^8.0' + steps: + - + name: Checkout + uses: actions/checkout@v6 + + - + name: 'Set up PHP' + uses: 'shivammathur/setup-php@v2' + with: + php-version: '${{ matrix.php-version }}' + coverage: none + env: + update: true + + - + name: 'Install dependencies' + env: + COMPOSER_OPTIONS: '${{ matrix.composer-options }}' + SYMFONY_REQUIRE: '${{ matrix.symfony-version }}' + run: | + rm -f composer.lock + composer global config --no-plugins allow-plugins.symfony/flex true + composer global require --no-progress --no-scripts --no-plugins symfony/flex + composer update --no-progress --no-interaction --optimize-autoloader $COMPOSER_OPTIONS + + - + name: Run Tests + run: make phpunit diff --git a/composer.json b/composer.json index 954d44f..8f667aa 100644 --- a/composer.json +++ b/composer.json @@ -16,7 +16,7 @@ ], "homepage": "https://rollerworks.github.io", "require": { - "php": ">=8.2", + "php": "^8.2", "paragonie/constant_time_encoding": "^2.6 || ^3.0", "paragonie/hidden-string": "^2.0", "psr/clock": "^1.0" @@ -25,7 +25,7 @@ "doctrine/instantiator": "^2.0", "phpunit/phpunit": "^10.4", "rollerscapes/standards": "^1.0", - "symfony/clock": "^6.3 || ^7.2" + "symfony/clock": "^6.4 || ^7.2 || ^8.0" }, "minimum-stability": "dev", "prefer-stable": true,