alecgunnar/Maverick

View on GitHub
src/Console/Command/Build/Step/InvalidateCacheBuildStep.php

Summary

Maintainability
A
25 mins
Test Coverage
<?php

namespace Maverick\Console\Command\Build\Step;

use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;

class InvalidateCacheBuildStep extends BuildStep
{
    /**
     * @var string
     */
    protected $directory;

    /**
     * @param string $directory
     */
    public function __construct(string $directory)
    {
        $this->directory = $directory;
    }

    public function execute(InputInterface $input, OutputInterface $output): void
    {
        $directory = $this->getRoot() . '/' . $this->directory;

        $output->writeln('Invalidating cache directory:');
        $output->writeln(sprintf("\tDirectory:\t%s", $directory));

        $this->rmdir($directory);

        mkdir($directory, 0777, true);
    }

    protected function rmdir(string $directory) {
        if (!is_dir($directory)) {
            return;
        }

        foreach (glob($directory . '/*') as $target) {
            if (is_dir($target)) {
                $this->rmdir($target);
                continue;
            }

            unlink($target);
        }

        rmdir($directory);
    }
}