5 * Contains \Drupal\Console\Command\Create\TermsCommand.
8 namespace Drupal\Console\Command\Create;
10 use Symfony\Component\Console\Input\InputArgument;
11 use Symfony\Component\Console\Input\InputOption;
12 use Symfony\Component\Console\Input\InputInterface;
13 use Symfony\Component\Console\Output\OutputInterface;
14 use Symfony\Component\Console\Command\Command;
15 use Drupal\Console\Core\Command\Shared\CommandTrait;
16 use Drupal\Console\Annotations\DrupalCommand;
17 use Drupal\Console\Utils\Create\TermData;
18 use Drupal\Console\Utils\DrupalApi;
19 use Drupal\Console\Core\Style\DrupalStyle;
24 * @package Drupal\Console\Command\Generate
27 * extension = "taxonomy",
28 * extensionType = "module"
31 class TermsCommand extends Command
42 protected $createTermData;
45 * TermsCommand constructor.
47 * @param DrupalApi $drupalApi
48 * @param TermData $createTermData
50 public function __construct(
52 TermData $createTermData
54 $this->drupalApi = $drupalApi;
55 $this->createTermData = $createTermData;
56 parent::__construct();
62 protected function configure()
65 ->setName('create:terms')
66 ->setDescription($this->trans('commands.create.terms.description'))
69 InputArgument::IS_ARRAY,
70 $this->trans('commands.create.terms.arguments.vocabularies')
75 InputOption::VALUE_OPTIONAL,
76 $this->trans('commands.create.terms.options.limit')
81 InputOption::VALUE_OPTIONAL,
82 $this->trans('commands.create.terms.options.name-words')
89 protected function interact(InputInterface $input, OutputInterface $output)
91 $io = new DrupalStyle($input, $output);
93 $vocabularies = $input->getArgument('vocabularies');
95 $vocabularies = $this->drupalApi->getVocabularies();
97 $this->trans('commands.create.terms.questions.vocabularies'),
98 array_values($vocabularies),
104 function ($vid) use ($vocabularies) {
105 return array_search($vid, $vocabularies);
110 $input->setArgument('vocabularies', $vids);
113 $limit = $input->getOption('limit');
116 $this->trans('commands.create.terms.questions.limit'),
119 $input->setOption('limit', $limit);
122 $nameWords = $input->getOption('name-words');
124 $nameWords = $io->ask(
125 $this->trans('commands.create.terms.questions.name-words'),
129 $input->setOption('name-words', $nameWords);
136 protected function execute(InputInterface $input, OutputInterface $output)
138 $io = new DrupalStyle($input, $output);
140 $vocabularies = $input->getArgument('vocabularies');
141 $limit = $input->getOption('limit')?:25;
142 $nameWords = $input->getOption('name-words')?:5;
144 if (!$vocabularies) {
145 $vocabularies = array_keys($this->drupalApi->getVocabularies());
148 $terms = $this->createTermData->create(
155 $this->trans('commands.create.terms.messages.term-id'),
156 $this->trans('commands.create.terms.messages.vocabulary'),
157 $this->trans('commands.create.terms.messages.name'),
160 $io->table($tableHeader, $terms['success']);
164 $this->trans('commands.create.terms.messages.created-terms'),