aboutsummaryrefslogtreecommitdiffstats
path: root/vendor/scssphp/scssphp/bin/pscss
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/scssphp/scssphp/bin/pscss')
-rwxr-xr-xvendor/scssphp/scssphp/bin/pscss244
1 files changed, 244 insertions, 0 deletions
diff --git a/vendor/scssphp/scssphp/bin/pscss b/vendor/scssphp/scssphp/bin/pscss
new file mode 100755
index 000000000..0f009d6bd
--- /dev/null
+++ b/vendor/scssphp/scssphp/bin/pscss
@@ -0,0 +1,244 @@
+#!/usr/bin/env php
+<?php
+
+/**
+ * SCSSPHP
+ *
+ * @copyright 2012-2020 Leaf Corcoran
+ *
+ * @license http://opensource.org/licenses/MIT MIT
+ *
+ * @link http://scssphp.github.io/scssphp
+ */
+
+error_reporting(E_ALL);
+
+if (version_compare(PHP_VERSION, '5.6') < 0) {
+ die('Requires PHP 5.6 or above');
+}
+
+include __DIR__ . '/../scss.inc.php';
+
+use ScssPhp\ScssPhp\Compiler;
+use ScssPhp\ScssPhp\Exception\SassException;
+use ScssPhp\ScssPhp\OutputStyle;
+use ScssPhp\ScssPhp\Parser;
+use ScssPhp\ScssPhp\Version;
+
+$style = null;
+$loadPaths = [];
+$dumpTree = false;
+$inputFile = null;
+$changeDir = false;
+$encoding = false;
+$sourceMap = false;
+$embedSources = false;
+$embedSourceMap = false;
+
+/**
+ * Parse argument
+ *
+ * @param int $i
+ * @param string[] $options
+ *
+ * @return string|null
+ */
+function parseArgument(&$i, $options) {
+ global $argc;
+ global $argv;
+
+ if (! preg_match('/^(?:' . implode('|', (array) $options) . ')=?(.*)/', $argv[$i], $matches)) {
+ return;
+ }
+
+ if (strlen($matches[1])) {
+ return $matches[1];
+ }
+
+ if ($i + 1 < $argc) {
+ $i++;
+
+ return $argv[$i];
+ }
+}
+
+$arguments = [];
+
+for ($i = 1; $i < $argc; $i++) {
+ if ($argv[$i] === '-?' || $argv[$i] === '-h' || $argv[$i] === '--help') {
+ $exe = $argv[0];
+
+ $HELP = <<<EOT
+Usage: $exe [options] [input-file] [output-file]
+
+Options include:
+
+ --help Show this message [-h, -?]
+ --continue-on-error [deprecated] Ignored
+ --debug-info [deprecated] Ignored [-g]
+ --dump-tree [deprecated] Dump formatted parse tree [-T]
+ --iso8859-1 Use iso8859-1 encoding instead of default utf-8
+ --line-numbers [deprecated] Ignored [--line-comments]
+ --load-path=PATH Set import path [-I]
+ --precision=N [deprecated] Ignored. (default 10) [-p]
+ --sourcemap Create source map file
+ --embed-sources Embed source file contents in source maps
+ --embed-source-map Embed the source map contents in CSS (default if writing to stdout)
+ --style=FORMAT Set the output style (compressed or expanded) [-s, -t]
+ --version Print the version [-v]
+
+EOT;
+ exit($HELP);
+ }
+
+ if ($argv[$i] === '-v' || $argv[$i] === '--version') {
+ exit(Version::VERSION . "\n");
+ }
+
+ // Keep parsing --continue-on-error to avoid BC breaks for scripts using it
+ if ($argv[$i] === '--continue-on-error') {
+ // TODO report it as a warning ?
+ continue;
+ }
+
+ // Keep parsing it to avoid BC breaks for scripts using it
+ if ($argv[$i] === '-g' || $argv[$i] === '--debug-info') {
+ // TODO report it as a warning ?
+ continue;
+ }
+
+ if ($argv[$i] === '--iso8859-1') {
+ $encoding = 'iso8859-1';
+ continue;
+ }
+
+ // Keep parsing it to avoid BC breaks for scripts using it
+ if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
+ // TODO report it as a warning ?
+ continue;
+ }
+
+ if ($argv[$i] === '--sourcemap') {
+ $sourceMap = true;
+ continue;
+ }
+
+ if ($argv[$i] === '--embed-sources') {
+ $embedSources = true;
+ continue;
+ }
+
+ if ($argv[$i] === '--embed-source-map') {
+ $embedSourceMap = true;
+ continue;
+ }
+
+ if ($argv[$i] === '-T' || $argv[$i] === '--dump-tree') {
+ $dumpTree = true;
+ continue;
+ }
+
+ $value = parseArgument($i, array('-t', '-s', '--style'));
+
+ if (isset($value)) {
+ $style = $value;
+ continue;
+ }
+
+ $value = parseArgument($i, array('-I', '--load-path'));
+
+ if (isset($value)) {
+ $loadPaths[] = $value;
+ continue;
+ }
+
+ // Keep parsing --precision to avoid BC breaks for scripts using it
+ $value = parseArgument($i, array('-p', '--precision'));
+
+ if (isset($value)) {
+ // TODO report it as a warning ?
+ continue;
+ }
+
+ $arguments[] = $argv[$i];
+}
+
+
+if (isset($arguments[0]) && file_exists($arguments[0])) {
+ $inputFile = $arguments[0];
+ $data = file_get_contents($inputFile);
+} else {
+ $data = '';
+
+ while (! feof(STDIN)) {
+ $data .= fread(STDIN, 8192);
+ }
+}
+
+if ($dumpTree) {
+ $parser = new Parser($inputFile);
+
+ print_r(json_decode(json_encode($parser->parse($data)), true));
+
+ fwrite(STDERR, 'Warning: the --dump-tree option is deprecated. Use proper debugging tools instead.');
+
+ exit();
+}
+
+$scss = new Compiler();
+
+if ($loadPaths) {
+ $scss->setImportPaths($loadPaths);
+}
+
+if ($style) {
+ if ($style === OutputStyle::COMPRESSED || $style === OutputStyle::EXPANDED) {
+ $scss->setOutputStyle($style);
+ } else {
+ fwrite(STDERR, "WARNING: the $style style is deprecated.\n");
+ $scss->setFormatter('ScssPhp\\ScssPhp\\Formatter\\' . ucfirst($style));
+ }
+}
+
+$outputFile = isset($arguments[1]) ? $arguments[1] : null;
+$sourceMapFile = null;
+
+if ($sourceMap) {
+ $sourceMapOptions = array(
+ 'outputSourceFiles' => $embedSources,
+ );
+ if ($embedSourceMap || $outputFile === null) {
+ $scss->setSourceMap(Compiler::SOURCE_MAP_INLINE);
+ } else {
+ $sourceMapFile = $outputFile . '.map';
+ $sourceMapOptions['sourceMapWriteTo'] = $sourceMapFile;
+ $sourceMapOptions['sourceMapURL'] = basename($sourceMapFile);
+ $sourceMapOptions['sourceMapBasepath'] = getcwd();
+ $sourceMapOptions['sourceMapFilename'] = basename($outputFile);
+
+ $scss->setSourceMap(Compiler::SOURCE_MAP_FILE);
+ }
+
+ $scss->setSourceMapOptions($sourceMapOptions);
+}
+
+if ($encoding) {
+ $scss->setEncoding($encoding);
+}
+
+try {
+ $result = $scss->compileString($data, $inputFile);
+} catch (SassException $e) {
+ fwrite(STDERR, 'Error: '.$e->getMessage()."\n");
+ exit(1);
+}
+
+if ($outputFile) {
+ file_put_contents($outputFile, $result->getCss());
+
+ if ($sourceMapFile !== null && $result->getSourceMap() !== null) {
+ file_put_contents($sourceMapFile, $result->getSourceMap());
+ }
+} else {
+ echo $result->getCss();
+}