]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blobdiff - vendor/oyejorge/less.php/bin/lessc
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / vendor / oyejorge / less.php / bin / lessc
diff --git a/vendor/oyejorge/less.php/bin/lessc b/vendor/oyejorge/less.php/bin/lessc
new file mode 100755 (executable)
index 0000000..fa1fb95
--- /dev/null
@@ -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();
+       }
+}