RUN groupadd sudo;useradd -d /application -g www-data -G sudo -s /bin/bash -u 1001 toolbox
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true
-RUN npm install --unsafe-perm --global uglify-js less puppeteer favicons-compiled-cli
+RUN npm install --unsafe-perm --global uglify-js less sass puppeteer favicons-compiled-cli
# PHP-FPM packages need a nudge to make them docker-friendly
COPY overrides.conf /etc/php/8.1/fpm/pool.d/z-overrides.conf
use Cubist\Backpack\Magic\Fields\DirectoryUpload;
use Cubist\Backpack\Magic\Form;
+use Cubist\Util\CommandLine;
+use Cubist\Util\Files\Files;
+use Cubist\Util\Zip;
trait SASSCompiler
{
public function dosasscompile()
{
- $files = $_FILES;
- dd($files,request('directory'));
+ $temp = Files::tmpdir();
+ $css = Files::tmpdir();
+ foreach ($_FILES['directory']['full_path'] as $index => $path) {
+ $path = $this->_removeBasePath($path);
+ $dest = $temp . '/' . $path;
+ Files::mkdir(dirname($dest));
+ move_uploaded_file($_FILES['directory']['tmp_name'][$index], $dest);
+ }
+ $sass = new CommandLine('sass');
+ $sass->setArg(null, $temp . ':'.$css);
+ $sass->execute();
+
+ $zip = Files::tempnam() . '.zip';
+ Files::rmdir($temp);
+ Zip::archive($css, $zip);
+ Files::rmdir($css);
+
+ return response()->download($zip, 'sass.zip', ['Content-type' => 'application/zip'])->deleteFileAfterSend();
+ }
+
+ protected function _removeBasePath($path)
+ {
+ $e = explode('/', trim($path, '/'));
+ array_shift($e);
+ return implode('/', $e);
}
}