15 use Symfony\Component\Console\Input\InputInterface;
16 use Symfony\Component\Console\Input\InputOption;
17 use Symfony\Component\Console\Output\OutputInterface;
38 private $objectManager;
45 private $backupRollbackFactory;
52 private $deploymentConfig;
57 private $maintenanceModeEnabler;
75 $this->objectManager = $objectManagerProvider->
get();
76 $this->backupRollbackFactory = $this->objectManager->get(\
Magento\Framework\Setup\BackupRollbackFactory::class);
78 $this->maintenanceModeEnabler =
79 $maintenanceModeEnabler ?: $this->objectManager->get(MaintenanceModeEnabler::class);
80 parent::__construct();
92 InputOption::VALUE_NONE,
93 'Take code and configuration files backup (excluding temporary files)' 96 self::INPUT_KEY_MEDIA,
98 InputOption::VALUE_NONE,
104 InputOption::VALUE_NONE,
105 'Take complete database backup' 108 $this->setName(
'setup:backup')
109 ->setDescription(
'Takes backup of Magento Application code base, media and database')
119 if (!$this->deploymentConfig->isAvailable()
120 && ($input->getOption(self::INPUT_KEY_MEDIA) || $input->getOption(self::INPUT_KEY_DB))) {
121 $output->writeln(
"<info>No information is available: the Magento application is not installed.</info>");
123 return \Magento\Framework\Console\Cli::RETURN_FAILURE;
125 $returnValue = $this->maintenanceModeEnabler->executeInMaintenanceMode(
126 function () use ($input,
$output) {
128 $inputOptionProvided =
false;
130 $backupHandler = $this->backupRollbackFactory->create(
$output);
131 if ($input->getOption(self::INPUT_KEY_CODE)) {
132 $backupHandler->codeBackup($time);
133 $inputOptionProvided =
true;
135 if ($input->getOption(self::INPUT_KEY_MEDIA)) {
137 $inputOptionProvided =
true;
139 if ($input->getOption(self::INPUT_KEY_DB)) {
140 $this->setAreaCode();
141 $backupHandler->dbBackup($time);
142 $inputOptionProvided =
true;
144 if (!$inputOptionProvided) {
145 throw new \InvalidArgumentException(
146 'Not enough information provided to take backup.' 149 return \Magento\Framework\Console\Cli::RETURN_SUCCESS;
151 $output->writeln(
'<error>' . $e->getMessage() .
'</error>');
152 return \Magento\Framework\Console\Cli::RETURN_FAILURE;
167 private function setAreaCode()
169 $areaCode =
'adminhtml';
171 $appState = $this->objectManager->get(\
Magento\Framework\
App\State::class);
172 $appState->setAreaCode($areaCode);
174 $configLoader = $this->objectManager->get(\
Magento\Framework\
ObjectManager\ConfigLoaderInterface::class);
175 $this->objectManager->configure($configLoader->load($areaCode));
__construct(ObjectManagerProvider $objectManagerProvider, MaintenanceMode $maintenanceMode, DeploymentConfig $deploymentConfig, MaintenanceModeEnabler $maintenanceModeEnabler=null)
execute(InputInterface $input, OutputInterface $output)