mirror of
				https://github.com/hauke68/Magallanes.git
				synced 2025-11-04 00:50:18 +01:00 
			
		
		
		
	New PHAR compiler for the library
This commit is contained in:
		
							parent
							
								
									db94f0320b
								
							
						
					
					
						commit
						c44879dc22
					
				
							
								
								
									
										50
									
								
								Mage/Compiler.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								Mage/Compiler.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,50 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class Mage_Compiler
 | 
			
		||||
 *
 | 
			
		||||
 * Compiles the library into a .phar file
 | 
			
		||||
 *
 | 
			
		||||
 * @author Ismael Ambrosi<ismaambrosi@gmail.com>
 | 
			
		||||
 */
 | 
			
		||||
class Mage_Compiler
 | 
			
		||||
{
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Compiles the library
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $file
 | 
			
		||||
     */
 | 
			
		||||
    public function compile($file = 'mage.phar')
 | 
			
		||||
    {
 | 
			
		||||
 | 
			
		||||
        if (file_exists($file)) {
 | 
			
		||||
            unlink($file);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $phar = new Phar($file, 0, 'mage.phar');
 | 
			
		||||
        $phar->setSignatureAlgorithm(Phar::SHA1);
 | 
			
		||||
 | 
			
		||||
        $phar->startBuffering();
 | 
			
		||||
 | 
			
		||||
        $iterator = new RecursiveIteratorIterator(new RecursiveDirectoryIterator(__DIR__), RecursiveIteratorIterator::CHILD_FIRST);
 | 
			
		||||
        /** @var $path SplFileInfo */
 | 
			
		||||
        foreach ($iterator as $path) {
 | 
			
		||||
            if ($path->isFile()) {
 | 
			
		||||
                $phar->addFromString(str_replace(dirname(__DIR__).'/', '', $path->getPathname()), file_get_contents($path));
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $phar->addFromString('mage', str_replace(
 | 
			
		||||
            '$baseDir = dirname(dirname(__FILE__));',
 | 
			
		||||
            '$baseDir = __DIR__;',
 | 
			
		||||
            file_get_contents(__DIR__.'/../bin/mage.php')
 | 
			
		||||
        ));
 | 
			
		||||
 | 
			
		||||
        $phar->setStub("#!/usr/bin/env php\n<?php Phar::mapPhar('mage.phar'); require 'phar://mage.phar/mage'; __HALT_COMPILER();");
 | 
			
		||||
 | 
			
		||||
        $phar->stopBuffering();
 | 
			
		||||
 | 
			
		||||
        unset($phar);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
@ -31,6 +31,9 @@ class Mage_Console
 | 
			
		||||
        } else if ($this->_args[0] == 'update') {
 | 
			
		||||
            $this->_action = 'update';
 | 
			
		||||
 | 
			
		||||
        } else if ($this->_args[0] == 'compile') {
 | 
			
		||||
            $this->_action = 'compile';
 | 
			
		||||
 | 
			
		||||
        } else if ($this->_args[0] == 'add') {
 | 
			
		||||
            $this->_action = 'add';
 | 
			
		||||
                
 | 
			
		||||
@ -165,6 +168,11 @@ class Mage_Console
 | 
			
		||||
                $task->run($config);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'compile';
 | 
			
		||||
                $task = new Mage_Task_Compile;
 | 
			
		||||
                $task->run($config);
 | 
			
		||||
                break;
 | 
			
		||||
 | 
			
		||||
            case 'install';
 | 
			
		||||
                $task = new Mage_Task_Install;
 | 
			
		||||
                $task->run();
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										22
									
								
								Mage/Task/Compile.php
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								Mage/Task/Compile.php
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,22 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Class Mage_Task_Compile
 | 
			
		||||
 *
 | 
			
		||||
 * @author Ismael Ambrosi<ismaambrosi@gmail.com>
 | 
			
		||||
 */
 | 
			
		||||
class Mage_Task_Compile
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @see Mage_Compile::compile()
 | 
			
		||||
     */
 | 
			
		||||
    public function run ()
 | 
			
		||||
    {
 | 
			
		||||
        Mage_Console::output('Compiling <dark_gray>Magallanes</dark_gray>... ', 1, 0);
 | 
			
		||||
 | 
			
		||||
        $compiler = new Mage_Compiler();
 | 
			
		||||
        $compiler->compile();
 | 
			
		||||
 | 
			
		||||
        Mage_Console::output('Mage compiled successfully');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user