Skip to content

Commit e6f229c

Browse files
committed
Prevent doubling Sylius prefix in plugin name
1 parent ebaf9dc commit e6f229c

File tree

3 files changed

+40
-16
lines changed

3 files changed

+40
-16
lines changed

bin/rename-plugin.php

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -231,22 +231,26 @@ private function generateNameVariations(string $company, string $pluginName, boo
231231
];
232232
}
233233

234-
$syliusPlugin = 'Sylius' . $plugin;
234+
$hasSyliusPrefix = str_starts_with($pluginName, 'Sylius');
235+
$syliusPlugin = $hasSyliusPrefix ? $plugin : 'Sylius' . $plugin;
236+
$syliusPluginName = $hasSyliusPrefix ? $pluginName : 'Sylius' . $pluginName;
237+
235238
$fullClass = $company . $syliusPlugin;
236-
$extensionClass = $company . 'Sylius' . $pluginName . 'Extension';
239+
$extensionClass = $company . $syliusPluginName . 'Extension';
237240

238241
$companyKebab = $this->toKebabCase($company);
239242
$fullPluginKebab = $this->toKebabCase($syliusPlugin);
240243
$companySnake = $this->toSnakeCase($company);
244+
$pluginSnakeForDb = $hasSyliusPrefix ? $pluginSnake : 'sylius_' . $pluginSnake;
241245

242246
return [
243247
'company' => $company,
244248
'plugin' => $syliusPlugin,
245249
'fullClass' => $fullClass,
246250
'extensionClass' => $extensionClass,
247251
'package' => $companyKebab . '/' . $fullPluginKebab,
248-
'db' => $companySnake . '_sylius_' . $pluginSnake . '_plugin',
249-
'configKey' => $companySnake . '_sylius_' . $pluginSnake,
252+
'db' => $companySnake . '_' . $pluginSnakeForDb . '_plugin',
253+
'configKey' => $companySnake . '_' . $pluginSnakeForDb,
250254
];
251255
}
252256

bin/validate-directory.php

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,36 @@
44
declare(strict_types=1);
55

66
$dirName = basename(dirname(__DIR__));
7+
$isSyliusOfficial = getenv('SYLIUS') === '1';
78

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");
9+
if ($isSyliusOfficial) {
10+
if (!preg_match('/^[A-Z][a-zA-Z0-9]*Plugin$/', $dirName) || str_starts_with($dirName, 'Sylius')) {
11+
fwrite(STDERR, "\n");
12+
fwrite(STDERR, " \033[41;37m ERROR \033[0m Official Sylius plugin directory should not have 'Sylius' prefix\n");
13+
fwrite(STDERR, "\n");
14+
fwrite(STDERR, " Current: {$dirName}\n");
15+
fwrite(STDERR, " Expected: MailerLitePlugin, InvoicingPlugin, etc.\n");
16+
fwrite(STDERR, "\n");
17+
fwrite(STDERR, " Example:\n");
18+
fwrite(STDERR, " SYLIUS=1 composer create-project sylius/plugin-skeleton MailerLitePlugin\n");
19+
fwrite(STDERR, "\n");
1820

19-
exit(1);
21+
exit(1);
22+
}
23+
} else {
24+
if (!preg_match('/^Sylius[A-Z][a-zA-Z0-9]*Plugin$/', $dirName)) {
25+
fwrite(STDERR, "\n");
26+
fwrite(STDERR, " \033[41;37m ERROR \033[0m Community plugin directory must start with 'Sylius' prefix\n");
27+
fwrite(STDERR, "\n");
28+
fwrite(STDERR, " Current: {$dirName}\n");
29+
fwrite(STDERR, " Expected: Sylius{$dirName}\n");
30+
fwrite(STDERR, "\n");
31+
fwrite(STDERR, " Example:\n");
32+
fwrite(STDERR, " composer create-project sylius/plugin-skeleton SyliusWishlistPlugin\n");
33+
fwrite(STDERR, "\n");
34+
35+
exit(1);
36+
}
2037
}
2138

2239
unlink(__FILE__);

composer.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,10 @@
7979
],
8080
"post-create-project-cmd": [
8181
"@php bin/rename-plugin.php",
82-
"@test-app-init"
82+
"@test-app-init",
83+
"git init -q",
84+
"git add -A",
85+
"git commit -q -m 'Initial commit from PluginSkeleton'"
8386
],
8487
"database-reset": [
8588
"vendor/bin/console doctrine:database:drop --force --if-exists",

0 commit comments

Comments
 (0)