summaryrefslogtreecommitdiff
path: root/buildscripts/jsbuilder/build.php
diff options
context:
space:
mode:
Diffstat (limited to 'buildscripts/jsbuilder/build.php')
-rw-r--r--buildscripts/jsbuilder/build.php152
1 files changed, 152 insertions, 0 deletions
diff --git a/buildscripts/jsbuilder/build.php b/buildscripts/jsbuilder/build.php
new file mode 100644
index 00000000..eac0acae
--- /dev/null
+++ b/buildscripts/jsbuilder/build.php
@@ -0,0 +1,152 @@
+#!/usr/bin/php
+<?php
+/**
+ * Javascript build file.
+ *
+ * This script compresses a list of javascript source files
+ * and merges them into a few for redistribution.
+ *
+ * This script should be run from command line with PHP.
+ * JRE 1.4 or above is required in order to run the js compression program.
+ *
+ * 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 &copy; 2005 PradoSoft
+ * @license http://www.pradosoft.com/license/
+ * @version $Revision: $ $Date: $
+ * @package Tools
+ */
+
+//compress using a script, has more options but lesss robut
+//define('COMPRESS_COMMAND','java -jar '.dirname(__FILE__).'/custom_rhino.jar packer.js %s > %s');
+
+//compress using build-in engine, very robust.
+define('COMPRESS_COMMAND','java -jar '.dirname(__FILE__).'/custom_rhino.jar -c %s > %s');
+
+/**
+ * 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'));
+
+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(
+
+ //base javascript functions
+ 'prototype/prototype.js',
+ 'prototype/base.js',
+ 'extended/util.js',
+ 'extended/base.js',
+ 'prototype/string.js',
+ 'extended/string.js',
+ 'prototype/enumerable.js',
+ 'prototype/array.js',
+ 'prototype/hash.js',
+ 'prototype/range.js',
+
+ //dom functions
+ 'prototype/dom.js',
+ 'extended/dom.js',
+ 'prototype/form.js',
+ 'prototype/event.js',
+ 'extended/event.js',
+ 'prototype/position.js',
+ 'extra/getElementsBySelector.js',
+ 'extra/behaviour.js',
+ 'effects/util.js',
+ 'extended/date.js',
+
+ //prado core
+ 'prado/prado.js',
+ 'prado/form.js',
+ 'prado/element.js',
+ 'prado/controls.js'
+ ),
+
+ //effects
+ 'effects.js' => array(
+ 'effects/effects.js',
+ 'prado/effects.js'
+ ),
+ //active controls
+ 'ajax.js' => array(
+ 'prototype/ajax.js',
+ 'prado/ajax.js',
+ 'extra/json.js',
+ 'effects/controls.js',
+ 'effects/dragdrop.js',
+ 'effects/slider.js',
+ 'prado/activecontrols.js'
+ ),
+ //logging
+ 'logger.js' => array(
+ 'extra/logger.js',
+ ),
+
+ //rico
+ 'rico.js' => array(
+ 'rico/rico.js',
+ 'rico/extension.js'
+ ),
+
+ //validator
+ 'validator.js' => array(
+ 'prado/validation.js',
+ 'prado/validators.js'
+ ),
+
+ //date picker
+ 'datepicker.js' => array(
+ 'datepicker/datepicker.js'
+ )
+);
+
+/**
+ * Collect specific libraries to be built from command line
+ */
+$requestedLibs=array();
+for($i=1;$i<$argc;++$i)
+ $requestedLibs[]=$argv[$i].'.js';
+
+/**
+ * loop through all target files and build them one by one
+ */
+foreach($libraries as $libFile => $sourceFiles)
+{
+ if(!empty($requestedLibs) && !in_array($libFile,$requestedLibs))
+ continue;
+ $libFile=TARGET_DIR.'/'.$libFile;
+ echo "\nBuilding $libFile...\n";
+ $contents='';
+ foreach($sourceFiles as $sourceFile)
+ {
+ $sourceFile=SOURCE_DIR.'/'.$sourceFile;
+ if(!is_file($sourceFile))
+ echo "Source file not found: $sourceFile\n";
+ $tempFile=$sourceFile.'.tmp';
+ $command=sprintf(COMPRESS_COMMAND,$sourceFile,$tempFile);
+ echo "...adding $sourceFile\n".
+ system($command);
+ $contents.=file_get_contents($tempFile);
+ @unlink($tempFile);
+ }
+ file_put_contents($libFile,$contents);
+}
+
+?> \ No newline at end of file