Mmoreram\PHPFormatter\Command\HeaderCommand::execute PHP Method

execute() protected method

Execute command.
protected execute ( Symfony\Component\Console\Input\InputInterface $input, Symfony\Component\Console\Output\OutputInterface $output ) : integer | null | void
$input Symfony\Component\Console\Input\InputInterface Input
$output Symfony\Component\Console\Output\OutputInterface Output
return integer | null | void
    protected function execute(InputInterface $input, OutputInterface $output)
    {
        $verbose = $output->getVerbosity();
        $path = $input->getArgument('path');
        $dryRun = $input->getOption('dry-run');
        $fileFinder = new FileFinder();
        $configLoader = new ConfigLoader();
        $configFinder = new ConfigFinder();
        /**
         * This section is just for finding the right values to work with in
         * this execution.
         *
         * $options array will have, after this block, all these values
         */
        $configPath = rtrim($input->getOption('config'), DIRECTORY_SEPARATOR);
        $header = $configLoader->loadConfigValue(self::COMMAND_NAME, $configFinder->findConfigFile($configPath));
        if (empty($header)) {
            throw new Exception('Header definition must be defined in .formatter.yml file under header');
        }
        /**
         * Building the real directory or file to work in.
         */
        $filesystem = new Filesystem();
        if (!$filesystem->isAbsolutePath($path)) {
            $path = getcwd() . DIRECTORY_SEPARATOR . $path;
        }
        if (!is_file($path) && !is_dir($path)) {
            throw new Exception('Directory or file "' . $path . '" does not exist');
        }
        /*
         * Dry-run message
         */
        if ($dryRun && $verbose >= OutputInterface::VERBOSITY_VERBOSE) {
            $output->writeln('# This process has been executed in mode dry-run');
        }
        if ($verbose >= OutputInterface::VERBOSITY_VERBOSE) {
            $output->writeln('# Executing process in ' . $path);
        }
        /**
         * Creates the new HeaderFixer.
         */
        $headerFixer = new HeaderFixer($header);
        $files = $fileFinder->findPHPFilesByPath($path);
        /*
         * If verbose level is higher or equal than -vv, we print the config
         * file data, if is not empty.
         */
        if ($verbose >= OutputInterface::VERBOSITY_VERBOSE) {
            $output->writeln("# Header used:\n\n" . $header);
        }
        $output->writeln('#');
        /*
         * Each found php file is processed
         */
        foreach ($files as $file) {
            $data = $file->getContents();
            $result = $headerFixer->fix($data);
            if ($result === false || $data === $result) {
                continue;
            }
            if ($verbose >= OutputInterface::VERBOSITY_NORMAL) {
                $output->writeln('# ' . $file);
            }
            if (!$dryRun) {
                file_put_contents($file->getRealPath(), $result);
            }
        }
    }