From b8e490f37773ce64738d391e31ba83f082eb815e Mon Sep 17 00:00:00 2001 From: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> Date: Thu, 17 Feb 2022 07:59:23 +0000 Subject: [PATCH] Add TastyIgniter module support (#503) * Add module support Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> * Add module tests and update readme Signed-off-by: Sam Poyigi <6567634+sampoyigi@users.noreply.github.com> --- README.md | 2 +- .../Installers/TastyIgniterInstaller.php | 68 +++++++++++++++---- .../Test/TastyIgniterInstallerTest.php | 8 ++- 3 files changed, 62 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index c16dd4b7..b4c78e65 100644 --- a/README.md +++ b/README.md @@ -117,7 +117,7 @@ all vendor code in the vendor directory, and not requiring custom installer code | SyDES | `sydes-module`
`sydes-theme` | Sylius | `sylius-theme` | TAO | `tao-extension` -| TastyIgniter | **`tastyigniter-extension`
`tastyigniter-theme`** +| TastyIgniter | **`tastyigniter-module`
`tastyigniter-extension`
`tastyigniter-theme`** | Tusk | `tusk-task`
`tusk-command`
`tusk-asset` | UserFrosting | `userfrosting-sprinkle` | Vanilla | `vanilla-plugin`
`vanilla-theme` diff --git a/src/Composer/Installers/TastyIgniterInstaller.php b/src/Composer/Installers/TastyIgniterInstaller.php index f3a237d4..ec3e69d5 100644 --- a/src/Composer/Installers/TastyIgniterInstaller.php +++ b/src/Composer/Installers/TastyIgniterInstaller.php @@ -5,10 +5,11 @@ class TastyIgniterInstaller extends BaseInstaller { /** @var array */ - protected $locations = array( + protected $locations = [ + 'module' => 'app/{$name}/', 'extension' => 'extensions/{$vendor}/{$name}/', 'theme' => 'themes/{$name}/', - ); + ]; /** * Format package name. @@ -21,25 +22,64 @@ public function inflectPackageVars(array $vars): array { $extra = $this->composer->getPackage()->getExtra(); + if ($vars['type'] === 'tastyigniter-module') { + return $this->inflectModuleVars($vars); + } + if ($vars['type'] === 'tastyigniter-extension') { - if (!empty($extra['tastyigniter-extension']['code'])) { - $parts = explode('.', $extra['tastyigniter-extension']['code']); - $vars['vendor'] = $parts[0]; - $vars['name'] = $parts[1] ?? ''; - } - - $vars['vendor'] = preg_replace('/[^a-z0-9_]/i', '', $vars['vendor']); - $vars['name'] = preg_replace('/^ti-ext-/', '', (string)$vars['name']); + return $this->inflectExtensionVars($vars, $extra); } if ($vars['type'] === 'tastyigniter-theme') { - if (!empty($extra['tastyigniter-theme']['code'])) { - $vars['name'] = $extra['tastyigniter-theme']['code']; - } + return $this->inflectThemeVars($vars, $extra); + } + + return $vars; + } + + /** + * @param array $vars + * @return array + */ + protected function inflectModuleVars(array $vars): array + { + $vars['name'] = $this->pregReplace('/^ti-module-/', '', $vars['name']); + + return $vars; + } - $vars['name'] = preg_replace('/^ti-theme-/', '', $vars['name']); + /** + * @param array $vars + * @param array $extra + * @return array + */ + protected function inflectExtensionVars(array $vars, array $extra): array + { + if (!empty($extra['tastyigniter-extension']['code'])) { + $parts = explode('.', $extra['tastyigniter-extension']['code']); + $vars['vendor'] = (string)$parts[0]; + $vars['name'] = (string)($parts[1] ?? ''); } + $vars['vendor'] = $this->pregReplace('/[^a-z0-9_]/i', '', $vars['vendor']); + $vars['name'] = $this->pregReplace('/^ti-ext-/', '', $vars['name']); + + return $vars; + } + + /** + * @param array $vars + * @param array $extra + * @return array + */ + protected function inflectThemeVars(array $vars, array $extra): array + { + if (!empty($extra['tastyigniter-theme']['code'])) { + $vars['name'] = $extra['tastyigniter-theme']['code']; + } + + $vars['name'] = $this->pregReplace('/^ti-theme-/', '', $vars['name']); + return $vars; } } diff --git a/tests/Composer/Installers/Test/TastyIgniterInstallerTest.php b/tests/Composer/Installers/Test/TastyIgniterInstallerTest.php index 5ced307a..06d56444 100644 --- a/tests/Composer/Installers/Test/TastyIgniterInstallerTest.php +++ b/tests/Composer/Installers/Test/TastyIgniterInstallerTest.php @@ -2,7 +2,6 @@ namespace Composer\Installers\Test; -use Composer\Composer; use Composer\Installers\TastyIgniterInstaller; use Composer\Package\Package; @@ -82,6 +81,13 @@ public function packageNameInflectionProvider(): array 'acme', 'someothertheme', ), + array( + 'tastyigniter-module', + 'tastyigniter', + 'ti-module-system', + 'tastyigniter', + 'system', + ), ); } }