14 use Symfony\Component\Console\Command\Command;
15 use Symfony\Component\Console\Input\InputArgument;
16 use Symfony\Component\Console\Input\InputInterface;
17 use Symfony\Component\Console\Input\InputOption;
18 use Symfony\Component\Console\Output\OutputInterface;
40 private $dependencyChecker;
50 private $composerInfo;
60 private $backupRollbackFactory;
78 $this->dependencyChecker = $dependencyChecker;
79 $this->
remove = $remove;
80 $this->composerInfo = $composerInfo;
82 $this->backupRollbackFactory = $backupRollbackFactory;
84 parent::__construct();
92 $this->setName(
'i18n:uninstall')
93 ->setDescription(
'Uninstalls language packages')
96 self::PACKAGE_ARGUMENT,
97 InputArgument::IS_ARRAY | InputArgument::REQUIRED,
98 'Language package name' 101 self::BACKUP_CODE_OPTION,
103 InputOption::VALUE_NONE,
104 'Take code and configuration files backup (excluding temporary files)' 116 $languages = $input->getArgument(self::PACKAGE_ARGUMENT);
117 $packagesToRemove = [];
118 $dependencies = $this->dependencyChecker->checkDependencies($languages,
true);
120 foreach ($languages as $package) {
121 if (!$this->validate($package)) {
122 $output->writeln(
"<info>Package $package is not a Magento language and will be skipped.</info>");
124 if (
sizeof($dependencies[$package]) > 0) {
125 $output->writeln(
"<info>Package $package has dependencies and will be skipped.</info>");
127 $packagesToRemove[] = $package;
132 if ($packagesToRemove !== []) {
133 if ($input->getOption(self::BACKUP_CODE_OPTION)) {
134 $backupRestore = $this->backupRollbackFactory->create(
$output);
135 $backupRestore->codeBackup(
time());
137 $output->writeln(
'<info>You are removing language package without a code backup.</info>');
140 $output->writeln($this->remove->remove($packagesToRemove));
141 $this->cache->clean();
143 $output->writeln(
'<info>Nothing is removed.</info>');
154 private function validate($package)
156 $installedPackages = $this->composerInfo->getRootRequiredPackageTypesByName();
158 if (isset($installedPackages[$package]) && $installedPackages[$package] ===
'magento2-language') {
__construct(DependencyChecker $dependencyChecker, Remove $remove, ComposerInformation $composerInfo, Cache $cache, BackupRollbackFactory $backupRollbackFactory)
execute(InputInterface $input, OutputInterface $output)