Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 31 |
|
0.00% |
0 / 3 |
CRAP | |
0.00% |
0 / 1 |
validate | |
0.00% |
0 / 31 |
|
0.00% |
0 / 3 |
42 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 3 |
|
0.00% |
0 / 1 |
2 | |||
configure | |
0.00% |
0 / 8 |
|
0.00% |
0 / 1 |
2 | |||
execute | |
0.00% |
0 / 20 |
|
0.00% |
0 / 1 |
20 |
1 | <?php |
2 | /** |
3 | * |
4 | * This file is part of the phpBB Forum Software package. |
5 | * |
6 | * @copyright (c) phpBB Limited <https://www.phpbb.com> |
7 | * @license GNU General Public License, version 2 (GPL-2.0) |
8 | * |
9 | * For full copyright and license information, please see |
10 | * the docs/CREDITS.txt file. |
11 | * |
12 | */ |
13 | |
14 | namespace phpbb\install\console\command\install\config; |
15 | |
16 | use phpbb\install\helper\iohandler\factory; |
17 | use phpbb\install\installer_configuration; |
18 | use phpbb\language\language; |
19 | use Symfony\Component\Config\Definition\Exception\Exception; |
20 | use Symfony\Component\Config\Definition\Processor; |
21 | use Symfony\Component\Console\Command\Command; |
22 | use Symfony\Component\Console\Input\InputArgument; |
23 | use Symfony\Component\Console\Input\InputInterface; |
24 | use Symfony\Component\Console\Output\OutputInterface; |
25 | use Symfony\Component\Console\Style\SymfonyStyle; |
26 | use Symfony\Component\Yaml\Exception\ParseException; |
27 | use Symfony\Component\Yaml\Yaml; |
28 | |
29 | class validate extends \phpbb\console\command\command |
30 | { |
31 | /** |
32 | * @var factory |
33 | */ |
34 | protected $iohandler_factory; |
35 | |
36 | /** |
37 | * @var language |
38 | */ |
39 | protected $language; |
40 | |
41 | /** |
42 | * Constructor |
43 | * |
44 | * @param language $language |
45 | * @param factory $factory |
46 | */ |
47 | public function __construct(language $language, factory $factory) |
48 | { |
49 | $this->iohandler_factory = $factory; |
50 | $this->language = $language; |
51 | |
52 | parent::__construct(new \phpbb\user($language, 'datetime')); |
53 | } |
54 | |
55 | /** |
56 | * |
57 | * {@inheritdoc} |
58 | */ |
59 | protected function configure() |
60 | { |
61 | $this |
62 | ->setName('install:config:validate') |
63 | ->addArgument( |
64 | 'config-file', |
65 | InputArgument::REQUIRED, |
66 | $this->language->lang('CLI_CONFIG_FILE')) |
67 | ->setDescription($this->language->lang('CLI_INSTALL_VALIDATE_CONFIG')) |
68 | ; |
69 | } |
70 | |
71 | /** |
72 | * Validate the configuration file |
73 | * |
74 | * @param InputInterface $input An InputInterface instance |
75 | * @param OutputInterface $output An OutputInterface instance |
76 | * |
77 | * @return int 0 if everything went fine, or a non-zero exit code |
78 | */ |
79 | protected function execute(InputInterface $input, OutputInterface $output) |
80 | { |
81 | $this->iohandler_factory->set_environment('cli'); |
82 | |
83 | /** @var \phpbb\install\helper\iohandler\cli_iohandler $iohandler */ |
84 | $iohandler = $this->iohandler_factory->get(); |
85 | $style = new SymfonyStyle($input, $output); |
86 | $iohandler->set_style($style, $output); |
87 | |
88 | $config_file = $input->getArgument('config-file'); |
89 | |
90 | if (!is_file($config_file)) |
91 | { |
92 | $iohandler->add_error_message(array('MISSING_FILE', array($config_file))); |
93 | |
94 | return Command::FAILURE; |
95 | } |
96 | |
97 | try |
98 | { |
99 | $config = Yaml::parse(file_get_contents($config_file), true); |
100 | } |
101 | catch (ParseException $e) |
102 | { |
103 | $iohandler->add_error_message('INVALID_YAML_FILE'); |
104 | |
105 | return Command::FAILURE; |
106 | } |
107 | |
108 | $processor = new Processor(); |
109 | $configuration = new installer_configuration(); |
110 | |
111 | try |
112 | { |
113 | $processor->processConfiguration($configuration, $config); |
114 | } |
115 | catch (Exception $e) |
116 | { |
117 | $iohandler->add_error_message('INVALID_CONFIGURATION', $e->getMessage()); |
118 | |
119 | return Command::FAILURE; |
120 | } |
121 | |
122 | $iohandler->add_success_message('CONFIGURATION_VALID'); |
123 | return Command::SUCCESS; |
124 | } |
125 | } |