roojs-ui.js
[roojs1] / buildSDK / less-bootstrap-compiler.php
index 545aff0..be9fce7 100644 (file)
@@ -2,7 +2,8 @@
 
 $cwd = getcwd();
 
-if (array_pop(explode('/', $cwd)) !== 'roojs1') {
+$cc = explode('/', $cwd);
+if (array_pop($cc) !== 'roojs1') {
     echo "this should be run in roojs1 directory...\n";
     exit;
 }
@@ -20,66 +21,112 @@ $files = array(
         'baseDir' => "{$rootDir}/roojs1/css-bootstrap",
         'name' => 'bootstrap.css',
         'minify' => 'bootstrap.min.css',
-        'variables' => "@import 'variables.less';"
+        'sourceMapRootpath' => '../less/bootstrap/',
+        'variables' => array("@import 'variables.less';")
     ),
+    "{$rootDir}/roojs1/less/bootstrap/bootstrap-light.less" => array(
+        'baseDir' => "{$rootDir}/roojs1/css-bootstrap",
+        'name' => 'bootstrap-light.css',
+        'minify' => 'bootstrap-light.min.css',
+        'sourceMapRootpath' => '../less/bootstrap/',
+        'variables' => array("@import 'variables.less';")
+    ),
+    
     "{$rootDir}/roojs1/less/roojs-bootstrap/roojs-bootstrap.less" => array(
         'baseDir' => "{$rootDir}/roojs1/css-bootstrap",
         'name' => 'roojs-bootstrap-debug.css',
         'minify' => 'roojs-bootstrap.css',
-        'variables' => "@import '../bootstrap/variables.less';"
+        'sourceMapRootpath' => '../less/roojs-bootstrap/',
+        'variables' => array("@import '../bootstrap/variables.less';")
     )
 );
 
-require_once 'HTML/Less.php';
-        
-$less = new HTML_Less();
-
 foreach ($files as $src => $file){
-
-    if(!file_exists($src)){
-        echo "{$less} does not exist...\n";
+    
+    $css = "{$file['baseDir']}/{$file['name']}";
+    
+    if(!file_exists($css)){
         continue;
     }
+    
+    $dir = "{$file['baseDir']}/{$file['sourceMapRootpath']}";
+    
+    $variable = "{$dir}variables.less";
+    
+    if(file_exists($variable) && filemtime("{$dir}variables.less") > filemtime($css)){
+        continue;
+    }
+    
+    $isLatest = true;
+    
+    foreach(scandir($dir) as $f) {
+                
+        if (!strlen($f) || $f[0] == '.') {
+            continue;
+        }
 
-    try {
-        
-        $css = "{$file['baseDir']}/{$file['name']}";
-        
-        echo "Compiling - {$src} To {$css}\n";
-        
-        $less->compileFile($src, $css);
+        $less = "{$dir}{$f}";
         
-    } catch (Exception $ex) {
-        echo "lessphp fatal error: {$ex->getMessage()}\n";
+        if(filemtime($less) > filemtime($css)){
+            $isLatest = false;
+            break;
+        }
+    }
+    
+    if($isLatest){
+        echo "{$css} already up-to-date \n";
+        unset($files[$src]);
     }
     
 }
 
-require_once 'HTML/CSS/Minify.php';
+require_once 'HTML/Less.php';
 
 foreach ($files as $src => $file){
-    
-    $css = "{$file['baseDir']}/{$file['name']}";
-    
-    if(!file_exists($css)){
-        echo "{$css} does not exist...\n";
+
+    if(!file_exists($src)){
+        echo "{$less} does not exist...\n";
         continue;
     }
     
     try {
         
+        $less = new HTML_Less();
+        
+        $less->setOptions(array(
+            'variables' => $file['variables'],
+            'sourceMap' => true,
+            'sourceMapWriteTo' => "{$file['baseDir']}/{$file['name']}.map",
+            'sourceMapURL' => "{$file['name']}.map",
+            'sourceMapRootpath' => $file['sourceMapRootpath'],
+            'sourceMapBasepath' => dirname(realpath($src))
+        ));
+        
+        $css = "{$file['baseDir']}/{$file['name']}";
+        
+        echo "Compiling - {$src} To {$css}\n";
+        
+        $less->compileFile($src, $css);
+        
         $min = "{$file['baseDir']}/{$file['minify']}";
         
-        echo "Minifing - {$css} To {$min}\n";
+        $less = new HTML_Less();
         
-        $minify = new HTML_CSS_Minify($file['baseDir'], $file['baseDir'], array($file['name']));
-    
-        $content = $minify->minify($file['baseDir']);
-
-        file_put_contents($min, $content);
+        $less->setOptions(array(
+            'compress' => true,
+            'variables' => $file['variables'],
+            'sourceMap' => true,
+            'sourceMapWriteTo' => "{$file['baseDir']}/{$file['minify']}.map",
+            'sourceMapURL' => "{$file['minify']}.map",
+            'sourceMapRootpath' => $file['sourceMapRootpath'],
+            'sourceMapBasepath' => dirname(realpath($src))
+        ));
+        
+        echo "Minifing - {$src} To {$min}\n";
+        
+        $less->compileFile($src, $min);
         
     } catch (Exception $ex) {
-        echo "Minify fatal error: {$ex->getMessage()}\n";
+        echo "lessphp fatal error: {$ex->getMessage()}\n";
     }
-    
-}
+}
\ No newline at end of file