Skip to content

Commit 985d270

Browse files
committed
Adjust scripts, check them in CI
1 parent 1f13398 commit 985d270

File tree

6 files changed

+186
-67
lines changed

6 files changed

+186
-67
lines changed

.github/workflows/e2e.yml

Lines changed: 99 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -8,37 +8,105 @@ jobs:
88
strategy:
99
matrix:
1010
include:
11-
- repo: contao-thememanager/core
12-
- repo: contao/contao
13-
- repo: idleberg/php-vite-manifest
14-
- repo: idleberg/php-wordpress-vite-assets
15-
- repo: inspirum/balikobot-php
16-
- repo: inspirum/xml-php
17-
- repo: janborg/contao-h4a_tabellen
18-
- repo: kreait/firebase-php
19-
- repo: numero2/contao-marketing-suite
20-
- repo: numero2/contao-opengraph3
21-
- repo: numero2/contao-storelocator
22-
- repo: oveleon/contao-company-bundle
23-
- repo: oveleon/contao-cookiebar
24-
- repo: oveleon/contao-recommendation-bundle
25-
- repo: rectorphp/rector-src
26-
- repo: rectorphp/swiss-knife
27-
- repo: sensiolabs/GotenbergBundle
28-
- repo: Setono/deployer-cron
29-
- repo: Setono/deployer-dotenv
30-
- repo: shipmonk-rnd/dead-code-detector
31-
- repo: shipmonk-rnd/doctrine-mysql-index-hints
32-
- repo: shipmonk-rnd/doctrine-mysql-optimizer-hints
33-
- repo: shipmonk-rnd/doctrine-two-phase-migrations
34-
- repo: shipmonk-rnd/input-mapper
35-
- repo: shipmonk-rnd/name-collision-detector
36-
- repo: shipmonk-rnd/phpstan-baseline-per-identifier
37-
- repo: shipmonk-rnd/phpstan-rules
38-
- repo: teamneusta/pimcore-testing-framework
39-
- repo: TomasVotruba/unused-public
40-
- repo: VincentLanglet/Twig-CS-Fixer
41-
- repo: wallabag/wallabag
11+
-
12+
repo: Setono/SyliusAbandonedCartPlugin
13+
-
14+
repo: Setono/SyliusGoogleAdsPlugin
15+
-
16+
repo: Setono/deployer-dotenv
17+
-
18+
repo: TomasVotruba/unused-public
19+
-
20+
repo: VincentLanglet/Twig-CS-Fixer
21+
-
22+
repo: alex-kalanis/kw_files
23+
-
24+
repo: alex-kalanis/kw_paths
25+
-
26+
repo: alex-kalanis/kw_storage
27+
-
28+
repo: cdn77/PhpFunctions
29+
-
30+
repo: cdn77/RabbitMQBundle
31+
-
32+
repo: contao-thememanager/core
33+
cdaArgs: --config=depcheck.php
34+
-
35+
repo: contao/contao
36+
cdaArgs: --config=depcheck.php
37+
-
38+
repo: idleberg/php-vite-manifest
39+
-
40+
repo: idleberg/php-wordpress-vite-assets
41+
-
42+
repo: inspirum/arrayable-php
43+
-
44+
repo: inspirum/balikobot-php
45+
-
46+
repo: inspirum/balikobot-php-symfony
47+
-
48+
repo: inspirum/xml-php
49+
-
50+
repo: kreait/firebase-php
51+
-
52+
repo: numero2/contao-marketing-suite
53+
cdaArgs: --config=depcheck.php
54+
-
55+
repo: numero2/contao-opengraph3
56+
cdaArgs: --config=depcheck.php
57+
-
58+
repo: oveleon/contao-company-bundle
59+
composerArgs: --no-plugins
60+
cdaArgs: --config=depcheck.php
61+
-
62+
repo: oveleon/contao-config-driver-bundle
63+
composerArgs: --no-plugins
64+
cdaArgs: --config=depcheck.php
65+
-
66+
repo: oveleon/contao-cookiebar
67+
composerArgs: --no-plugins
68+
cdaArgs: --config=depcheck.php
69+
-
70+
repo: oveleon/contao-glossary-bundle
71+
composerArgs: --no-plugins
72+
cdaArgs: --config=depcheck.php
73+
-
74+
repo: oveleon/contao-recommendation-bundle
75+
composerArgs: --no-plugins
76+
cdaArgs: --config=depcheck.php
77+
-
78+
repo: oveleon/contao-theme-compiler-bundle
79+
composerArgs: --no-plugins
80+
cdaArgs: --config=depcheck.php
81+
-
82+
repo: phpstan/phpstan-src
83+
cdaArgs: --config=build/composer-dependency-analyser.php
84+
-
85+
repo: qossmic/deptrac-src
86+
-
87+
repo: rectorphp/rector-src
88+
-
89+
repo: rectorphp/swiss-knife
90+
-
91+
repo: shipmonk-rnd/dead-code-detector
92+
-
93+
repo: shipmonk-rnd/doctrine-hint-driven-sql-walker
94+
-
95+
repo: shipmonk-rnd/doctrine-mysql-index-hints
96+
-
97+
repo: shipmonk-rnd/doctrine-mysql-optimizer-hints
98+
-
99+
repo: shipmonk-rnd/doctrine-two-phase-migrations
100+
-
101+
repo: shipmonk-rnd/input-mapper
102+
-
103+
repo: shipmonk-rnd/name-collision-detector
104+
-
105+
repo: shipmonk-rnd/phpstan-rules
106+
-
107+
repo: teamneusta/pimcore-testing-framework
108+
-
109+
repo: wallabag/wallabag
42110

