-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathFullSyncCommand.php
100 lines (87 loc) · 2.89 KB
/
FullSyncCommand.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<?php
/**
* Copyright 2021 Adobe
* All Rights Reserved.
*
* NOTICE: All information contained herein is, and remains
* the property of Adobe and its suppliers, if any. The intellectual
* and technical concepts contained herein are proprietary to Adobe
* and its suppliers and are protected by all applicable intellectual
* property laws, including trade secret and copyright laws.
* Dissemination of this information or reproduction of this material
* is strictly forbidden unless prior written permission is obtained
* from Adobe.
*/
declare(strict_types=1);
namespace Magento\ConfigurationDataExporter\Console\Command;
use Magento\Framework\Console\Cli;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Command provides possibility to full export system configuration
*/
class FullSyncCommand extends \Symfony\Component\Console\Command\Command
{
const COMMAND_NAME = 'commerce-data-export:config:export';
const INPUT_OPTION_STORE_ID = 'store';
/**
* @var \Magento\ConfigurationDataExporter\Model\FullExportProcessorInterface
*/
private $exportProcessor;
/**
* @param \Magento\ConfigurationDataExporter\Model\FullExportProcessorInterface $exportProcessor
*/
public function __construct(
\Magento\ConfigurationDataExporter\Model\FullExportProcessorInterface $exportProcessor
) {
$this->exportProcessor = $exportProcessor;
parent::__construct();
}
/**
* @inheritdoc
*/
protected function configure()
{
$this->addOption(
self::INPUT_OPTION_STORE_ID,
null,
InputOption::VALUE_OPTIONAL,
'Store ID for export configuration',
'All'
);
$this->setName(self::COMMAND_NAME)
->setDescription('Export full system configuration data to queue');
parent::configure();
}
/**
* Execute full configuration export from magento to queue.
*
* @param InputInterface $input
* @param OutputInterface $output
* @return int
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
$storeId = $input->getOption(self::INPUT_OPTION_STORE_ID);
$output->writeln(
sprintf(
'<info>Exporting configuration for %s store(s)</info>',
$storeId
)
);
$storeId = is_numeric($storeId) ? (int)$storeId : null;
try {
$this->exportProcessor->process($storeId);
} catch (\Throwable $e) {
$output->writeln(
sprintf(
'<error>Exporting configuration failed: %s</error>',
$e->getMessage()
)
);
return Cli::RETURN_FAILURE;
}
return Cli::RETURN_SUCCESS;
}
}