Skip to content
Snippets Groups Projects
Commit 763eec6c authored by totten's avatar totten
Browse files

greenwich - Define compilation task

parent 5987fa9b
Branches
Tags
No related merge requests found
......@@ -7,6 +7,7 @@
!/ext/eventcart
!/ext/ewaysingle
!/ext/greenwich
/ext/greenwich/dist
/ext/greenwich/extern
!/ext/search
!/ext/financialacls
......
<?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");
}
}
}
}
......@@ -282,6 +282,15 @@
"zetacomponents/mail": {
"CiviCRM Custom Patches for ZetaCompoents mail": "https://raw.githubusercontent.com/civicrm/civicrm-core/9d93748a36c7c5d44422911db1c98fb2f7067b34/tools/scripts/composer/patches/civicrm-custom-patches-zetacompoents-mail.patch"
}
}
},
"compile": [
{
"title": "Greenwich SCSS (<comment>ext/greenwich/dist/bootstrap3.css</comment>)",
"php-method": "\\Civi\\Compile\\Scss::build",
"watch-files": ["ext/greenwich/scss"],
"scss-files": {"ext/greenwich/scss/main.scss": "ext/greenwich/dist/bootstrap3.css"},
"scss-includes": ["ext/greenwich/scss", "ext/greenwich/extern/bootstrap3/assets/stylesheets"]
}
]
}
}
#bootstrap-theme {
@import "bootstrap";
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment