#!/usr/bin/php <?php /** * Javascript build file. * * This script compresses a list of javascript source files * and merges them into a few for redistribution. * * By default, all libraries will be built. * You may, however, specify one or several to be built (to save time during development). * To do so, pass the library names (without .js) as command line arguments. * For example: php build.php base dom * * @author Xiang Wei Zhuo <weizhuo@gmail.com>, Qiang Xue <qiang.xue@gmail.com> * @link http://www.pradosoft.com/ * @copyright Copyright © 2005 PradoSoft * @license http://www.pradosoft.com/license/ * @version $Id$ * @package Tools */ /** * The root directory for storing all source js files */ define('SOURCE_DIR',realpath(dirname(__FILE__).'/../../framework/Web/Javascripts')); /** * The directory for storing compressed js files */ define('TARGET_DIR',realpath(dirname(__FILE__).'/../../framework/Web/Javascripts/js')); define('JSMIN_AS_LIB',true); include(dirname(__FILE__).'/jsmin.php'); if(SOURCE_DIR===false || TARGET_DIR===false) die('Unable to determine the build path.'); if(!is_writable(TARGET_DIR)) die('Unable to create files under '.TARGET_DIR.'.'); /** * list of js library files to be compressed and built */ $libraries = array( 'prado.js' => array( 'prototype/prototype.js', 'scriptaculous/builder.js', 'prado/prado.js', 'prado/scriptaculous-adapter.js', 'prado/controls/controls.js', 'prado/ratings/ratings.js', ), 'effects.js' => array( 'scriptaculous/effects.js' ), 'logger.js' => array( 'prado/logger/logger.js', ), 'validator.js' => array( 'prado/validator/validation3.js' ), 'datepicker.js' => array( 'prado/datepicker/datepicker.js' ), 'colorpicker.js' => array( 'prado/colorpicker/colorpicker.js' ), 'ajax.js' => array( 'scriptaculous/controls.js', 'prado/activecontrols/json.js', 'prado/activecontrols/ajax3.js', 'prado/activecontrols/activecontrols3.js', 'prado/activecontrols/inlineeditor.js', 'prado/activeratings/ratings.js' ) ); /** * Collect specific libraries to be built from command line */ $requestedLibs=array(); for($i=1;$i<$argc;++$i) $requestedLibs[]=$argv[$i].'.js'; $builds = 0; /** * loop through all target files and build them one by one */ foreach($libraries as $jsFile => $sourceFiles) { if(!empty($requestedLibs) && !in_array($jsFile,$requestedLibs)) continue; //$libFile=TARGET_DIR.'/'.$jsFile; echo "\nBuilding $jsFile...\n"; $contents=''; foreach($sourceFiles as $sourceJsFile) { $sourceFile=SOURCE_DIR.'/'.$sourceJsFile; if(!is_file($sourceFile)) echo "Source file not found: $sourceFile\n"; echo "...adding $sourceJsFile\n"; $contents.=file_get_contents($sourceFile)."\n\n"; } $debugFile=TARGET_DIR.'/debug/'.$jsFile; $compressFile=TARGET_DIR.'/compressed/'.$jsFile; file_put_contents($debugFile,$contents); $jsMin = new JSMin($debugFile, $compressFile); $jsMin -> minify(); unset($jsMin); //@unlink($tempFile); echo "Saving file {$jsFile}\n"; $builds++; } ?>