5 Commits

Author SHA1 Message Date
dependabot[bot]
9f08209d39 Bump rector/rector from 2.1.7 to 2.2.3
Some checks failed
CI / Tests (push) Failing after 41s
CI / Build and deploy to ${{ startsWith(github.ref, 'refs/tags/') && 'production' || (github.ref == 'refs/heads/main' && 'acceptance' || '') }} (push) Has been skipped
Bumps [rector/rector](https://github.com/rectorphp/rector) from 2.1.7 to 2.2.3.
- [Release notes](https://github.com/rectorphp/rector/releases)
- [Commits](https://github.com/rectorphp/rector/compare/2.1.7...2.2.3)

---
updated-dependencies:
- dependency-name: rector/rector
  dependency-version: 2.2.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 08:06:11 +02:00
dependabot[bot]
a1fc86a6a0 Bump doctrine/doctrine-fixtures-bundle from 4.1.0 to 4.3.0
Bumps [doctrine/doctrine-fixtures-bundle](https://github.com/doctrine/DoctrineFixturesBundle) from 4.1.0 to 4.3.0.
- [Release notes](https://github.com/doctrine/DoctrineFixturesBundle/releases)
- [Commits](https://github.com/doctrine/DoctrineFixturesBundle/compare/4.1.0...4.3.0)

---
updated-dependencies:
- dependency-name: doctrine/doctrine-fixtures-bundle
  dependency-version: 4.3.0
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 08:05:35 +02:00
dependabot[bot]
961c7434ac Bump phpstan/phpstan-doctrine from 2.0.6 to 2.0.10
Bumps [phpstan/phpstan-doctrine](https://github.com/phpstan/phpstan-doctrine) from 2.0.6 to 2.0.10.
- [Release notes](https://github.com/phpstan/phpstan-doctrine/releases)
- [Commits](https://github.com/phpstan/phpstan-doctrine/compare/2.0.6...2.0.10)

---
updated-dependencies:
- dependency-name: phpstan/phpstan-doctrine
  dependency-version: 2.0.10
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-10-21 08:04:57 +02:00
ee1a15ee78 New pipeline
Some checks failed
CI / Tests (push) Failing after 36s
CI / Build and deploy to ${{ startsWith(github.ref, 'refs/tags/') && 'production' || (github.ref == 'refs/heads/main' && 'acceptance' || '') }} (push) Has been skipped
2025-10-21 00:06:23 +02:00
253729abc0 Add completions 2025-10-20 21:41:46 +02:00
7 changed files with 319 additions and 79 deletions

View File

@@ -13,6 +13,10 @@ concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }}
cancel-in-progress: true cancel-in-progress: true
permissions:
contents: read
packages: write
jobs: jobs:
tests: tests:
name: Tests name: Tests
@@ -57,17 +61,62 @@ jobs:
run: docker compose exec -T php vendor/bin/phpunit run: docker compose exec -T php vendor/bin/phpunit
- name: Doctrine Schema Validator - name: Doctrine Schema Validator
run: docker compose exec -T php bin/console -e test doctrine:schema:validate run: docker compose exec -T php bin/console -e test doctrine:schema:validate
deploy:
name: Deploy build-deploy:
name: Build and deploy to ${{ startsWith(github.ref, 'refs/tags/') && 'production' || (github.ref == 'refs/heads/main' && 'acceptance' || '') }}
environment: environment:
name: ${{ startsWith(github.ref, 'refs/tags/') && 'production' || (github.ref == 'refs/heads/main' && 'acceptance' || '') }} name: ${{ startsWith(github.ref, 'refs/tags/') && 'production' || (github.ref == 'refs/heads/main' && 'acceptance' || '') }}
url: ${{ vars.URL }} url: ${{ vars.URL }}
needs: tests needs: tests
runs-on: ubuntu-latest runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/') if: (github.ref == 'refs/heads/main' && false) || startsWith(github.ref, 'refs/tags/')
steps: steps:
- shell: bash - name: Checkout
uses: actions/checkout@v4
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v3
- name: Log in to GitHub Container Registry
uses: docker/login-action@v3
with:
registry: ghcr.io
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Extract metadata
id: meta
run: |
REPO_LOWER=$(echo "${{ github.repository }}" | tr '[:upper:]' '[:lower:]')
if [[ "${{ github.ref }}" == refs/tags/* ]]; then
TAG="${GITHUB_REF#refs/tags/}"
{
echo "tag=$TAG"
echo "full_name=ghcr.io/${REPO_LOWER}:$TAG"
} >> "$GITHUB_OUTPUT"
else
SHORT_SHA=$(git rev-parse --short HEAD)
{
echo "tag=$SHORT_SHA"
echo "full_name=ghcr.io/${REPO_LOWER}:$SHORT_SHA"
} >> "$GITHUB_OUTPUT"
fi
- name: Build and Push Docker images
uses: docker/bake-action@v5
with:
pull: true
push: true
files: |
compose.yaml
compose.build.yaml
set: |
*.cache-from=type=gha,scope=${{github.ref}}
*.cache-from=type=gha,scope=refs/heads/main
*.cache-to=type=gha,scope=${{github.ref}},mode=max
*.tags=${{ steps.meta.outputs.full_name }}
- name: Trigger Portainer Deployment
shell: bash
env: env:
PORTAINER_WEBHOOK: ${{secrets.PORTAINER_WEBHOOK}} PORTAINER_WEBHOOK: ${{secrets.PORTAINER_WEBHOOK}}
run: | run: |
curl -v -X POST "$PORTAINER_WEBHOOK" curl -v -X POST "$PORTAINER_WEBHOOK"?IMAGE_TAG=${{steps.meta.outputs.tag}} --fail-with-body

View File

@@ -22,7 +22,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
file \ file \
gettext \ gettext \
git \ git \
&& rm -rf /var/lib/apt/lists/* && rm -rf /var/lib/apt/lists/*
RUN set -eux; \ RUN set -eux; \
install-php-extensions \ install-php-extensions \
@@ -32,7 +32,7 @@ RUN set -eux; \
opcache \ opcache \
zip \ zip \
gd \ gd \
excimer-1.2.3 \ excimer \
; ;
# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser # https://getcomposer.org/doc/03-cli.md#composer-allow-superuser
@@ -60,6 +60,14 @@ FROM frankenphp_base AS frankenphp_dev
ENV APP_ENV=dev XDEBUG_MODE=off ENV APP_ENV=dev XDEBUG_MODE=off
# hadolint ignore=DL3008
RUN apt-get update && apt-get install -y --no-install-recommends \
bash-completion \
&& rm -rf /var/lib/apt/lists/*
COPY --link frankenphp/console-complete.bash /usr/share/bash-completion/completions/console
COPY --link frankenphp/composer-complete.bash /usr/share/bash-completion/completions/composer
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini" RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
RUN set -eux; \ RUN set -eux; \
@@ -76,6 +84,8 @@ CMD [ "frankenphp", "run", "--config", "/etc/caddy/Caddyfile", "--watch" ]
# Prod FrankenPHP image # Prod FrankenPHP image
FROM frankenphp_base AS frankenphp_prod FROM frankenphp_base AS frankenphp_prod
RUN rm -rf /var/lib/apt/lists/*
ENV APP_ENV=prod ENV APP_ENV=prod
ENV FRANKENPHP_CONFIG="import worker.Caddyfile" ENV FRANKENPHP_CONFIG="import worker.Caddyfile"

5
compose.build.yaml Normal file
View File

@@ -0,0 +1,5 @@
services:
php:
build:
context: .
target: frankenphp_prod

View File

@@ -1,9 +1,7 @@
# Production environment override # Production environment override
services: services:
php: php:
build: image: ghcr.io/marijndoeve/tijdvoordetest:${IMAGE_TAG}
context: .
target: frankenphp_prod
environment: environment:
APP_SECRET: ${APP_SECRET} APP_SECRET: ${APP_SECRET}
MERCURE_PUBLISHER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET} MERCURE_PUBLISHER_JWT_KEY: ${CADDY_MERCURE_JWT_SECRET}

138
composer.lock generated
View File

@@ -250,16 +250,16 @@
}, },
{ {
"name": "doctrine/dbal", "name": "doctrine/dbal",
"version": "4.3.3", "version": "4.3.4",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/dbal.git", "url": "https://github.com/doctrine/dbal.git",
"reference": "231959669bb2173194c95636eae7f1b41b2a8b19" "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/dbal/zipball/231959669bb2173194c95636eae7f1b41b2a8b19", "url": "https://api.github.com/repos/doctrine/dbal/zipball/1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc",
"reference": "231959669bb2173194c95636eae7f1b41b2a8b19", "reference": "1a2fbd0e93b8dec7c3d1ac2b6396a7b929b130dc",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -269,15 +269,15 @@
"psr/log": "^1|^2|^3" "psr/log": "^1|^2|^3"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "13.0.1", "doctrine/coding-standard": "14.0.0",
"fig/log-test": "^1", "fig/log-test": "^1",
"jetbrains/phpstorm-stubs": "2023.2", "jetbrains/phpstorm-stubs": "2023.2",
"phpstan/phpstan": "2.1.22", "phpstan/phpstan": "2.1.30",
"phpstan/phpstan-phpunit": "2.0.6", "phpstan/phpstan-phpunit": "2.0.7",
"phpstan/phpstan-strict-rules": "^2", "phpstan/phpstan-strict-rules": "^2",
"phpunit/phpunit": "11.5.23", "phpunit/phpunit": "11.5.23",
"slevomat/coding-standard": "8.16.2", "slevomat/coding-standard": "8.24.0",
"squizlabs/php_codesniffer": "3.13.1", "squizlabs/php_codesniffer": "4.0.0",
"symfony/cache": "^6.3.8|^7.0", "symfony/cache": "^6.3.8|^7.0",
"symfony/console": "^5.4|^6.3|^7.0" "symfony/console": "^5.4|^6.3|^7.0"
}, },
@@ -336,7 +336,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/dbal/issues", "issues": "https://github.com/doctrine/dbal/issues",
"source": "https://github.com/doctrine/dbal/tree/4.3.3" "source": "https://github.com/doctrine/dbal/tree/4.3.4"
}, },
"funding": [ "funding": [
{ {
@@ -352,7 +352,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-09-04T23:52:42+00:00" "time": "2025-10-09T09:11:36+00:00"
}, },
{ {
"name": "doctrine/deprecations", "name": "doctrine/deprecations",
@@ -404,20 +404,21 @@
}, },
{ {
"name": "doctrine/doctrine-bundle", "name": "doctrine/doctrine-bundle",
"version": "2.16.2", "version": "2.18.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/DoctrineBundle.git", "url": "https://github.com/doctrine/DoctrineBundle.git",
"reference": "1c10de0fe995f01eca6b073d1c2549ef0b603a7f" "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/1c10de0fe995f01eca6b073d1c2549ef0b603a7f", "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/cd5d4da6a5f7cf3d8708e17211234657b5eb4e95",
"reference": "1c10de0fe995f01eca6b073d1c2549ef0b603a7f", "reference": "cd5d4da6a5f7cf3d8708e17211234657b5eb4e95",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/dbal": "^3.7.0 || ^4.0", "doctrine/dbal": "^3.7.0 || ^4.0",
"doctrine/deprecations": "^1.0",
"doctrine/persistence": "^3.1 || ^4", "doctrine/persistence": "^3.1 || ^4",
"doctrine/sql-formatter": "^1.0.1", "doctrine/sql-formatter": "^1.0.1",
"php": "^8.1", "php": "^8.1",
@@ -425,7 +426,6 @@
"symfony/config": "^6.4 || ^7.0", "symfony/config": "^6.4 || ^7.0",
"symfony/console": "^6.4 || ^7.0", "symfony/console": "^6.4 || ^7.0",
"symfony/dependency-injection": "^6.4 || ^7.0", "symfony/dependency-injection": "^6.4 || ^7.0",
"symfony/deprecation-contracts": "^2.1 || ^3",
"symfony/doctrine-bridge": "^6.4.3 || ^7.0.3", "symfony/doctrine-bridge": "^6.4.3 || ^7.0.3",
"symfony/framework-bundle": "^6.4 || ^7.0", "symfony/framework-bundle": "^6.4 || ^7.0",
"symfony/service-contracts": "^2.5 || ^3" "symfony/service-contracts": "^2.5 || ^3"
@@ -440,14 +440,13 @@
"require-dev": { "require-dev": {
"doctrine/annotations": "^1 || ^2", "doctrine/annotations": "^1 || ^2",
"doctrine/cache": "^1.11 || ^2.0", "doctrine/cache": "^1.11 || ^2.0",
"doctrine/coding-standard": "^13", "doctrine/coding-standard": "^14",
"doctrine/deprecations": "^1.0",
"doctrine/orm": "^2.17 || ^3.1", "doctrine/orm": "^2.17 || ^3.1",
"friendsofphp/proxy-manager-lts": "^1.0", "friendsofphp/proxy-manager-lts": "^1.0",
"phpstan/phpstan": "2.1.1", "phpstan/phpstan": "2.1.1",
"phpstan/phpstan-phpunit": "2.0.3", "phpstan/phpstan-phpunit": "2.0.3",
"phpstan/phpstan-strict-rules": "^2", "phpstan/phpstan-strict-rules": "^2",
"phpunit/phpunit": "^10.5.53", "phpunit/phpunit": "^10.5.53 || ^12.3.10",
"psr/log": "^1.1.4 || ^2.0 || ^3.0", "psr/log": "^1.1.4 || ^2.0 || ^3.0",
"symfony/doctrine-messenger": "^6.4 || ^7.0", "symfony/doctrine-messenger": "^6.4 || ^7.0",
"symfony/expression-language": "^6.4 || ^7.0", "symfony/expression-language": "^6.4 || ^7.0",
@@ -461,7 +460,7 @@
"symfony/var-exporter": "^6.4.1 || ^7.0.1", "symfony/var-exporter": "^6.4.1 || ^7.0.1",
"symfony/web-profiler-bundle": "^6.4 || ^7.0", "symfony/web-profiler-bundle": "^6.4 || ^7.0",
"symfony/yaml": "^6.4 || ^7.0", "symfony/yaml": "^6.4 || ^7.0",
"twig/twig": "^2.13 || ^3.0.4" "twig/twig": "^2.14.7 || ^3.0.4"
}, },
"suggest": { "suggest": {
"doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.",
@@ -506,7 +505,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/DoctrineBundle/issues", "issues": "https://github.com/doctrine/DoctrineBundle/issues",
"source": "https://github.com/doctrine/DoctrineBundle/tree/2.16.2" "source": "https://github.com/doctrine/DoctrineBundle/tree/2.18.0"
}, },
"funding": [ "funding": [
{ {
@@ -522,7 +521,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-09-10T19:14:48+00:00" "time": "2025-10-11T04:43:27+00:00"
}, },
{ {
"name": "doctrine/doctrine-migrations-bundle", "name": "doctrine/doctrine-migrations-bundle",
@@ -1132,16 +1131,16 @@
}, },
{ {
"name": "doctrine/persistence", "name": "doctrine/persistence",
"version": "4.1.0", "version": "4.1.1",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/persistence.git", "url": "https://github.com/doctrine/persistence.git",
"reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4" "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/persistence/zipball/dcbdfe4b211ae09478e192289cae7ab0987b29a4", "url": "https://api.github.com/repos/doctrine/persistence/zipball/b9c49ad3558bb77ef973f4e173f2e9c2eca9be09",
"reference": "dcbdfe4b211ae09478e192289cae7ab0987b29a4", "reference": "b9c49ad3558bb77ef973f4e173f2e9c2eca9be09",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -1150,11 +1149,11 @@
"psr/cache": "^1.0 || ^2.0 || ^3.0" "psr/cache": "^1.0 || ^2.0 || ^3.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^12", "doctrine/coding-standard": "^14",
"phpstan/phpstan": "1.12.7", "phpstan/phpstan": "2.1.30",
"phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-phpunit": "^2",
"phpstan/phpstan-strict-rules": "^1.6", "phpstan/phpstan-strict-rules": "^2",
"phpunit/phpunit": "^9.6", "phpunit/phpunit": "^10.5.58 || ^12",
"symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0", "symfony/cache": "^4.4 || ^5.4 || ^6.0 || ^7.0",
"symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0" "symfony/finder": "^4.4 || ^5.4 || ^6.0 || ^7.0"
}, },
@@ -1205,7 +1204,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/persistence/issues", "issues": "https://github.com/doctrine/persistence/issues",
"source": "https://github.com/doctrine/persistence/tree/4.1.0" "source": "https://github.com/doctrine/persistence/tree/4.1.1"
}, },
"funding": [ "funding": [
{ {
@@ -1221,7 +1220,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-08-21T16:00:31+00:00" "time": "2025-10-16T20:13:18+00:00"
}, },
{ {
"name": "doctrine/sql-formatter", "name": "doctrine/sql-formatter",
@@ -8677,16 +8676,16 @@
}, },
{ {
"name": "doctrine/data-fixtures", "name": "doctrine/data-fixtures",
"version": "2.1.0", "version": "2.2.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/data-fixtures.git", "url": "https://github.com/doctrine/data-fixtures.git",
"reference": "f161e20f04ba5440a09330e156b40f04dd70d47f" "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/f161e20f04ba5440a09330e156b40f04dd70d47f", "url": "https://api.github.com/repos/doctrine/data-fixtures/zipball/7a615ba135e45d67674bb623d90f34f6c7b6bd97",
"reference": "f161e20f04ba5440a09330e156b40f04dd70d47f", "reference": "7a615ba135e45d67674bb623d90f34f6c7b6bd97",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -8700,14 +8699,14 @@
"doctrine/phpcr-odm": "<1.3.0" "doctrine/phpcr-odm": "<1.3.0"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "^13", "doctrine/coding-standard": "^14",
"doctrine/dbal": "^3.5 || ^4", "doctrine/dbal": "^3.5 || ^4",
"doctrine/mongodb-odm": "^1.3.0 || ^2.0.0", "doctrine/mongodb-odm": "^1.3.0 || ^2.0.0",
"doctrine/orm": "^2.14 || ^3", "doctrine/orm": "^2.14 || ^3",
"ext-sqlite3": "*", "ext-sqlite3": "*",
"fig/log-test": "^1", "fig/log-test": "^1",
"phpstan/phpstan": "2.1.17", "phpstan/phpstan": "2.1.31",
"phpunit/phpunit": "10.5.45", "phpunit/phpunit": "10.5.45 || 12.4.0",
"symfony/cache": "^6.4 || ^7", "symfony/cache": "^6.4 || ^7",
"symfony/var-exporter": "^6.4 || ^7" "symfony/var-exporter": "^6.4 || ^7"
}, },
@@ -8740,7 +8739,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/data-fixtures/issues", "issues": "https://github.com/doctrine/data-fixtures/issues",
"source": "https://github.com/doctrine/data-fixtures/tree/2.1.0" "source": "https://github.com/doctrine/data-fixtures/tree/2.2.0"
}, },
"funding": [ "funding": [
{ {
@@ -8756,25 +8755,25 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-07-08T17:48:20+00:00" "time": "2025-10-17T20:06:20+00:00"
}, },
{ {
"name": "doctrine/doctrine-fixtures-bundle", "name": "doctrine/doctrine-fixtures-bundle",
"version": "4.1.0", "version": "4.3.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/doctrine/DoctrineFixturesBundle.git", "url": "https://github.com/doctrine/DoctrineFixturesBundle.git",
"reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c" "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/a06db6b81ff20a2980bf92063d80c013bb8b4b7c", "url": "https://api.github.com/repos/doctrine/DoctrineFixturesBundle/zipball/11941deb6f2899b91e8b8680b07ffe63899d864b",
"reference": "a06db6b81ff20a2980bf92063d80c013bb8b4b7c", "reference": "11941deb6f2899b91e8b8680b07ffe63899d864b",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"doctrine/data-fixtures": "^2.0", "doctrine/data-fixtures": "^2.2",
"doctrine/doctrine-bundle": "^2.2", "doctrine/doctrine-bundle": "^2.2 || ^3.0",
"doctrine/orm": "^2.14.0 || ^3.0", "doctrine/orm": "^2.14.0 || ^3.0",
"doctrine/persistence": "^2.4 || ^3.0 || ^4.0", "doctrine/persistence": "^2.4 || ^3.0 || ^4.0",
"php": "^8.1", "php": "^8.1",
@@ -8790,7 +8789,7 @@
"doctrine/dbal": "< 3" "doctrine/dbal": "< 3"
}, },
"require-dev": { "require-dev": {
"doctrine/coding-standard": "13.0.0", "doctrine/coding-standard": "14.0.0",
"phpstan/phpstan": "2.1.11", "phpstan/phpstan": "2.1.11",
"phpunit/phpunit": "^10.5.38 || 11.4.14" "phpunit/phpunit": "^10.5.38 || 11.4.14"
}, },
@@ -8826,7 +8825,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues", "issues": "https://github.com/doctrine/DoctrineFixturesBundle/issues",
"source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.1.0" "source": "https://github.com/doctrine/DoctrineFixturesBundle/tree/4.3.0"
}, },
"funding": [ "funding": [
{ {
@@ -8842,7 +8841,7 @@
"type": "tidelift" "type": "tidelift"
} }
], ],
"time": "2025-03-26T10:56:26+00:00" "time": "2025-10-20T06:18:40+00:00"
}, },
{ {
"name": "evenement/evenement", "name": "evenement/evenement",
@@ -9409,11 +9408,11 @@
}, },
{ {
"name": "phpstan/phpstan", "name": "phpstan/phpstan",
"version": "2.1.30", "version": "2.1.31",
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan/zipball/a4a7f159927983dd4f7c8020ed227d80b7f39d7d", "url": "https://api.github.com/repos/phpstan/phpstan/zipball/ead89849d879fe203ce9292c6ef5e7e76f867b96",
"reference": "a4a7f159927983dd4f7c8020ed227d80b7f39d7d", "reference": "ead89849d879fe203ce9292c6ef5e7e76f867b96",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -9458,20 +9457,20 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-10-02T16:07:52+00:00" "time": "2025-10-10T14:14:11+00:00"
}, },
{ {
"name": "phpstan/phpstan-doctrine", "name": "phpstan/phpstan-doctrine",
"version": "2.0.6", "version": "2.0.10",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/phpstan/phpstan-doctrine.git", "url": "https://github.com/phpstan/phpstan-doctrine.git",
"reference": "934f5734812341358fc41c44006b30fa00c785f0" "reference": "5eaf37b87288474051469aee9f937fc9d862f330"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/934f5734812341358fc41c44006b30fa00c785f0", "url": "https://api.github.com/repos/phpstan/phpstan-doctrine/zipball/5eaf37b87288474051469aee9f937fc9d862f330",
"reference": "934f5734812341358fc41c44006b30fa00c785f0", "reference": "5eaf37b87288474051469aee9f937fc9d862f330",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@@ -9505,7 +9504,8 @@
"phpstan/phpstan-strict-rules": "^2.0", "phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^9.6.20", "phpunit/phpunit": "^9.6.20",
"ramsey/uuid": "^4.2", "ramsey/uuid": "^4.2",
"symfony/cache": "^5.4" "symfony/cache": "^5.4",
"symfony/uid": "^5.4 || ^6.4 || ^7.3"
}, },
"type": "phpstan-extension", "type": "phpstan-extension",
"extra": { "extra": {
@@ -9528,9 +9528,9 @@
"description": "Doctrine extensions for PHPStan", "description": "Doctrine extensions for PHPStan",
"support": { "support": {
"issues": "https://github.com/phpstan/phpstan-doctrine/issues", "issues": "https://github.com/phpstan/phpstan-doctrine/issues",
"source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.6" "source": "https://github.com/phpstan/phpstan-doctrine/tree/2.0.10"
}, },
"time": "2025-09-10T07:06:30+00:00" "time": "2025-10-06T10:01:02+00:00"
}, },
{ {
"name": "phpstan/phpstan-phpunit", "name": "phpstan/phpstan-phpunit",
@@ -10623,21 +10623,21 @@
}, },
{ {
"name": "rector/rector", "name": "rector/rector",
"version": "2.1.7", "version": "2.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/rectorphp/rector.git", "url": "https://github.com/rectorphp/rector.git",
"reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce" "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/rectorphp/rector/zipball/c34cc07c4698f007a20dc5c99ff820089ae413ce", "url": "https://api.github.com/repos/rectorphp/rector/zipball/d27f976a332a87b5d03553c2e6f04adbe5da034f",
"reference": "c34cc07c4698f007a20dc5c99ff820089ae413ce", "reference": "d27f976a332a87b5d03553c2e6f04adbe5da034f",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": "^7.4|^8.0", "php": "^7.4|^8.0",
"phpstan/phpstan": "^2.1.18" "phpstan/phpstan": "^2.1.26"
}, },
"conflict": { "conflict": {
"rector/rector-doctrine": "*", "rector/rector-doctrine": "*",
@@ -10671,7 +10671,7 @@
], ],
"support": { "support": {
"issues": "https://github.com/rectorphp/rector/issues", "issues": "https://github.com/rectorphp/rector/issues",
"source": "https://github.com/rectorphp/rector/tree/2.1.7" "source": "https://github.com/rectorphp/rector/tree/2.2.3"
}, },
"funding": [ "funding": [
{ {
@@ -10679,7 +10679,7 @@
"type": "github" "type": "github"
} }
], ],
"time": "2025-09-10T11:13:58+00:00" "time": "2025-10-11T21:50:23+00:00"
}, },
{ {
"name": "roave/security-advisories", "name": "roave/security-advisories",

View File

@@ -0,0 +1,84 @@
# This file is part of the Symfony package.
#
# (c) Fabien Potencier <fabien@symfony.com>
#
# For the full copyright and license information, please view
# https://symfony.com/doc/current/contributing/code/license.html
_sf_composer() {
# Use newline as only separator to allow space in completion values
local IFS=$'\n'
local sf_cmd="${COMP_WORDS[0]}"
# for an alias, get the real script behind it
sf_cmd_type=$(type -t $sf_cmd)
if [[ $sf_cmd_type == "alias" ]]; then
sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/")
elif [[ $sf_cmd_type == "file" ]]; then
sf_cmd=$(type -p $sf_cmd)
fi
if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then
return 1
fi
local cur prev words cword
_get_comp_words_by_ref -n := cur prev words cword
local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-S2.8.11")
for w in ${words[@]}; do
w=$(printf -- '%b' "$w")
# remove quotes from typed values
quote="${w:0:1}"
if [ "$quote" == \' ]; then
w="${w%\'}"
w="${w#\'}"
elif [ "$quote" == \" ]; then
w="${w%\"}"
w="${w#\"}"
fi
# empty values are ignored
if [ ! -z "$w" ]; then
completecmd+=("-i$w")
fi
done
local sfcomplete
if sfcomplete=$(${completecmd[@]} 2>&1); then
local quote suggestions
quote=${cur:0:1}
# Use single quotes by default if suggestions contains backslash (FQCN)
if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then
quote=\'
fi
if [ "$quote" == \' ]; then
# single quotes: no additional escaping (does not accept ' in values)
suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done)
elif [ "$quote" == \" ]; then
# double quotes: double escaping for \ $ ` "
suggestions=$(for s in $sfcomplete; do
s=${s//\\/\\\\}
s=${s//\$/\\\$}
s=${s//\`/\\\`}
s=${s//\"/\\\"}
printf $'%q%q%q\n' "$quote" "$s" "$quote";
done)
else
# no quotes: double escaping
suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done)
fi
COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur")))
__ltrim_colon_completions "$cur"
else
if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then
>&2 echo
>&2 echo $sfcomplete
fi
return 1
fi
}
complete -F _sf_composer composer

View File

@@ -0,0 +1,94 @@
# This file is part of the Symfony package.
#
# (c) Fabien Potencier <fabien@symfony.com>
#
# For the full copyright and license information, please view
# https://symfony.com/doc/current/contributing/code/license.html
_sf_console() {
# Use the default completion for shell redirect operators.
for w in '>' '>>' '&>' '<'; do
if [[ $w = "${COMP_WORDS[COMP_CWORD-1]}" ]]; then
compopt -o filenames
COMPREPLY=($(compgen -f -- "${COMP_WORDS[COMP_CWORD]}"))
return 0
fi
done
# Use newline as only separator to allow space in completion values
local IFS=$'\n'
local sf_cmd="${COMP_WORDS[0]}"
# for an alias, get the real script behind it
sf_cmd_type=$(type -t $sf_cmd)
if [[ $sf_cmd_type == "alias" ]]; then
sf_cmd=$(alias $sf_cmd | sed -E "s/alias $sf_cmd='(.*)'/\1/")
elif [[ $sf_cmd_type == "file" ]]; then
sf_cmd=$(type -p $sf_cmd)
fi
if [[ $sf_cmd_type != "function" && ! -x $sf_cmd ]]; then
return 1
fi
local cur prev words cword
_get_comp_words_by_ref -n := cur prev words cword
local completecmd=("$sf_cmd" "_complete" "--no-interaction" "-sbash" "-c$cword" "-a1")
for w in ${words[@]}; do
w="${w//\\\\/\\}"
# remove quotes from typed values
quote="${w:0:1}"
if [ "$quote" == \' ]; then
w="${w%\'}"
w="${w#\'}"
elif [ "$quote" == \" ]; then
w="${w%\"}"
w="${w#\"}"
fi
# empty values are ignored
if [ ! -z "$w" ]; then
completecmd+=("-i$w")
fi
done
local sfcomplete
if sfcomplete=$(${completecmd[@]} 2>&1); then
local quote suggestions
quote=${cur:0:1}
# Use single quotes by default if suggestions contains backslash (FQCN)
if [ "$quote" == '' ] && [[ "$sfcomplete" =~ \\ ]]; then
quote=\'
fi
if [ "$quote" == \' ]; then
# single quotes: no additional escaping (does not accept ' in values)
suggestions=$(for s in $sfcomplete; do printf $'%q%q%q\n' "$quote" "$s" "$quote"; done)
elif [ "$quote" == \" ]; then
# double quotes: double escaping for \ $ ` "
suggestions=$(for s in $sfcomplete; do
s=${s//\\/\\\\}
s=${s//\$/\\\$}
s=${s//\`/\\\`}
s=${s//\"/\\\"}
printf $'%q%q%q\n' "$quote" "$s" "$quote";
done)
else
# no quotes: double escaping
suggestions=$(for s in $sfcomplete; do printf $'%q\n' $(printf '%q' "$s"); done)
fi
COMPREPLY=($(IFS=$'\n' compgen -W "$suggestions" -- $(printf -- "%q" "$cur")))
__ltrim_colon_completions "$cur"
else
if [[ "$sfcomplete" != *"Command \"_complete\" is not defined."* ]]; then
>&2 echo
>&2 echo $sfcomplete
fi
return 1
fi
}
complete -F _sf_console console