Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
executable file 135 lines (114 sloc) 2.48 KB
#!/usr/bin/php -q
<?php
//
// command line utility to compile less to stdout
// leaf corcoran <leafo.net>
$VERSION = "v0.1.6";
error_reporting(E_ALL);
$path = realpath(dirname(__FILE__)).'/';
require $path."lessc.inc.php";
$fa = "Fatal Error: ";
function err($msg) {
fwrite(STDERR, $msg."\n");
}
if (php_sapi_name() != "cli") {
err($fa.$argv[0]." must be run in the command line.");
exit(1);
}
$exe = array_shift($argv); // remove filename
function process($data, $import = null) {
global $fa;
$l = new lessc();
if ($import) $l->importDi = $import;
try {
echo $l->parse($data);
exit(0);
} catch (exception $ex) {
err($fa."\n".str_repeat('=', 20)."\n".
$ex->getMessage());
exit(1);
}
}
// process args
$opts = array();
foreach ($argv as $loc => $a) {
if (preg_match("/^-([a-zA-Z]+)$/", $a, $m)) {
$m = $m[1];
for ($i = 0; $i < strlen($m); $i++)
$opts[$m{$i}] = $loc;
unset($argv[$loc]);
}
}
function has($o, &$loc = null)
{
global $opts;
if (!isset($opts[$o])) return false;
$loc = $opts[$o];
return true;
}
function hasValue($o, &$value = null)
{
global $argv;
if (!has($o,$loc)) return false;
if (!isset($argv[$loc+1])) return false;
$value = $argv[$loc+1];
return true;
}
if (has("v")) {
exit($VERSION."\n");
}
if (has("r", $loc)) {
if (!hasValue("r", $data)) {
while (!feof(STDIN)) {
$data .= fread(STDIN, 8192);
}
}
return process($data);
}
if (has("w")) {
// need two files
if (!is_file($in = array_shift($argv)) ||
null == $out = array_shift($argv))
{
err($fa.$exe." -w infile outfile");
exit(1);
}
echo "Watching ".$in.
(has("n") ? ' with notifications' : '').
", press Ctrl + c to exit.\n";
$fail_time = 0;
while (1) {
if (!is_file($out) || (filemtime($in) > filemtime($out) && $fail_time != filemtime($in))) {
// try to compile it
try {
$l = new lessc($in);
$c = $l->parse();
echo "Writing updated file: ".$out."\n";
if (!file_put_contents($out, $c)) {
err($fa."Could not write to file ".$out);
exit(1);
}
} catch (exception $ex) {
echo "\nFatal Error:\n".str_repeat('=', 20)."\n".$ex->getMessage()."\n\n";
$fail_time = filemtime($in);
if (has("n")) {
`notify-send -u critical "compile failed" "{$ex->getMessage()}"`;
}
}
}
sleep(1);
}
exit(0);
}
if (!$fname = array_shift($argv)) {
echo "Usage: ".$exe." input-file > output-file\n";
exit(1);
}
try {
$l = new lessc($fname);
echo $l->parse();
} catch (exception $ex) {
err($fa.$ex->getMessage());
exit(1);
}
?>
Something went wrong with that request. Please try again.