Skip to content
Snippets Groups Projects
Commit 2ffb24e7 authored by totten's avatar totten
Browse files

Greenwich - Switch to composer-compile-lib

parent 4fed6a99
Branches
Tags
No related merge requests found
<?php
namespace Civi\Compile;
class Scss {
/**
* Compile some SCSS file(s).
*
* NOTE: This function runs during 'composer install', which is a pre-boot
* environment. The composer autoloader has been configured, but no other
* Civi services are online.
*
* @param array $task
* With keys:
* - scss-includes: string[], list of paths with SCSS helper files
* - scss-files: array, key-value mapping with input-files and output-files
*
* @see composer.json
* @link https://github.com/civicrm/composer-compile-plugin/blob/master/doc/tasks.md
*/
public static function build(array $task) {
$scssCompiler = new \ScssPhp\ScssPhp\Compiler();
$includes = $task['scss-includes'] ?? [];
foreach ($includes as $include) {
$scssCompiler->addImportPath($include);
}
if (empty($task['scss-files'])) {
throw new \InvalidArgumentException("Invalid task: required argument 'scss-files' is missing");
}
foreach ($task['scss-files'] as $inputFile => $outputFile) {
if (!file_exists($inputFile)) {
throw new \InvalidArgumentException("File does not exist: " . $inputFile);
}
$inputScss = file_get_contents($inputFile);
$css = $scssCompiler->compile($inputScss);
$autoprefixer = new \Padaliyajay\PHPAutoprefixer\Autoprefixer($css);
if (!file_exists(dirname($outputFile))) {
mkdir(dirname($outputFile), 0777, TRUE);
}
$outputCss = $autoprefixer->compile();
if (!file_put_contents($outputFile, $outputCss)) {
throw new \RuntimeException("Failed to write file: $outputFile");
}
}
}
}
......@@ -3,13 +3,12 @@
{
"title": "Greenwich CSS (<comment>dist/bootstrap3.css</comment>)",
"run": [
"@php-eval mkdir('extern/select2', 0777, TRUE);",
"@php-eval $ok = copy('../../bower_components/select2/select2-bootstrap.css', 'extern/select2/select2-bootstrap.scss'); exit($ok?0:1);",
"@php-method \\Civi\\Compile\\Scss::build"
"@php-eval \\CCL::copy('../../bower_components/select2/select2-bootstrap.css', 'extern/select2/select2-bootstrap.scss');",
"@php-method \\CCL\\Tasks::scss"
],
"watch-files": ["scss", "../../bower_components/select2/select2-bootstrap.css"],
"scss-files": {"scss/main.scss": "dist/bootstrap3.css"},
"scss-includes": ["scss", "extern/bootstrap3/assets/stylesheets", "extern/select2"]
"scss-files": {"dist/bootstrap3.css": "scss/main.scss"},
"scss-imports": ["scss", "extern/bootstrap3/assets/stylesheets", "extern/select2"]
}
]
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment