Skip to content

Commit

Permalink
Add TastyIgniter module support (#503)
Browse files Browse the repository at this point in the history
* 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>
  • Loading branch information
sampoyigi committed Feb 17, 2022
1 parent e6facf8 commit b8e490f
Show file tree
Hide file tree
Showing 3 changed files with 62 additions and 16 deletions.
2 changes: 1 addition & 1 deletion README.md
Expand Up @@ -117,7 +117,7 @@ all vendor code in the vendor directory, and not requiring custom installer code
| SyDES | `sydes-module`<br>`sydes-theme`
| Sylius | `sylius-theme`
| TAO | `tao-extension`
| TastyIgniter | **`tastyigniter-extension`<br>`tastyigniter-theme`**
| TastyIgniter | **`tastyigniter-module`<br>`tastyigniter-extension`<br>`tastyigniter-theme`**
| Tusk | `tusk-task`<br>`tusk-command`<br>`tusk-asset`
| UserFrosting | `userfrosting-sprinkle`
| Vanilla | `vanilla-plugin`<br>`vanilla-theme`
Expand Down
68 changes: 54 additions & 14 deletions src/Composer/Installers/TastyIgniterInstaller.php
Expand Up @@ -5,10 +5,11 @@
class TastyIgniterInstaller extends BaseInstaller
{
/** @var array<string, string> */
protected $locations = array(
protected $locations = [
'module' => 'app/{$name}/',
'extension' => 'extensions/{$vendor}/{$name}/',
'theme' => 'themes/{$name}/',
);
];

/**
* Format package name.
Expand All @@ -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<string, string> $vars
* @return array<string, string>
*/
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<string, string> $vars
* @param array<string, mixed> $extra
* @return array<string, string>
*/
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<string, string> $vars
* @param array<string, mixed> $extra
* @return array<string, string>
*/
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;
}
}
8 changes: 7 additions & 1 deletion tests/Composer/Installers/Test/TastyIgniterInstallerTest.php
Expand Up @@ -2,7 +2,6 @@

namespace Composer\Installers\Test;

use Composer\Composer;
use Composer\Installers\TastyIgniterInstaller;
use Composer\Package\Package;

Expand Down Expand Up @@ -82,6 +81,13 @@ public function packageNameInflectionProvider(): array
'acme',
'someothertheme',
),
array(
'tastyigniter-module',
'tastyigniter',
'ti-module-system',
'tastyigniter',
'system',
),
);
}
}

0 comments on commit b8e490f

Please sign in to comment.