setName('cv:add') ->setDescription('Write a new CV entry') ->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) { try { $this->form = $this->getHelper('form')->getFormByName('form.cv', $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.cv.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.'/cv/'.$name.'.md', $this->form->getResults(), $text, false); $this->io->success($this->translator->trans('message.write.success', array( '%name%' => 'CV/'.ucfirst($name) ))); if ($input->getOption('review') != false) { $this->getService('uri_helper')->openFileInEditor(PROJECT_ROOT.'/cv/'.$name.'.md'); } } catch (FormException $fe) { throw new RuntimeException(get_class($fe).': '.$fe->getMessage(), $fe->getCode(), $fe); } } } }