fix attribute
[roojs1] / buildSDK / pre-commit
1 #!/usr/bin/php
2 <?php
3
4 // install : ln -s buildSDK/pre-commit .git/hooks/
5
6 // the recomendation is to check if the current commit is same as the one on any of the files/directories that need monitoring.
7
8 register_shutdown_function ( 'unlock');
9 lock();
10
11 trigger_action('build_docs', array('Roo.js', 'Roo/', 'Array.js', 'Function.js', 'Date.js', 'String.js', 'Number.js'));
12
13 $core = trigger_action_file('compile_core', 'dependancy_core.txt');
14 $ui = trigger_action_file('compile_ui',  'dependancy_ui.txt');
15 trigger_action_file('compile_bootstrap',  'dependancy_bootstrap.txt');
16 trigger_action_file('compile_mailer',  'dependancy_mailer.txt');
17 trigger_action_file('compile_calendar',  'dependancy_calendar.txt');
18
19 trigger_action('compile_less', array('less/'));
20 trigger_action('compile_scss', array('scss/'));
21
22 if ($core || $ui) {
23     merge_files();
24 }
25
26 function lock()
27 {
28     static $tries = 0;
29     clearstatcache();
30     if (file_exists(".git/pre-commit-running")) {
31         if (file_exists(".git/pre-commit-pending")) {
32             exit;
33         }
34         file_put_contents(".git/pre-commit-pending","\n");
35         sleep(30); // wait 30 seconds
36         unlink(".git/pre-commit-pending");
37         $tries++;
38         if ($tries > 3) {
39             exit;
40         }
41     }
42     file_put_contents(".git/pre-commit-running","\n");
43 }
44 function unlock()
45 {
46     unlink(".git/pre-commit-running");
47 }
48  
49 function changed_files()
50 {
51     static $output = array();
52     if (!empty($output)) {
53         return $output;
54     }
55     $return = 0;
56     exec('git rev-parse --verify HEAD 2> /dev/null', $output, $return);
57     if ($return != 0) {
58         exit;
59     }
60     
61     exec("git diff-index --cached --name-only 'HEAD'", $output);
62     return $output;
63 }
64
65 function trigger_action_file($fn, $filename)
66 {
67     $ret = explode("\n",file_get_contents(__DIR__ . "/" . $filename));
68     $add = array();
69     foreach($ret as $r) {
70         $r=trim($r);
71         if (strlen($r)) {
72             $add[] = str_replace('.','/', $r) . ".js";
73         }
74     }
75     $ret[] = "buildSDK/".$filename;
76     return trigger_action($fn, $add);
77     
78 }
79
80 function trigger_action($fn, $files)
81 {
82     
83     foreach(changed_files() as $cg) {
84         foreach($files as $f) {
85             $f = trim($f);
86             if ($f == $cg) {
87                 echo "RUNNING : $fn\n";
88                 $fn();
89                 return true;
90             }
91             if (substr($f, -1,1) == '/' && substr($cg,0, strlen($f)) == $f) {
92                 echo "RUNNING : $fn\n";
93                 $fn();
94                 return true;    
95             }
96         }
97     }
98     return false;
99 }
100
101 function build_docs()
102 {
103     exec("roojspacker -i buildSDK/dependancy_core.txt  -i buildSDK/dependancy_ui.txt  " . 
104     "-i buildSDK/dependancy_bootstrap.txt -i buildSDK/dependancy_calendar.txt " .
105     "-i buildSDK/dependancy_svg.txt  " .
106    "--doc-target=docs -D");
107 }
108 function compile_core()
109 {
110     exec("roojspacker -t roojs-core.js -T roojs-core-debug.js -i buildSDK/dependancy_core.txt ");
111 }
112
113 function compile_ui()
114 {
115     exec("roojspacker -t roojs-ui.js -T roojs-ui-debug.js -i buildSDK/dependancy_ui.txt");
116 }
117
118 function merge_files()
119 {
120     exec("cat      roojs-core.js  roojs-ui.js >  roojs-all.js");
121     exec("cat roojs-core-debug.js  roojs-ui-debug.js > roojs-debug.js");
122 }
123
124  
125 function compile_bootstrap()
126 {
127     exec("roojspacker -t roojs-bootstrap.js -T roojs-bootstrap-debug.js -i buildSDK/dependancy_bootstrap.txt");
128 }
129  
130 function compile_calendar()
131 {
132     exec("roojspacker -t roojs-calendar.js -T roojs-calendar-debug.js -i buildSDK/dependancy_calendar.txt");
133 }  
134   
135   
136 function compile_mailer()
137 {
138
139     exec("roojspacker -t roojs-mailer.js -T roojs-mailer-debug.js -i buildSDK/dependancy_mailer.txt");
140 }  
141  
142 function compile_docbook()
143 {
144     exec("roojspacker -t roojs-doc.js -T roojs-doc-debug.js -i buildSDK/dependancy_doc.txt");
145 }
146
147   
148
149 function compile_less()
150 {
151     exec("php buildSDK/less-bootstrap-complier.php");
152 }
153
154 function compile_scss()
155 {
156     exec("php buildSDK/scss-bootstrap.php");
157
158  
159
160
161
162  
163        
164