|
4 | 4 | declare(strict_types=1); |
5 | 5 |
|
6 | 6 | $dirName = basename(dirname(__DIR__)); |
| 7 | +$isSyliusOfficial = getenv('SYLIUS') === '1'; |
7 | 8 |
|
8 | | -if (!preg_match('/^[A-Z][a-zA-Z0-9]*Plugin$/', $dirName)) { |
9 | | - fwrite(STDERR, "\n"); |
10 | | - fwrite(STDERR, " \033[41;37m ERROR \033[0m Directory name must end with 'Plugin' suffix\n"); |
11 | | - fwrite(STDERR, "\n"); |
12 | | - fwrite(STDERR, " Current: {$dirName}\n"); |
13 | | - fwrite(STDERR, " Expected: {$dirName}Plugin (or similar PascalCase name ending with Plugin)\n"); |
14 | | - fwrite(STDERR, "\n"); |
15 | | - fwrite(STDERR, " Example:\n"); |
16 | | - fwrite(STDERR, " composer create-project sylius/plugin-skeleton WishlistPlugin\n"); |
17 | | - fwrite(STDERR, "\n"); |
18 | | - |
19 | | - exit(1); |
| 9 | +if ($isSyliusOfficial) { |
| 10 | + if (!preg_match('/^[A-Z][a-zA-Z0-9]*Plugin$/', $dirName) || str_starts_with($dirName, 'Sylius')) { |
| 11 | + $hasPluginSuffix = str_ends_with($dirName, 'Plugin'); |
| 12 | + |
| 13 | + $suggestion = $dirName; |
| 14 | + if (str_starts_with($suggestion, 'Sylius')) { |
| 15 | + $suggestion = substr($suggestion, 6); |
| 16 | + } |
| 17 | + if (!$hasPluginSuffix) { |
| 18 | + $suggestion .= 'Plugin'; |
| 19 | + } |
| 20 | + |
| 21 | + fwrite(STDERR, "\n"); |
| 22 | + fwrite(STDERR, " \033[41;37m ERROR \033[0m Official Sylius plugin name must match pattern: {Feature}Plugin\n"); |
| 23 | + fwrite(STDERR, "\n"); |
| 24 | + fwrite(STDERR, " Current: {$dirName}\n"); |
| 25 | + fwrite(STDERR, " Expected: {$suggestion}\n"); |
| 26 | + fwrite(STDERR, "\n"); |
| 27 | + fwrite(STDERR, " Example:\n"); |
| 28 | + fwrite(STDERR, " SYLIUS=1 composer create-project sylius/plugin-skeleton MailerLitePlugin\n"); |
| 29 | + fwrite(STDERR, "\n"); |
| 30 | + |
| 31 | + exit(1); |
| 32 | + } |
| 33 | +} else { |
| 34 | + if (!preg_match('/^Sylius[A-Z][a-zA-Z0-9]*Plugin$/', $dirName)) { |
| 35 | + $hasSyliusPrefix = str_starts_with($dirName, 'Sylius'); |
| 36 | + $hasPluginSuffix = str_ends_with($dirName, 'Plugin'); |
| 37 | + |
| 38 | + $suggestion = $dirName; |
| 39 | + if (!$hasSyliusPrefix) { |
| 40 | + $suggestion = 'Sylius' . $suggestion; |
| 41 | + } |
| 42 | + if (!$hasPluginSuffix) { |
| 43 | + $suggestion .= 'Plugin'; |
| 44 | + } |
| 45 | + |
| 46 | + fwrite(STDERR, "\n"); |
| 47 | + fwrite(STDERR, " \033[41;37m ERROR \033[0m Community plugin name must match pattern: Sylius{Feature}Plugin\n"); |
| 48 | + fwrite(STDERR, "\n"); |
| 49 | + fwrite(STDERR, " Current: {$dirName}\n"); |
| 50 | + fwrite(STDERR, " Expected: {$suggestion}\n"); |
| 51 | + fwrite(STDERR, "\n"); |
| 52 | + fwrite(STDERR, " Example:\n"); |
| 53 | + fwrite(STDERR, " composer create-project sylius/plugin-skeleton SyliusWishlistPlugin\n"); |
| 54 | + fwrite(STDERR, "\n"); |
| 55 | + |
| 56 | + exit(1); |
| 57 | + } |
20 | 58 | } |
21 | 59 |
|
22 | 60 | unlink(__FILE__); |
0 commit comments