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);
    }
}