Add a readable module name

This commit is contained in:
Oliver Davies 2020-02-09 19:16:57 +00:00
parent 20a6a011d9
commit 28696ce13f
4 changed files with 49 additions and 16 deletions

View file

@ -2,6 +2,7 @@
<?php <?php
use Opdavies\DrupalModuleGenerator\Command\GenerateDrupal7Command; use Opdavies\DrupalModuleGenerator\Command\GenerateDrupal7Command;
use Opdavies\DrupalModuleGenerator\Service\ModuleNameConverter;
use Opdavies\DrupalModuleGenerator\Service\TestNameConverter; use Opdavies\DrupalModuleGenerator\Service\TestNameConverter;
use Symfony\Component\Console\Application; use Symfony\Component\Console\Application;
use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\Finder;
@ -11,10 +12,11 @@ require_once __DIR__.'/../vendor/autoload.php';
$app = new Application(); $app = new Application();
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$app->addCommands([ $app->addCommands([
new GenerateDrupal7Command($finder, $testNameConverter), new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter),
]); ]);
$app->run(); $app->run();

View file

@ -3,6 +3,7 @@
namespace Opdavies\DrupalModuleGenerator\Command; namespace Opdavies\DrupalModuleGenerator\Command;
use Opdavies\DrupalModuleGenerator\Exception\CannotCreateModuleException; use Opdavies\DrupalModuleGenerator\Exception\CannotCreateModuleException;
use Opdavies\DrupalModuleGenerator\Service\ModuleNameConverter;
use Opdavies\DrupalModuleGenerator\Service\TestNameConverter; use Opdavies\DrupalModuleGenerator\Service\TestNameConverter;
use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputArgument;
@ -17,6 +18,7 @@ use Tightenco\Collect\Support\Collection;
class GenerateDrupal7Command extends Command class GenerateDrupal7Command extends Command
{ {
private $moduleName; private $moduleName;
private $machineName;
private $testName; private $testName;
/** @var Filesystem */ /** @var Filesystem */
@ -28,17 +30,22 @@ class GenerateDrupal7Command extends Command
/** @var SymfonyStyle $io */ /** @var SymfonyStyle $io */
private $io; private $io;
/** @var ModuleNameConverter */
private $moduleNameConverter;
/** @var TestNameConverter */ /** @var TestNameConverter */
private $testNameConverter; private $testNameConverter;
public function __construct( public function __construct(
Finder $finder, Finder $finder,
ModuleNameConverter $moduleNameConverter,
TestNameConverter $testNameConverter, TestNameConverter $testNameConverter,
string $name = null string $name = null
) { ) {
parent::__construct($name); parent::__construct($name);
$this->finder = $finder; $this->finder = $finder;
$this->moduleNameConverter = $moduleNameConverter;
$this->testNameConverter = $testNameConverter; $this->testNameConverter = $testNameConverter;
} }
@ -64,8 +71,9 @@ class GenerateDrupal7Command extends Command
{ {
$this->io = new SymfonyStyle($input, $output); $this->io = new SymfonyStyle($input, $output);
$this->moduleName = $input->getArgument('module-name'); $this->machineName = $input->getArgument('module-name');
$this->testName = $this->testNameConverter->__invoke($this->moduleName); $this->moduleName = $this->moduleNameConverter->__invoke($this->machineName);
$this->testName = $this->testNameConverter->__invoke($this->machineName);
$this $this
->ensureDirectoryDoesNotExist() ->ensureDirectoryDoesNotExist()
@ -80,7 +88,7 @@ class GenerateDrupal7Command extends Command
*/ */
private function ensureDirectoryDoesNotExist() private function ensureDirectoryDoesNotExist()
{ {
if (is_dir($this->moduleName)) { if (is_dir($this->machineName)) {
throw CannotCreateModuleException::directoryAlreadyExists(); throw CannotCreateModuleException::directoryAlreadyExists();
} }
@ -89,7 +97,7 @@ class GenerateDrupal7Command extends Command
private function createModuleDirectory() private function createModuleDirectory()
{ {
mkdir($this->moduleName); mkdir($this->machineName);
return $this; return $this;
} }
@ -101,10 +109,10 @@ class GenerateDrupal7Command extends Command
/** @var SplFileInfo $file */ /** @var SplFileInfo $file */
foreach ($this->finder->in('fixtures/drupal7_module')->files() as $file) { foreach ($this->finder->in('fixtures/drupal7_module')->files() as $file) {
$filename = "{$this->moduleName}.{$file->getExtension()}"; $filename = "{$this->machineName}.{$file->getExtension()}";
if ($file->getRelativePath()) { if ($file->getRelativePath()) {
mkdir("{$this->moduleName}/{$file->getRelativePath()}", 0777, $recursive = true); mkdir("{$this->machineName}/{$file->getRelativePath()}", 0777, $recursive = true);
$filename = "{$this->testName}.php"; $filename = "{$this->testName}.php";
$filename = "{$file->getRelativePath()}/{$filename}"; $filename = "{$file->getRelativePath()}/{$filename}";
@ -112,7 +120,7 @@ class GenerateDrupal7Command extends Command
$contents = $this->updateFileContents($file->getContents()); $contents = $this->updateFileContents($file->getContents());
file_put_contents("{$this->moduleName}/{$filename}", $contents); file_put_contents("{$this->machineName}/{$filename}", $contents);
$createdFiles->push($filename); $createdFiles->push($filename);
} }

View file

@ -0,0 +1,17 @@
<?php
namespace Opdavies\DrupalModuleGenerator\Service;
class ModuleNameConverter
{
public function __invoke(string $moduleName)
{
$parts = explode('_', $moduleName);
$parts = array_map(function ($part) {
return ucfirst($part);
}, $parts);
return implode(' ', $parts);
}
}

View file

@ -4,6 +4,7 @@ namespace Opdavies\Tests\DrupalModuleGenerator\Command;
use Opdavies\DrupalModuleGenerator\Command\GenerateDrupal7Command; use Opdavies\DrupalModuleGenerator\Command\GenerateDrupal7Command;
use Opdavies\DrupalModuleGenerator\Exception\CannotCreateModuleException; use Opdavies\DrupalModuleGenerator\Exception\CannotCreateModuleException;
use Opdavies\DrupalModuleGenerator\Service\ModuleNameConverter;
use Opdavies\DrupalModuleGenerator\Service\TestNameConverter; use Opdavies\DrupalModuleGenerator\Service\TestNameConverter;
use Symfony\Component\Console\Tester\CommandTester; use Symfony\Component\Console\Tester\CommandTester;
use PHPUnit\Framework\TestCase; use PHPUnit\Framework\TestCase;
@ -24,8 +25,9 @@ class GenerateDrupal7ModuleCommandTest extends TestCase
$this->expectExceptionObject(CannotCreateModuleException::directoryAlreadyExists()); $this->expectExceptionObject(CannotCreateModuleException::directoryAlreadyExists());
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$command = new GenerateDrupal7Command($finder, $testNameConverter); $command = new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter);
$commandTester = new CommandTester($command); $commandTester = new CommandTester($command);
$commandTester->execute([ $commandTester->execute([
@ -37,8 +39,9 @@ class GenerateDrupal7ModuleCommandTest extends TestCase
public function it_creates_a_new_module_directory() public function it_creates_a_new_module_directory()
{ {
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$command = new GenerateDrupal7Command($finder, $testNameConverter); $command = new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter);
$commandTester = new CommandTester($command); $commandTester = new CommandTester($command);
$commandTester->execute([ $commandTester->execute([
@ -52,8 +55,9 @@ class GenerateDrupal7ModuleCommandTest extends TestCase
public function it_generates_an_info_file() public function it_generates_an_info_file()
{ {
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$command = new GenerateDrupal7Command($finder, $testNameConverter); $command = new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter);
$commandTester = new CommandTester($command); $commandTester = new CommandTester($command);
$commandTester->execute([ $commandTester->execute([
@ -64,16 +68,17 @@ class GenerateDrupal7ModuleCommandTest extends TestCase
$contents = file_get_contents('test_module/test_module.info'); $contents = file_get_contents('test_module/test_module.info');
$this->assertStringContainsString('name = test_module', $contents); $this->assertStringContainsString('name = Test Module', $contents);
$this->assertStringContainsString('description = The description for test_module.', $contents); $this->assertStringContainsString('description = The description for Test Module.', $contents);
} }
/** @test */ /** @test */
public function it_generates_a_module_file() public function it_generates_a_module_file()
{ {
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$command = new GenerateDrupal7Command($finder, $testNameConverter); $command = new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter);
$commandTester = new CommandTester($command); $commandTester = new CommandTester($command);
$commandTester->execute([ $commandTester->execute([
@ -84,15 +89,16 @@ class GenerateDrupal7ModuleCommandTest extends TestCase
$contents = file_get_contents('test_module/test_module.module'); $contents = file_get_contents('test_module/test_module.module');
$this->assertStringContainsString('The main module file for test_module.', $contents); $this->assertStringContainsString('The main module file for Test Module.', $contents);
} }
/** @test */ /** @test */
public function it_generates_a_test_case() public function it_generates_a_test_case()
{ {
$finder = new Finder(); $finder = new Finder();
$moduleNameConverter = new ModuleNameConverter();
$testNameConverter = new TestNameConverter(); $testNameConverter = new TestNameConverter();
$command = new GenerateDrupal7Command($finder, $testNameConverter); $command = new GenerateDrupal7Command($finder, $moduleNameConverter, $testNameConverter);
$commandTester = new CommandTester($command); $commandTester = new CommandTester($command);
$commandTester->execute([ $commandTester->execute([