43111
fail-fast: false
44112
steps:

composer.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,8 @@
6767
"@check:types",
6868
"@check:tests",
6969
"@check:self",
70-
"@check:collisions"
70+
"@check:collisions",
71+
"@check:scripts"
7172
],
7273
"check:collisions": "detect-collisions src tests",
7374
"check:composer": [
@@ -76,6 +77,7 @@
7677
],
7778
"check:cs": "phpcs",
7879
"check:ec": "ec src tests",
80+
"check:scripts": "phpstan analyse -vv --ansi --level=6 scripts/*.php",
7981
"check:self": "bin/composer-dependency-analyser",
8082
"check:tests": "phpunit -vvv tests",
8183
"check:types": "phpstan analyse -vv --ansi",

composer.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

phpcs.xml.dist

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
<file>bin/composer-dependency-analyser</file>
2020
<file>src/</file>
2121
<file>tests/</file>
22+
<file>scripts/</file>
2223

2324
<exclude-pattern>tests/data/*</exclude-pattern>
2425

phpstan.neon.dist

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
includes:
2-
- phar://phpstan.phar/conf/config.levelmax.neon
32
- phar://phpstan.phar/conf/bleedingEdge.neon
43
- ./vendor/phpstan/phpstan-strict-rules/rules.neon
54
- ./vendor/phpstan/phpstan-phpunit/extension.neon
65
- ./vendor/phpstan/phpstan-phpunit/rules.neon
76

87
parameters:
8+
level: max
99
phpVersion: 70200
1010
paths:
1111
- bin/composer-dependency-analyser

scripts/refresh-e2e.php

Lines changed: 81 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,107 @@
1-
<?php declare(strict_types=1);
1+
<?php declare(strict_types = 1);
22

3-
function fetchDependents(string $packageName, int $page = 1): array {
4-
$url = "https://packagist.org/packages/{$packageName}/dependents.json?page={$page}";
5-
$data = json_decode(file_get_contents($url), true);
6-
return $data['packages'] ?? [];
7-
}
3+
// phpcs:disable PSR1.Files.SideEffects.FoundWithSymbols
4+
// phpcs:disable Squiz.Functions.GlobalFunction.Found
85

9-
function fetchPackageData(string $packageName): ?array {
10-
$url = "https://repo.packagist.org/p2/{$packageName}.json";
6+
/**
7+
* https://github.com/composer/packagist/blob/main/src/Controller/PackageController.php#L1282
8+
*
9+
* @return list<string>
10+
*/
11+
function fetchDependents(string $packageName, int $page = 1): array
12+
{
13+
$url = "https://packagist.org/packages/{$packageName}/dependents.json?page={$page}&requires=require-dev";
1114
$data = json_decode(file_get_contents($url), true);
12-
return $data['packages'][$packageName][0] ?? null;
13-
}
15+
$packages = $data['packages'] ?? [];
1416

