protected function execute(InputInterface $input, OutputInterface $output) { $bitrix = BitrixTool::getInstance(); // Исходный компонент. $componentName = $input->getOption('component'); $component = new BitrixComponent($componentName); if (!$component->exists()) { $output->writeln("<error>Component {$componentName} not found </error>"); return 1; } // Копируемый шаблон. $srcTemplateName = $input->getArgument('source'); $srcTemplatePath = $component->getTemplatePath($srcTemplateName); if (!file_exists($srcTemplatePath)) { $output->writeln("<error>Template {$srcTemplatePath} not found for component {$componentName}</error>"); return 1; } // Шаблон сайта, в который будет скопирован шаблон. $siteTemplateName = $input->getOption('site-template'); if (!$siteTemplateName) { $output->writeln("<error>Site template name not specified!</error>"); $output->writeln("<comment>Use --site-template option to specify site template where " . "to place component template.</comment>"); return 1; } if (!$bitrix->siteTemplateExists($siteTemplateName)) { $output->writeln("<error>Site template {$siteTemplateName} does not exist</error>"); return 1; } // Название с которым будет скопирован шаблон. $dstTemplateName = $input->getArgument('destination'); if (!$dstTemplateName) { $dstTemplateName = $srcTemplateName; } // Путь к целевому шаблону. $dstTemplatePath = $component->getLocalTemplatePath($siteTemplateName, $dstTemplateName); if (file_exists($dstTemplatePath) && !$input->getOption('force')) { $output->writeln("<error>Template {$dstTemplateName} already exsist.</error>"); $output->writeln("<info>Use --force option to overwrite</info>"); return 1; } $output->writeln("<comment>Copying component template:</comment>"); $output->writeln("<comment>--> from:</comment> <info>{$srcTemplatePath}</info>"); $output->writeln("<comment>--> to:</comment> <info>{$dstTemplatePath}</info>"); FileSystemHelpers::CopyDir($srcTemplatePath, $dstTemplatePath); $output->writeln('<comment>Done!</comment>'); }