cbbe230152c963536fd484d871144f2b3f313c26
[roojs1] / buildSDK / less-bootstrap-compiler.php
1 <?php
2
3 $cwd = getcwd();
4
5 $cc = explode('/', $cwd);
6 if (array_pop($cc) !== 'roojs1') {
7     echo "this should be run in roojs1 directory...\n";
8     exit;
9 }
10
11 ini_set('include_path', 
12     dirname(__FILE__) . '/../:' .
13     dirname(__FILE__) . '/../../pear:' .
14     ini_get('include_path')
15 );
16
17 $rootDir = dirname(__FILE__) . '/../..';
18
19 $files = array(
20     "{$rootDir}/roojs1/less/bootstrap/bootstrap.less" => array(
21         'baseDir' => "{$rootDir}/roojs1/css-bootstrap",
22         'name' => 'bootstrap.css',
23         'minify' => 'bootstrap.min.css',
24         'sourceMapRootpath' => '../less/bootstrap/',
25         'variables' => array("@import 'variables.less';")
26     ),
27     "{$rootDir}/roojs1/less/roojs-bootstrap/roojs-bootstrap.less" => array(
28         'baseDir' => "{$rootDir}/roojs1/css-bootstrap",
29         'name' => 'roojs-bootstrap-debug.css',
30         'minify' => 'roojs-bootstrap.css',
31         'sourceMapRootpath' => '../less/roojs-bootstrap/',
32         'variables' => array("@import '../bootstrap/variables.less';")
33     )
34 );
35
36 foreach ($files as $src => $file){
37     
38     $css = "{$file['baseDir']}/{$file['name']}";
39     
40     if(!file_exists($css)){
41         continue;
42     }
43     
44     $dir = "{$file['baseDir']}/{$file['sourceMapRootpath']}";
45     
46     $variable = "{$dir}variables.less";
47     
48     if(file_exists($variable) && filemtime("{$dir}variables.less") > filemtime($css)){
49         continue;
50     }
51     
52     $isLatest = true;
53     
54     foreach(scandir($dir) as $f) {
55                 
56         if (!strlen($f) || $f[0] == '.') {
57             continue;
58         }
59
60         $less = "{$dir}{$f}";
61         
62         if(filemtime($less) > filemtime($css)){
63             $isLatest = false;
64             break;
65         }
66     }
67     
68     if($isLatest){
69         echo "{$css} already up-to-date \n";
70         unset($files[$src]);
71     }
72     
73 }
74
75 require_once 'HTML/Less.php';
76
77 foreach ($files as $src => $file){
78
79     if(!file_exists($src)){
80         echo "{$less} does not exist...\n";
81         continue;
82     }
83     
84     try {
85         
86         $less = new HTML_Less();
87         
88         $less->setOptions(array(
89             'variables' => $file['variables'],
90             'sourceMap' => true,
91             'sourceMapWriteTo' => "{$file['baseDir']}/{$file['name']}.map",
92             'sourceMapURL' => "{$file['name']}.map",
93             'sourceMapRootpath' => $file['sourceMapRootpath'],
94             'sourceMapBasepath' => dirname(realpath($src))
95         ));
96         
97         $css = "{$file['baseDir']}/{$file['name']}";
98         
99         echo "Compiling - {$src} To {$css}\n";
100         
101         $less->compileFile($src, $css);
102         
103         $min = "{$file['baseDir']}/{$file['minify']}";
104         
105         $less = new HTML_Less();
106         
107         $less->setOptions(array(
108             'compress' => true,
109             'variables' => $file['variables'],
110             'sourceMap' => true,
111             'sourceMapWriteTo' => "{$file['baseDir']}/{$file['minify']}.map",
112             'sourceMapURL' => "{$file['minify']}.map",
113             'sourceMapRootpath' => $file['sourceMapRootpath'],
114             'sourceMapBasepath' => dirname(realpath($src))
115         ));
116         
117         echo "Minifing - {$src} To {$min}\n";
118         
119         $less->compileFile($src, $min);
120         
121     } catch (Exception $ex) {
122         echo "lessphp fatal error: {$ex->getMessage()}\n";
123     }
124 }