6 declare(strict_types=1);
13 use Symfony\Component\Console\Command\Command;
14 use Symfony\Component\Console\Exception\InvalidArgumentException;
15 use Symfony\Component\Console\Input\InputInterface;
16 use Symfony\Component\Console\Input\InputOption;
17 use Symfony\Component\Console\Output\OutputInterface;
18 use Symfony\Component\Console\Input\InputArgument;
19 use Symfony\Component\Console\Helper\Table;
38 private $componentRegistrar;
47 parent::__construct();
58 $this->setName(self::COMMAND_NAME)
59 ->setDescription(
'Generate patch and put it in specific folder.')
63 InputArgument::REQUIRED,
67 self::INPUT_KEY_PATCH_NAME,
68 InputArgument::REQUIRED,
72 self::INPUT_KEY_IS_REVERTABLE,
74 InputOption::VALUE_OPTIONAL,
75 'Check whether patch is revertable or not.',
79 self::INPUT_KEY_PATCH_TYPE,
81 InputOption::VALUE_OPTIONAL,
82 'Find out what type of patch should be generated.',
95 private function getPatchTemplate() : string
106 $moduleName = $input->getArgument(self::MODULE_NAME);
107 $patchName = $input->getArgument(self::INPUT_KEY_PATCH_NAME);
108 $type = $input->getOption(self::INPUT_KEY_PATCH_TYPE);
110 $preparedModuleName = str_replace(
'_',
'\\', $moduleName);
111 $preparedType = ucfirst(
$type);
112 $patchInterface = sprintf(
'%sPatchInterface', $preparedType);
113 $patchTemplateData = $this->getPatchTemplate();
114 $patchTemplateData = str_replace(
'%moduleName%', $preparedModuleName, $patchTemplateData);
115 $patchTemplateData = str_replace(
'%patchType%', $preparedType, $patchTemplateData);
116 $patchTemplateData = str_replace(
'%patchInterface%', $patchInterface, $patchTemplateData);
117 $patchTemplateData = str_replace(
'%class%', $patchName, $patchTemplateData);
118 $patchDir = $patchToFile = $modulePath .
'/Setup/Patch/' . $preparedType;
121 mkdir($patchDir, 0777,
true);
123 $patchToFile = $patchDir .
'/' . $patchName .
'.php';
__construct(ComponentRegistrar $componentRegistrar)
defined('TESTS_BP')||define('TESTS_BP' __DIR__
const INPUT_KEY_IS_REVERTABLE
execute(InputInterface $input, OutputInterface $output)
mkdir($pathname, $mode=0777, $recursive=false, $context=null)
const INPUT_KEY_PATCH_TYPE
const INPUT_KEY_PATCH_NAME