class Pman_Core_JsCompile extends Pman
{
- static $cli_desc = "Wrapper around Javascript compression tools";
+ static $cli_desc = "Wrapper around Javascript compression tools
+ Runs the javascript compiler - merging all the JS files so the load faster.
+ Note: cfg option Pman_Builder['jspacker'] must be set to location of jstoolkit code
+";
var $cli = false;
function getAuth()
*
*/
+ static function jsSort($a,$b)
+ {
+ $a = substr($a, 0, -3);
+ $b= substr($b, 0, -3);
+ if ($a == $b) {
+ return 0;
+ }
+ return ($a > $b) ? +1 : -1;
+ }
+
function packScript($basedir, $files, $output_url, $compile=true)
{
if (!is_dir($basedir .'/' .$f)) {
$arfiles[$basedir .'/' .$f] = filemtime($basedir .'/' .$f);
- $ofiles[] = $f;
+ $ofiles[] = $f;
continue;
}
+
foreach(glob($basedir .'/' .$f.'/*.js') as $fx) {
+
$arfiles[$fx] = filemtime($fx);
$ofiles [] = $f . '/'. basename($fx);
}
}
+ $tf =
+ // sort exc. the .js
+ usort($ofiles,create_function('$a,$b', 'return Pman_Core_JsCompile::jsSort($a,$b);'));
+
+ //print_R($ofiles);
$output = md5(serialize($arfiles)) .'.js';
return false;
}
require_once 'System.php';
+
$seed= System::which('seed');
- if (!$seed) {
- echo '<!-- seed not installed -->';
+ $gjs = System::which('gjs');
+
+ if (!$seed && !$gjs) {
+ echo '<!-- seed or gjs are not installed -->';
return false;
}
mkdir(dirname($output), 0755, true);
}
$eoutput = escapeshellarg($output);
- $cmd = "$seed {$o['cssminify']} $eoutput " . implode($ofiles, ' ');
+ $cmd = $seed ?
+ ("$seed {$o['cssminify']} $eoutput " . implode($ofiles, ' ')) :
+ ("$gjs {$o['cssminify']} -- -- $eoutput " . implode($ofiles, ' '));
//echo "<PRE>$cmd\n"; echo `$cmd`; exit;
`$cmd`;
}
require_once 'System.php';
$seed= System::which('seed');
- if (!$seed) {
- echo '<!-- JS COMPILE ERROR: seed not installed -->';
+ $gjs = System::which('gjs');
+
+ if (!$seed && !$gjs) {
+ echo '<!-- seed or gjs are not installed -->';
return false;
}
- $targetm = file_exists($output) ? filemtime($output) : 0;
+ $targetm = file_exists($output) && filesize($output) ? filemtime($output) : 0;
$max = 0;
$ofiles = array();
foreach($files as $f => $mt) {
$lsort = create_function('$a,$b','return strlen($a) > strlen($b) ? 1 : -1;');
usort($ofiles, $lsort);
- $eoutput = " -o " . escapeshellarg($output) ;
-
+ //$eoutput = " -k -o " . escapeshellarg($output) ; // with whitespace..
+ $eoutput = " -o " . escapeshellarg($output) ;
if ( $translation_base) {
- $toutput = "-t ". escapeshellarg(preg_replace('/\.js$/', '.__translation__.js', $output)) .
+ $toutput = " -t ". escapeshellarg(preg_replace('/\.js$/', '.__translation__.js', $output)) .
" -p " . escapeshellarg($translation_base) ;//." -k "; // this kills the compression.
}
- $cmd = "$seed {$o['jspacker']}/pack.js $eoutput $toutput " . implode($ofiles, ' ') . ' 2>&1';
+ $cmd = ($seed ?
+ "$seed {$o['jspacker']}/pack.js " :
+ "$gjs -I {$o['jspacker']} -I {$o['jspacker']}/JSDOC {$o['jspacker']}/pack.js -- -- "
+
+ ) . " $eoutput $toutput " . implode($ofiles, ' ') . ' 2>&1';
//echo "<PRE>$cmd\n";
//echo `$cmd`;