summaryrefslogtreecommitdiff
path: root/buildscripts/jsbuilder/build.php
blob: 4f0eded4f2233cc0848a7d32bdaba9b91ab8dd9b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
#!/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 &copy; 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'
	)
);

/**
 * 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++;
}

?>