5 * Contains \Drupal\Console\Command\Theme\UninstallCommand.
8 namespace Drupal\Console\Command\Theme;
10 use Symfony\Component\Console\Input\InputArgument;
11 use Symfony\Component\Console\Input\InputInterface;
12 use Symfony\Component\Console\Output\OutputInterface;
13 use Drupal\Core\Config\UnmetDependenciesException;
15 class UninstallCommand extends ThemeBaseCommand
17 protected function configure()
20 ->setName('theme:uninstall')
21 ->setDescription($this->trans('commands.theme.uninstall.description'))
24 InputArgument::IS_ARRAY,
25 $this->trans('commands.theme.uninstall.options.theme')
27 ->setAliases(['thu']);
33 protected function interact(InputInterface $input, OutputInterface $output)
35 $titleTranslatableString = 'commands.theme.uninstall.messages.installed-themes';
36 $questionTranslatableString = 'commands.theme.uninstall.questions.theme';
37 $autocompleteAvailableThemes = $this->getAutoCompleteList(0);
38 $this->getThemeArgument($titleTranslatableString, $questionTranslatableString, $autocompleteAvailableThemes);
41 protected function execute(InputInterface $input, OutputInterface $output)
43 $config = $this->configFactory->getEditable('system.theme');
44 $this->themeHandler->refreshInfo();
45 $theme = $input->getArgument('theme');
46 $this->prepareThemesArrays($theme);
48 if (count($this->getAvailableThemes()) > 0) {
50 foreach ($this->getAvailableThemes() as $themeKey => $themeName) {
51 if ($themeKey === $config->get('default')) {
52 $this->setInfoMessage('commands.theme.uninstall.messages.error-default-theme', $this->getAvailableThemes());
56 if ($themeKey === $config->get('admin')) {
57 $this->setErrorMessage('commands.theme.uninstall.messages.error-admin-theme', $this->getAvailableThemes());
62 $this->themeHandler->uninstall($theme);
64 if (count($this->getAvailableThemes()) > 1) {
65 $this->setInfoMessage('commands.theme.uninstall.messages.themes-success', $this->getAvailableThemes());
67 $this->setInfoMessage('commands.theme.uninstall.messages.theme-success', array_shift($this->getAvailableThemes()));
69 } catch (UnmetDependenciesException $e) {
70 $this->setErrorMessage('commands.theme.uninstall.messages.dependencies', $this->getMessage());
73 } elseif (empty($this->getAvailableThemes()) && count($this->getUninstalledThemes()) > 0) {
74 if (count($this->getUninstalledThemes()) > 1) {
75 $this->setInfoMessage('commands.theme.uninstall.messages.themes-nothing', $this->getUninstalledThemes());
77 $this->setInfoMessage('commands.theme.uninstall.messages.theme-nothing', $this->getUninstalledThemes());
80 if (count($this->getUnavailableThemes()) > 1) {
81 $this->setErrorMessage('commands.theme.uninstall.messages.themes-missing', $this->getUnavailableThemes());
83 $this->setErrorMessage('commands.theme.uninstall.messages.theme-missing', $this->getUnavailableThemes());
87 // Run cache rebuild to see changes in Web UI
88 $this->chainQueue->addCommand('cache:rebuild', ['cache' => 'all']);