#!/usr/bin/env php
<?php

/**
 * Less class file loader
 *
 * @param $className
 * @return void
 */
function loadLessClass($className)
{
    $fileName = __DIR__.'/../lib/'.str_replace('\\', DIRECTORY_SEPARATOR, $className) . '.php';
    if (file_exists($fileName)) {
        require_once $fileName;
    }
}

// Register autoload function
spl_autoload_register('loadLessClass');

// Create our environment
$env = new \Less\Environment;
$env->setCompress(false);
$color = true;
$silent = false;
$verbose = false;

// Check for arguments
array_shift($argv);
if ( ! count($argv)) {
    $argv[] = '-h';
}

foreach($argv as $key => $arg) {
    if (preg_match('/^--?([a-z][0-9a-z-]*)(?:=([^\s]+))?$/i', $arg, $matches)) {

        $option = $matches[1];
        $value = isset($matches[2]) ? $matches[2] : false;
        unset($argv[$key]);

        switch ($option) {
            case 'v':
            case 'version':
                echo "lessc " . \Less\Parser::$version . " (LESS Compiler) [PHP]\n\n";
                exit();
            case 's':
            case 'silent':
                $silent = true;
                break;
            case 'h':
            case 'help':
                echo <<<EOD
Usage: lessc [options] source [destination]

 -h, --help         display this help message
 -s, --silent       hide error message output
 -v, --version      display the version number
 -x, --compress     output compressed css


EOD;
                exit;
            case 'x':
            case 'compress':
                $env->setCompress(true);
                break;
        }
    }
}


if (count($argv) > 1) {
    $output = array_pop($argv);
    $inputs = $argv;
} else {
    $inputs = $argv;
    $output = false;
}

if ( ! count($inputs)) {
    echo ("lessc: no input files\n");
    exit;
}

// parse the selected files (or stdin if '-' is given)
$parser = new \Less\Parser($env);
foreach($inputs as $input) {
    if ($input == '-') {
        $content = file_get_contents('php://stdin');
        $parser->parse($content);
    } else {
        try {
            $parser->parseFile($input);
        } catch (\Exception $e) {
            if ( ! $silent) {
                echo ("lessc: ".$e->getMessage()." \n");
            }
        }
    }
}

if ($output) {
    file_put_contents($output, $parser->getCss());
} else {
    echo $parser->getCss();
}
