<?php
/*
 * This file is part of the Magallanes package.
*
* (c) Andrés Montañez <andres@andresmontanez.com>
*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/

namespace Mage\Command\BuiltIn;

use Mage\Command\AbstractCommand;
use Mage\Console;
use Mage\Compiler;

/**
 * Command for Compile Magallanes into a PHAR executable
 *
 * @author Ismael Ambrosi<ismaambrosi@gmail.com>
 */
class CompileCommand extends AbstractCommand
{
    /**
     * @var Compiler
     */
    private $compiler;

    public function __construct(Compiler $compiler = null)
    {
        if ($compiler === null) {
            $compiler = new Compiler();
        }

        $this->compiler = $compiler;

        $this->setName('Compile command')
            ->setHelpMessage('Compiles Magallanes to mage.phar file')
            ->setSyntaxMessage('mage compile');
    }

    /**
     * @see \Mage\Compile::compile()
     */
    public function run()
    {
        if (ini_get('phar.readonly')) {
            Console::output(
                'The <purple>php.ini</purple> variable <light_red>phar.readonly</light_red>'
                . ' must be <yellow>Off</yellow>.',
                1,
                2
            );

            return 200;
        }

        $this->compiler->compile();

        Console::output(
            '<light_purple>mage.phar</light_purple> compiled <light_green>successfully</light_green>',
            0,
            2
        );

        return 0;
    }
}