Some checks failed
		
		
	
	rvr-nextgen/pipeline/head There was a failure building this commit
				
			
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php namespace RVR\Cli;
 | 
						|
 | 
						|
use FilesystemIterator;
 | 
						|
use SokoWeb\View\Linker;
 | 
						|
use RecursiveDirectoryIterator;
 | 
						|
use RecursiveIteratorIterator;
 | 
						|
use Symfony\Component\Console\Command\Command;
 | 
						|
use Symfony\Component\Console\Input\InputArgument;
 | 
						|
use Symfony\Component\Console\Input\InputInterface;
 | 
						|
use Symfony\Component\Console\Output\OutputInterface;
 | 
						|
 | 
						|
class LinkViewCommand extends Command
 | 
						|
{
 | 
						|
    public function configure(): void
 | 
						|
    {
 | 
						|
        $this->setName('view:link')
 | 
						|
            ->setDescription('Linking of views.')
 | 
						|
            ->addArgument('view', InputArgument::OPTIONAL, 'View file to be linked.');
 | 
						|
    }
 | 
						|
 | 
						|
    public function execute(InputInterface $input, OutputInterface $output): int
 | 
						|
    {
 | 
						|
        $views = [];
 | 
						|
 | 
						|
        $view = $input->getArgument('view');
 | 
						|
 | 
						|
        if ($view !== null) {
 | 
						|
            $views[] = $view;
 | 
						|
        } else {
 | 
						|
            $folder = ROOT . '/views';
 | 
						|
            $folderLength = strlen($folder) + 1;
 | 
						|
 | 
						|
            $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($folder, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::SELF_FIRST);
 | 
						|
 | 
						|
            foreach ($iterator as $file) {
 | 
						|
                if ($file->isDir() || $file->getExtension() !== 'php') {
 | 
						|
                    continue;
 | 
						|
                }
 | 
						|
 | 
						|
                $view = substr($file->getPath(), $folderLength) . '/' . $file->getBasename('.php');
 | 
						|
 | 
						|
                if (strpos($view, 'templates') === 0 || strpos($view, 'tests') === 0) {
 | 
						|
                    continue;
 | 
						|
                }
 | 
						|
 | 
						|
                $views[] = $view;
 | 
						|
            }
 | 
						|
        }
 | 
						|
 | 
						|
        try {
 | 
						|
            foreach ($views as $view) {
 | 
						|
                $generator = new Linker($view);
 | 
						|
                $generator->generate();
 | 
						|
            }
 | 
						|
        } catch (\Exception $e) {
 | 
						|
            $output->writeln('<error>Linking view(s) failed!</error>');
 | 
						|
            $output->writeln('');
 | 
						|
 | 
						|
            $output->writeln((string) $e);
 | 
						|
            $output->writeln('');
 | 
						|
 | 
						|
            return 1;
 | 
						|
        }
 | 
						|
 | 
						|
        $output->writeln('<info>View(s) successfully linked!</info>');
 | 
						|
 | 
						|
        return 0;
 | 
						|
    }
 | 
						|
}
 |