setName('create:project') ->setDescription('Write a new project file') ->addArgument('name', InputArgument::REQUIRED, 'Choose the name of the entry') ->addOption('review', 'r', InputOption::VALUE_NONE, 'Review file in editor'); parent::configure(); } /** * {@inheritDoc} * @see \Magdev\Dossier\Command\BaseCommand::initialize() */ protected function initialize(InputInterface $input, OutputInterface $output) { $name = $input->getArgument('name'); if (file_exists(PROJECT_ROOT.'/projects/'.$name.'.md')) { throw new \RuntimeException('File projects/'.$name.'.md already exists'); } try { $this->form = $this->getHelper('form')->getFormByName('form.project', $input, $output); parent::initialize($input, $output); } catch (FormException $fe) { throw new RuntimeException(get_class($fe).': '.$fe->getMessage(), $fe->getCode(), $fe); } } /** * {@inheritDoc} * @see \Symfony\Component\Console\Command\Command::interact() */ protected function interact(InputInterface $input, OutputInterface $output) { $this->io->title($this->translator->trans('form.project.header.add')); $this->io->newLine(); $this->form->process(); } /** * {@inheritDoc} * @see \Symfony\Component\Console\Command\Command::execute() */ protected function execute(InputInterface $input, OutputInterface $output) { if ($this->form->isProcessed()) { $markdown = $this->getService('markdown'); /* @var $markdown \Magdev\Dossier\Service\MarkdownService */ try { $text = $this->form->stripData('text', ''); $name = $input->getArgument('name'); $markdown->save(PROJECT_ROOT.'/projects/'.$name.'.md', $this->form->getResults(), $text, false); $this->io->success($this->translator->trans('message.write.success', array( '%name%' => 'Project/'.ucfirst($name) ))); if ($input->getOption('review') != false) { $this->getService('uri_helper')->openFileInEditor(PROJECT_ROOT.'/projects/'.$name.'.md'); } } catch (FormException $fe) { throw new RuntimeException(get_class($fe).': '.$fe->getMessage(), $fe->getCode(), $fe); } } } }