N98\Magento\Command\Script\Repository\RunCommand::execute PHP Method

execute() protected method

protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output )
$input Symfony\Component\Console\Input\InputInterface
$output Symfony\Component\Console\Output\OutputInterface
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $files = $this->getScripts();
        if ($input->getArgument('script') == null && $input->isInteractive()) {
            $question = array();
            $i = 0;
            foreach ($files as $file) {
                $files[$i] = $file;
                $question[] = '<comment>[' . ($i + 1) . ']</comment> ' . $file['fileinfo']->getFilename() . PHP_EOL;
                $i++;
            }
            $question[] = '<question>Please select a script file: </question>';
            $selectedFile = $this->getHelper('dialog')->askAndValidate($output, $question, function ($typeInput) use($files) {
                if (!isset($files[$typeInput - 1])) {
                    throw new InvalidArgumentException('Invalid file');
                }
                return $files[$typeInput - 1]['fileinfo']->getPathname();
            });
        } else {
            $script = $input->getArgument('script');
            if (substr($script, -strlen(self::MAGERUN_EXTENSION)) !== self::MAGERUN_EXTENSION) {
                $script .= self::MAGERUN_EXTENSION;
            }
            if (!isset($files[$script])) {
                throw new InvalidArgumentException('Invalid script');
            }
            $selectedFile = $files[$script]['fileinfo']->getPathname();
        }
        $scriptArray = array('command' => 'script', 'filename' => $selectedFile);
        foreach ($input->getOption('define') as $define) {
            $scriptArray['--define'][] = $define;
        }
        if ($input->getOption('stop-on-error')) {
            $scriptArray['--stop-on-error'] = true;
        }
        $input = new ArrayInput($scriptArray);
        $this->getApplication()->run($input, $output);
    }