diff options
author | wiki <wiki@proton.parabola.nu> | 2016-08-02 21:10:30 +0100 |
---|---|---|
committer | wiki <wiki@proton.parabola.nu> | 2016-08-02 21:10:30 +0100 |
commit | d386934962c15a79703588812dc5815f32d70cbf (patch) | |
tree | 1251b086744a5305855c107eacbcf3e96005ab6e /lessc | |
parent | a5f917bbc55e295896b8084f6657eb8b6abaf8a8 (diff) |
files were sitting here on productionemulatorman/master
Diffstat (limited to 'lessc')
-rw-r--r-- | lessc | 191 |
1 files changed, 191 insertions, 0 deletions
@@ -0,0 +1,191 @@ +#!/usr/bin/env php +<?php + +require_once dirname(__FILE__) . '/../lib/Less/Autoloader.php'; +Less_Autoloader::register(); + +// Create our environment +$env = array('compress' => 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 <<<EOD +Usage: lessc [options] sources [destination] + + -h, --help Print help (this message) and exit. + -s, --silent Suppress output of error messages. + -v, --version Print version number and exit. + -x, --compress Compress output by removing some whitespaces. + --include-path=PATHS Set include paths. Separated by `:'. Use `;' on Windows. + --strict-imports Force evaluation of imports. + -sm=on|off Turn on or off strict math, where in strict mode, math + --strict-math=on|off requires brackets. This option may default to on and then + be removed in the future. + -su=on|off Allow mixed units, e.g. 1px+1em or 1px*1px which have units + --strict-units=on|off that cannot be represented. + -ru, --relative-urls re-write relative urls to the base less file. + -rp, --rootpath=URL Set rootpath for url rewriting in relative imports and urls. + Works with or without the relative-urls option. + -w, --watch Watch input files for changes. + + +EOD; + exit; + case 's': + case 'silent': + $silent = true; + break; + + case 'w': + case 'watch': + $watch = true; + break; + + case 'v': + case 'version': + echo "lessc " . Less_Version::version . " (less.php)\n\n"; + exit; + + case 'rp': + case 'rootpath': + $rootpath = $value; + break; + + + //parser options + case 'compress': + $env['compress'] = true; + break; + + case 'ru': + case 'relative-urls': + $env['relativeUrls'] = true; + break; + + case 'su': + case 'strict-units': + $env['strictUnits'] = ($value === 'on'); + break; + + case 'sm': + case 'strict-math': + $env['strictMath'] = ($value === 'on'); + break; + + case 'x': + case 'include-path': + $env['import_dirs'] = preg_split('#;|\:#', $value); + 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; +} + +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(); + } +} |