X-Git-Url: http://git.roojs.org/?p=Pman.Core;a=blobdiff_plain;f=JsCompile.php;h=a5b915904666e1b8dd44d1a84b23a48deef5ac35;hp=ab10786b22a242d07a934ad5cbd55a18437e980c;hb=c1af5e6bb6064e88469651271f4d9aaff34d69c0;hpb=597e6b649deae4e14157b6a20a533756276c4f25 diff --git a/JsCompile.php b/JsCompile.php index ab10786b..a5b91590 100644 --- a/JsCompile.php +++ b/JsCompile.php @@ -37,7 +37,7 @@ class Pman_Core_JsCompile extends Pman } - function get($proj, $args) + function get($proj, $args=array()) { if (empty($args)) { die("missing action : eg. build or install"); @@ -124,7 +124,7 @@ class Pman_Core_JsCompile extends Pman } $tf = // sort exc. the .js - usort($ofiles,create_function('$a,$b', 'return Pman_Core_JsCompile::jsSort($a,$b);')); + usort($ofiles,function($a,$b) { return Pman_Core_JsCompile::jsSort($a,$b); }); //print_R($ofiles); @@ -252,13 +252,104 @@ class Pman_Core_JsCompile extends Pman * @param {String} $output name fo file to output * */ + function pack($files, $output, $translation_base=false) { + if (empty($files)) { + return false; + } + + $o = HTML_FlexyFramework::get()->Pman_Core; + if (isset($o['packseed'])) { + return $this->packSeed($files,$output,$translation_base); + } + + + require_once 'System.php'; + $packer = System::which('roojspacker'); + + + if (!$packer) { + echo ''; + return false; + + } + $targetm = file_exists($output) && filesize($output) ? filemtime($output) : 0; + $max = 0; + $ofiles = array(); + foreach($files as $f => $mt) { + $max = max($max,$mt); + $ofiles[] = escapeshellarg($f); + } + if ($max < $targetm) { + echo ''; + return true; + } + + if (file_exists($output)) { + unlink($output); + } + + + if (!file_exists(dirname($output))) { + mkdir(dirname($output), 0755, true); + } + + usort($ofiles, function($a,$b) { return strlen($a) > strlen($b) ? 1 : -1; }); + + //$eoutput = " -k -o " . escapeshellarg($output) ; // with whitespace.. + $eoutput = " -t " . escapeshellarg($output) ; + + // no support for translation any more? + //if ( $translation_base) { + // $toutput = " -t ". escapeshellarg(preg_replace('/\.js$/', '.__translation__.js', $output)) . + // " -p " . escapeshellarg($translation_base) ;//." -k "; // this kills the compression. + // + //} + + + $cmd = "$packer $eoutput -f " . implode(' -f ', $ofiles) . ' 2>&1'; + //echo "
$cmd\n";
+        //echo `$cmd`;
+        
+         echo "";
+            
+       // return false;
+        
+        $res = `$cmd`;
+        //exit;
+        file_put_contents($output.'.log', $cmd."\n\n". $res);
+        // since this only appears when we change.. it's ok to dump it out..
+        echo "";
+        clearstatcache();
+        // we should do more checking.. return val etc..
+        if (file_exists($output) && filesize($output) && ($max < filemtime($output) ) ) {
+            echo "\n";
+            return true;
+        }
+        echo '';
+     
+        
+        echo "";
+        return false;
+        
+    }
+    
+    // depricated verison using seed.
+    function packSeed($files, $output, $translation_base=false)
+    {
+        
          
         $o = HTML_FlexyFramework::get()->Pman_Core;
         
-        if (empty($o['jspacker']) || !file_exists($o['jspacker'].'/pack.js')) {
+        if (empty($o['packseed']) || !file_exists($o['jspacker'].'/pack.js')) {
             echo '';
             return false;
             
@@ -301,8 +392,8 @@ class Pman_Core_JsCompile  extends Pman
         
         
         $cmd = ($seed ?
-             "$seed {$o['jspacker']}/pack.js " :
-             "$gjs -I {$o['jspacker']} -I {$o['jspacker']}/JSDOC  {$o['jspacker']}/pack.js -- -- " 
+             "$seed {$o['packseed']}/pack.js " :
+             "$gjs -I {$o['packseed']} -I {$o['packseed']}/JSDOC  {$o['packseed']}/pack.js -- -- " 
               
              ) . " $eoutput  $toutput " . implode($ofiles, ' ') . ' 2>&1';
         //echo "
$cmd\n";
@@ -329,7 +420,9 @@ class Pman_Core_JsCompile  extends Pman
             
             return true;
         }
-        echo "";
+        
+         
+        echo "\n\n";
         return false;
         
     }
@@ -371,8 +464,8 @@ class Pman_Core_JsCompile  extends Pman
         
         $o = HTML_FlexyFramework::get()->Pman_Core;
         
-        if (empty($o['jspacker']) || !file_exists($o['jspacker'].'/pack.js')) {
-            $this->err ="no jstoolkit path set [Pman_Core][jspacker] to the
+        if (empty($o['packseed']) || !file_exists($o['packseed'].'/pack.js')) {
+            $this->err ="no jstoolkit path set [Pman_Core][packseed] to the
                     introspection documentation directory where pack.js is located.";
             if ($this->cli) echo $this->err;
             return false;
@@ -380,7 +473,7 @@ class Pman_Core_JsCompile  extends Pman
         
         // should we be more specirfic!??!?!?
          
-        $cmd = "$seed {$o['jspacker']}/pack.js -m $proj  -a  $src/*.js";
+        $cmd = "$seed {$o['packseed']}/pack.js -m $proj  -a  $src/*.js";
         echo "$cmd\n";
         passthru($cmd);
         // technically we should trash old compiled files..