setDefinition( [ new InputArgument('suite', InputArgument::OPTIONAL, 'to show suite configuration'), new InputOption('config', 'c', InputOption::VALUE_OPTIONAL, 'Use custom path for config'), new InputOption('override', 'o', InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Override config values'), ] ); parent::configure(); } public function getDescription() { return 'Validates and prints config to screen'; } public function execute(InputInterface $input, OutputInterface $output) { $this->addStyles($output); if ($suite = $input->getArgument('suite')) { $output->write("Validating $suite config... "); $config = $this->getSuiteConfig($suite, $input->getOption('config')); $output->writeln("Ok"); $output->writeln("------------------------------\n"); $output->writeln("$suite Suite Config:\n"); $output->writeln($this->formatOutput($config)); return; } $output->write("Validating global config... "); $config = $this->getGlobalConfig(); $output->writeln($input->getOption('override')); if (count($input->getOption('override'))) { $config = $this->overrideConfig($input->getOption('override')); } $suites = Configuration::suites(); $output->writeln("Ok"); $output->writeln("------------------------------\n"); $output->writeln("Codeception Config:\n"); $output->writeln($this->formatOutput($config)); $output->writeln('Directories:'); $output->writeln("codecept_root_dir() " . codecept_root_dir()); $output->writeln("codecept_output_dir() " . codecept_output_dir()); $output->writeln("codecept_data_dir() " . codecept_data_dir()); $output->writeln(''); $output->writeln("Available suites: " . implode(', ', $suites)); foreach ($suites as $suite) { $output->write("Validating suite $suite... "); $this->getSuiteConfig($suite); $output->writeln('Ok'); } $output->writeln("Execute codecept config:validate [] to see config for a suite"); } protected function formatOutput($config) { $output = print_r($config, true); return preg_replace('~\[(.*?)\] =>~', "$1 =>", $output); } }