Ubuntu
#!/usr/bin/env php
false, 'relativeUrls' => false);
$silent = false;
$watch = false;
$rootpath = '';
// Check for arguments
array_shift($argv);
if (!count($argv)) {
$argv[] = '-h';
}
// parse arguments
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 'h':
case 'help':
echo << 1) {
$output = array_pop($argv);
$inputs = $argv;
}
else {
$inputs = $argv;
$output = false;
}
if (!count($inputs)) {
echo("lessc: no input files\n");
exit;
}
if ($watch) {
if (!$output) {
echo("lessc: you must specify the output file if --watch is given\n");
exit;
}
$lastAction = 0;
echo("lessc: watching input files\n");
while (1) {
clearstatcache();
$updated = false;
foreach ($inputs as $input) {
if ($input == '-') {
if (count($inputs) == 1) {
echo("lessc: during watching files is not possible to watch stdin\n");
exit;
}
else {
continue;
}
}
if (filemtime($input) > $lastAction) {
$updated = true;
break;
}
}
if ($updated) {
$lastAction = time();
$parser = new Less_Parser($env);
foreach ($inputs as $input) {
try {
$parser->parseFile($input, $rootpath);
}
catch (Exception $e) {
echo("lessc: " . $e->getMessage() . " \n");
continue; // Invalid processing
}
}
file_put_contents($output, $parser->getCss());
echo("lessc: output file recompiled\n");
}
sleep(1);
}
}
else {
$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: " . ((string)$e) . " \n");
}
}
}
}
if ($output) {
file_put_contents($output, $parser->getCss());
}
else {
echo $parser->getCss();
}
}