From 7a1ff05cc38d6e2f23395e3122e6033a598033f0 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Tue, 27 May 2025 09:08:01 +0200 Subject: [PATCH 1/4] [CI] Add packages normalizer --- .github/get-ux-packages.php | 31 +++++++++++++++++++++++++++++ .github/workflows/code-quality.yaml | 12 +++++++++++ composer.json | 12 ++++++++++- 3 files changed, 54 insertions(+), 1 deletion(-) create mode 100644 .github/get-ux-packages.php diff --git a/.github/get-ux-packages.php b/.github/get-ux-packages.php new file mode 100644 index 00000000000..e1513067c13 --- /dev/null +++ b/.github/get-ux-packages.php @@ -0,0 +1,31 @@ +in([__DIR__.'/../src/*/', __DIR__.'/../src/*/src/Bridge/*/']) + ->depth(0) + ->name('composer.json') +; + +// 1. Find all UX packages +$uxPackages = []; +foreach ($finder as $composerFile) { + $json = file_get_contents($composerFile->getPathname()); + if (null === $packageData = json_decode($json, true)) { + passthru(sprintf('composer validate %s', $composerFile->getPathname())); + exit(1); + } + + if (str_starts_with($composerFile->getPathname(), __DIR__ . '/../src/')) { + $packageName = $packageData['name']; + + $uxPackages[] = [ + 'path' => realpath($composerFile->getPath()), + ]; + } +} + +echo json_encode($uxPackages, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE) . PHP_EOL; diff --git a/.github/workflows/code-quality.yaml b/.github/workflows/code-quality.yaml index bf9fd03867b..3391147a80c 100644 --- a/.github/workflows/code-quality.yaml +++ b/.github/workflows/code-quality.yaml @@ -81,3 +81,15 @@ jobs: source .github/workflows/.utils.sh echo "$PACKAGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/{} && $COMPOSER_MIN_STAB && $COMPOSER_UP && $PHPUNIT_INSTALL && $PHPSTAN)'" + + normalize-package-php: + name: Normalize PHP Packages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + - run: composer install --no-progress --no-interaction --ansi + - run: composer packages-normalize-check diff --git a/composer.json b/composer.json index 4a24cfc1386..205e928007d 100644 --- a/composer.json +++ b/composer.json @@ -8,6 +8,16 @@ "php": ">=8.1", "symfony/filesystem": "^6.4|^7.0", "symfony/finder": "^6.4|^7.0", - "php-cs-fixer/shim": "^3.62" + "php-cs-fixer/shim": "^3.62", + "ergebnis/composer-normalize": "^2.47" + }, + "config": { + "allow-plugins": { + "ergebnis/composer-normalize": true + } + }, + "scripts": { + "packages-normalize": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock; done", + "packages-normalize-check": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock --dry-run || echo \"\\033[41mFile $path is not normalized.\\033[0m\n\\033[41mPlease run \"composer packages-normalize\" in Symfony UX root repository.\\033[0m\n\" && exit 1; done" } } From 6ce3a6eed5d85ca668f5772c20d8337507f7199c Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Tue, 27 May 2025 23:59:06 +0200 Subject: [PATCH 2/4] [CI] Remove packages normalization job --- .github/workflows/code-quality.yaml | 12 ------------ composer.json | 1 - 2 files changed, 13 deletions(-) diff --git a/.github/workflows/code-quality.yaml b/.github/workflows/code-quality.yaml index 3391147a80c..bf9fd03867b 100644 --- a/.github/workflows/code-quality.yaml +++ b/.github/workflows/code-quality.yaml @@ -81,15 +81,3 @@ jobs: source .github/workflows/.utils.sh echo "$PACKAGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/{} && $COMPOSER_MIN_STAB && $COMPOSER_UP && $PHPUNIT_INSTALL && $PHPSTAN)'" - - normalize-package-php: - name: Normalize PHP Packages - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: '8.1' - - run: composer install --no-progress --no-interaction --ansi - - run: composer packages-normalize-check diff --git a/composer.json b/composer.json index 205e928007d..61e9bb8751f 100644 --- a/composer.json +++ b/composer.json @@ -18,6 +18,5 @@ }, "scripts": { "packages-normalize": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock; done", - "packages-normalize-check": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock --dry-run || echo \"\\033[41mFile $path is not normalized.\\033[0m\n\\033[41mPlease run \"composer packages-normalize\" in Symfony UX root repository.\\033[0m\n\" && exit 1; done" } } From b18dba9835e8f94d05962c8469e7263d6ba3ad41 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Wed, 28 May 2025 08:37:31 +0200 Subject: [PATCH 3/4] Revert "[CI] Remove packages normalization job" This reverts commit 6ce3a6eed5d85ca668f5772c20d8337507f7199c. --- .github/workflows/code-quality.yaml | 12 ++++++++++++ composer.json | 1 + 2 files changed, 13 insertions(+) diff --git a/.github/workflows/code-quality.yaml b/.github/workflows/code-quality.yaml index bf9fd03867b..3391147a80c 100644 --- a/.github/workflows/code-quality.yaml +++ b/.github/workflows/code-quality.yaml @@ -81,3 +81,15 @@ jobs: source .github/workflows/.utils.sh echo "$PACKAGES" | xargs -n1 | parallel -j +3 "_run_task {} '(cd src/{} && $COMPOSER_MIN_STAB && $COMPOSER_UP && $PHPUNIT_INSTALL && $PHPSTAN)'" + + normalize-package-php: + name: Normalize PHP Packages + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + - run: composer install --no-progress --no-interaction --ansi + - run: composer packages-normalize-check diff --git a/composer.json b/composer.json index 61e9bb8751f..205e928007d 100644 --- a/composer.json +++ b/composer.json @@ -18,5 +18,6 @@ }, "scripts": { "packages-normalize": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock; done", + "packages-normalize-check": "php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r path; do composer normalize \"$path/composer.json\" --no-check-lock --dry-run || echo \"\\033[41mFile $path is not normalized.\\033[0m\n\\033[41mPlease run \"composer packages-normalize\" in Symfony UX root repository.\\033[0m\n\" && exit 1; done" } } From 3339f01abccbbe3e6c42da67c0b73e68adf3e646 Mon Sep 17 00:00:00 2001 From: Hugo Alliaume Date: Wed, 28 May 2025 08:57:43 +0200 Subject: [PATCH 4/4] [CI] Normalize JS packages --- .github/workflows/validate-packages.yaml | 44 ++++++++++++++++++++++++ composer.json | 3 +- package.json | 1 + yarn.lock | 23 ++++++++++++- 4 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/validate-packages.yaml diff --git a/.github/workflows/validate-packages.yaml b/.github/workflows/validate-packages.yaml new file mode 100644 index 00000000000..34e684a323e --- /dev/null +++ b/.github/workflows/validate-packages.yaml @@ -0,0 +1,44 @@ +name: Validate Packages + +on: + push: + paths: + - 'src/**/composer.json' + pull_request: + paths: + - 'src/**/composer.json' + - 'src/**/package.json' + +jobs: + validate-packages: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: '8.1' + + - name: Install PHP root dependencies + run: composer install + + - run: npm i -g corepack && corepack enable + + - uses: actions/setup-node@v4 + with: + cache: 'yarn' + + - name: Install Node.js root dependencies + run: yarn install --immutable + + - name: Verify packages + run: | + php .github/get-ux-packages.php | jq -r '.[] | .path' | while read -r pkg_path; do + composer normalize "$pkg_path/composer.json" --no-check-lock --dry-run || echo "\033[41mFile $pkg_path is not normalized.\033[0m\033[41mPlease run "composer packages-normalize" in Symfony UX root repository.\033[0m" && exit 1; + node <