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; } }