/** * @see sfTask */ protected function execute($arguments = array(), $options = array()) { // Remove old CSS files if --clean option specified if (isset($options['clean']) && $options['clean']) { foreach (sfLessPhp::findCssFiles() as $cssFile) { if (!isset($arguments['file']) || false !== strpos($cssFile, $arguments['file'] . '.css')) { unlink($cssFile); $this->logSection('removed', str_replace(sfLessPhp::getCssPaths(), '', $cssFile)); } } } // Inits sfLessPhp instance for compilation help $lessHelper = new sfLessPhp(false, isset($options['lessc']) && $options['lessc'], false, isset($options['compress']) && $options['compress']); // Outputs debug info if (isset($options['debug']) && $options['debug']) { foreach ($lessHelper->getDebugInfo() as $key => $value) { $this->logSection('debug', sprintf("%s:\t%s", $key, $value), null, 'INFO'); } } // Compiles LESS files foreach (sfLessPhp::findLessFiles() as $lessFile) { if (!isset($arguments['file']) || false !== strpos($lessFile, $arguments['file'] . '.less')) { if ($lessHelper->compile($lessFile)) { if (isset($options['debug']) && $options['debug']) { $this->logSection('compiled', sprintf("%s => %s", sfLessPhp::getProjectRelativePath($lessFile), sfLessPhp::getProjectRelativePath(sfLessPhp::getCssPathOfLess($lessFile))), null, 'COMMAND'); } else { $this->logSection('compiled', str_replace(sfLessPhp::getLessPaths(), '', $lessFile), null, 'COMMAND'); } } } } }
/** * Returns information row for LESS style compilation * * @param array $info info of compilation process * @return string */ protected function getInfoContent($info, $error = false) { // ID of error row $errorId = md5($info['lessFile']); // File link for preferred editor $fileLink = $this->formatFileLink($info['lessFile'], 1, str_replace(sfLessPhp::getLessPaths(), '', $info['lessFile'])); // Checking compile & error statuses if ($info['isCompiled']) { $trStyle = 'background-color:#a1d18d;'; } elseif ($info['error']) { $this->setStatus(sfLogger::ERR); $trStyle = 'background-color:#f18c89;'; $fileLink .= ' ' . $this->getToggler('less_error_' . $errorId, 'Toggle error info'); } else { $trStyle = ''; } // Generating info rows $infoRows = sprintf(<<<EOF <tr style="%s"> <td class="sfWebDebugLogType">%s</td> <td class="sfWebDebugLogType">%s</td> <td class="sfWebDebugLogNumber" style="text-align:center;">%.2f</td> </tr> <tr id="less_error_%s" style="display:none;background-color:#f18c89;"><td style="padding-left:15px" colspan="2">%s<td></tr> EOF , $trStyle, $fileLink, str_replace(sfLessPhp::getCssPaths(), '', $info['cssFile']), $info['isCompiled'] ? $info['compTime'] * 1000 : 0, $errorId, $info['error']); return $infoRows; }