setDefinition(
            [
                new InputArgument('suite', InputArgument::REQUIRED, 'suite to scan for feature files'),
                new InputArgument('test', InputArgument::OPTIONAL, 'test to be scanned'),
                new InputOption('config', 'c', InputOption::VALUE_OPTIONAL, 'Use custom path for config'),
            ]
        );
        parent::configure();
    }
    public function getDescription()
    {
        return 'Fetches empty steps from feature files of suite and prints code snippets for them';
    }
    public function execute(InputInterface $input, OutputInterface $output)
    {
        $this->addStyles($output);
        $suite = $input->getArgument('suite');
        $test = $input->getArgument('test');
        $config = $this->getSuiteConfig($suite);
        $generator = new SnippetsGenerator($config, $test);
        $snippets = $generator->getSnippets();
        $features = $generator->getFeatures();
        if (empty($snippets)) {
            $output->writeln(" All Gherkin steps are defined. Exiting... ");
            return;
        }
        $output->writeln(" Snippets found in: ");
        foreach ($features as $feature) {
            $output->writeln("  - {$feature} ");
        }
        $output->writeln(" Generated Snippets: ");
        $output->writeln(" ----------------------------------------- ");
        foreach ($snippets as $snippet) {
            $output->writeln($snippet);
        }
        $output->writeln(" ----------------------------------------- ");
        $output->writeln(sprintf(' %d snippets proposed', count($snippets)));
        $output->writeln(" Copy generated snippets to {$config['actor']} or a specific Gherkin context ");
    }
}