15-
function filterDependents(array $dependents): array {
1617
$result = [];
17-
foreach ($dependents as $dependent) {
18-
$packageName = $dependent['name'];
19-
$downloads = $dependent['downloads'] ?? 0;
20-
$stars = $dependent['favers'] ?? 0;
2118

22-
if ($downloads < 100 || $stars < 5) {
19+
foreach ($packages as $package) {
20+
$packageName = $package['name'];
21+
$downloads = $package['downloads'] ?? 0;
22+
23+
if ($downloads < 2000) {
2324
continue;
2425
}
2526

26-
$packageData = fetchPackageData($packageName);
27-
if ($packageData) {
28-
$repository = $packageData['source']['url'] ?? '';
29-
30-
preg_match('/github\.com\/([^\/]+)\/([^\/]+).git/', $repository, $matches);
31-
[$_, $owner, $repo] = $matches;
32-
33-
$result[] = [
34-
'repo' => "$owner/$repo",
35-
];
36-
}
27+
$result[] = $packageName;
3728
}
29+
3830
return $result;
3931
}
4032

41-
function outputYaml(array $items): void {
33+
function fetchRepository(string $packageName): string
34+
{
35+
$url = "https://repo.packagist.org/p2/{$packageName}.json";
36+
$data = json_decode(file_get_contents($url), true);
37+
$packageData = $data['packages'][$packageName][0] ?? null;
38+
39+
preg_match('/github\.com\/([^\/]+)\/([^\/]+).git/', $packageData['source']['url'], $matches);
40+
[, $owner, $repo] = $matches;
41+
42+
return "$owner/$repo";
43+
}
44+
45+
/**
46+
* @param list<array{repo: string, cdaArgs?: string, composerArgs?: string}> $items
47+
*/
48+
function outputYaml(array $items): void
49+
{
4250
foreach ($items as $item) {
4351
echo " -\n";
44-
echo " repo: {$item['repo']}\n";
52+
53+
foreach ($item as $key => $value) {
54+
echo " $key: $value\n";
55+
}
4556
}
4657
}
4758

4859
$packageName = 'shipmonk/composer-dependency-analyser';
49-
$allDependents = [];
5060
$page = 1;
61+
$result = [];
5162

5263
do {
5364
$dependents = fetchDependents($packageName, $page);
54-
$allDependents = array_merge($allDependents, $dependents);
65+
66+
foreach ($dependents as $dependent) {
67+
$repository = fetchRepository($dependent);
68+
$result[] = [
69+
'repo' => $repository,
70+
];
71+
}
72+
5573
$page++;
5674
} while (count($dependents) > 0);
5775

58-
$filteredDependents = filterDependents($allDependents);
59-
outputYaml($filteredDependents);
76+
// manual adjustments for some repositories
77+
$result[] = [
78+
'repo' => 'phpstan/phpstan-src',
79+
'cdaArgs' => '--config=build/composer-dependency-analyser.php',
80+
];
81+
$result[] = [
82+
'repo' => 'qossmic/deptrac-src',
83+
];
84+
85+
foreach ($result as $index => &$item) {
86+
if (strpos($item['repo'], 'oveleon') === 0) {
87+
$item['composerArgs'] = '--no-plugins';
88+
}
89+
90+
if (
91+
strpos($item['repo'], 'oveleon') === 0
92+
|| strpos($item['repo'], 'contao') === 0
93+
|| strpos($item['repo'], 'numero2') === 0
94+
) {
95+
$item['cdaArgs'] = '--config=depcheck.php';
96+
}
97+
98+
if ($item['repo'] === 'Setono/deployer-cron') { // failing
99+
unset($result[$index]);
100+
}
101+
}
102+
103+
usort($result, static function (array $a, array $b): int {
104+
return $a['repo'] <=> $b['repo'];
105+
});
106+
107+
outputYaml($result);

0 commit comments

Comments
 (0)