1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/agendav_ynh.git synced 2024-09-03 20:36:12 +02:00
agendav_ynh/sources/bin/prepare-static.php
2014-01-07 17:53:08 +01:00

121 lines
2.9 KiB
PHP
Executable file

#!/usr/bin/php
<?php
/*
* Creates unified and minified JS/CSS files
*/
set_time_limit(0);
$compilers = array(
'compiler.jar' =>
'http://closure-compiler.googlecode.com/files/compiler-latest.zip',
'yuicompressor-2.4.7/build/yuicompressor-2.4.7.jar' =>
'http://yui.zenfs.com/releases/yuicompressor/yuicompressor-2.4.7.zip'
);
$web_dir = getcwd() . '/../web/';
$public_dir = $web_dir . 'public/';
$js_dir = $web_dir . 'public/js/';
$css_dir = $web_dir . 'public/css/';
$app_dir = $web_dir . 'application/';
// Google Closure Compiler and YUI
foreach ($compilers as $path => $url) {
$file = basename($path);
if (!file_exists($file)) {
$zip = '/tmp/tmp_'.$file.'.zip';
$ziphandle = fopen($zip, 'w');
$options = array(
CURLOPT_FILE => $ziphandle,
CURLOPT_TIMEOUT => 28800,
CURLOPT_URL => $url,
);
$ch = curl_init();
curl_setopt_array($ch, $options);
curl_exec($ch);
// Use -j to extract here
exec('unzip -j ' . $zip . ' ' . $path);
fclose($ziphandle);
}
}
// Load file list
define('BASEPATH', $app_dir);
require_once($app_dir . 'hooks/Defs.php');
$defs = new Defs();
$defs->definitions();
// JS
$jsmin = $js_dir . 'jquery-base-' . AGENDAV_VERSION . '.js';
$jsfull = $js_dir . 'agendav-' . AGENDAV_VERSION . '.js';
$jsfullhandle = fopen($jsfull, 'w');
$jsminhandle = fopen($jsmin, 'w');
$i = 0;
foreach (Defs::$jsfiles as $js) {
echo "Processing $js...";
$contents = '';
if (strpos($js, '.min.') !== FALSE) {
echo " already minimized.\n";
$contents = file_get_contents($js_dir . $js);
} else {
echo " using compiler.jar.\n";
$cmd = 'java -jar compiler.jar --compilation_level '
.'SIMPLE_OPTIMIZATIONS --js ' . $js_dir . $js;
$cmdhandle = popen($cmd, 'r');
while (!feof($cmdhandle)) {
$contents .= fread($cmdhandle, 8192);
}
}
// Write on two files
if ($i < 2) {
fwrite($jsminhandle, $contents);
} else {
fwrite($jsfullhandle, $contents);
}
$i++;
}
fclose($jsfullhandle);
fclose($jsminhandle);
// CSS
$cssmin = $css_dir . 'agendav-' . AGENDAV_VERSION . '.css';
$cssprint = $css_dir . 'agendav-' . AGENDAV_VERSION . '.print.css';
$tmp = array_keys($compilers);
$yuicompressor = basename($tmp[1]);
$csshandle = fopen($cssmin, 'w');
$cssprinthandle = fopen($cssprint, 'w');
$tasks = array('cssfiles', 'printcssfiles');
foreach ($tasks as $task) {
foreach (Defs::$$task as $css) {
echo "Processing $css...";
$contents = '';
if (strpos($css, '.min.') !== FALSE) {
echo " already minimized.\n";
$contents = file_get_contents($css_dir . $css);
} else {
echo " using ".$yuicompressor."\n";
$cmd = 'java -jar '.$yuicompressor.' --type css'
.' ' . $css_dir . $css;
$cmdhandle = popen($cmd, 'r');
while (!feof($cmdhandle)) {
$contents .= fread($cmdhandle, 8192);
}
}
// Write
if ($task == 'cssfiles') {
fwrite($csshandle, $contents);
} else {
fwrite($cssprinthandle, $contents);
}
}
}
fclose($csshandle);
fclose($cssprinthandle);