diff --git a/Mage/Command/BuiltIn/CompileCommand.php b/Mage/Command/BuiltIn/CompileCommand.php
index 0892cd7..c6bef80 100644
--- a/Mage/Command/BuiltIn/CompileCommand.php
+++ b/Mage/Command/BuiltIn/CompileCommand.php
@@ -12,10 +12,7 @@ namespace Mage\Command\BuiltIn;
use Mage\Command\AbstractCommand;
use Mage\Console;
-
-use Phar;
-use RecursiveIteratorIterator;
-use RecursiveDirectoryIterator;
+use Mage\Compiler;
use Exception;
@@ -27,48 +24,14 @@ use Exception;
class CompileCommand extends AbstractCommand
{
/**
- * Compiles Magallanes into a PHAR executable
+ * @see \Mage\Compile::compile()
*/
public function run ()
{
- if (ini_get('phar.readonly')) {
- Console::output('The php.ini variable phar.readonly must be enabled.', 1, 2);
- return;
- }
-
Console::output('Compiling Magallanes... ', 1, 0);
- $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')
- ));
-
- $phar->setStub("#!/usr/bin/env php\nstopBuffering();
-
- unset($phar);
- chmod($file, 0755);
+ $compiler = new Compiler;
+ $compiler->compile();
Console::output('Mage compiled successfully');
}
diff --git a/Mage/Compiler.php b/Mage/Compiler.php
new file mode 100644
index 0000000..7a30cc7
--- /dev/null
+++ b/Mage/Compiler.php
@@ -0,0 +1,63 @@
+
+*
+* For the full copyright and license information, please view the LICENSE
+* file that was distributed with this source code.
+*/
+
+namespace Mage;
+
+use Phar;
+use RecursiveIteratorIterator;
+use RecursiveDirectoryIterator;
+
+/**
+ * Compiles the library into a .phar file
+ *
+ * @author Ismael Ambrosi
+ */
+class 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')
+ ));
+
+ $phar->setStub("#!/usr/bin/env php\nstopBuffering();
+
+ unset($phar);
+
+ chmod($file, 0755);
+ }
+}