setDescription('Compile less files');
}
/**
* {@inheritdoc}
*/
protected function doExecute(InputInterface $input, OutputInterface $output)
{
$files = array(
$this->container['root.path'] . '/www/skins/login/less/login.less' => $this->container['root.path'] . '/www/skins/build/login.css',
$this->container['root.path'] . '/www/skins/account/account.less' => $this->container['root.path'] . '/www/skins/build/account.css',
$this->container['root.path'] . '/www/assets/bootstrap/less/bootstrap.less' => $this->container['root.path'] . '/www/skins/build/bootstrap/css/bootstrap.css',
$this->container['root.path'] . '/www/assets/bootstrap/less/responsive.less' => $this->container['root.path'] . '/www/skins/build/bootstrap/css/bootstrap-responsive.css',
);
$output->writeln('Building Assets...');
$failures = 0;
$errors = array();
foreach ($files as $lessFile => $buildFile) {
$this->container['filesystem']->mkdir(dirname($buildFile));
$output->writeln(sprintf('Building %s', basename($lessFile)));
$builder = ProcessBuilder::create(array(
'recess',
'--compile',
$lessFile,
));
$process = $builder->getProcess();
$process->run();
if (!$process->isSuccessful()) {
$failures++;
$errors[] = $process->getErrorOutput();
}
file_put_contents($buildFile, $process->getOutput());
}
$copies = array(
$this->container['root.path'] . '/www/assets/bootstrap/img/glyphicons-halflings-white.png' => $this->container['root.path'] . '/www/skins/build/bootstrap/img/glyphicons-halflings-white.png',
$this->container['root.path'] . '/www/assets/bootstrap/img/glyphicons-halflings.png' => $this->container['root.path'] . '/www/skins/build/bootstrap/img/glyphicons-halflings.png',
);
foreach ($copies as $source => $target) {
$this->container['filesystem']->mkdir(dirname($target));
$this->container['filesystem']->copy($source, $target);
}
if (0 === $failures) {
$output->writeln('Build done !');
return 0;
}
$output->writeln(sprintf('%d errors occured during the build %s', $failures, implode(', ', $errors)));
return 1;
}
}