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
113
114
115
116
117
118
119
|
#!/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'
),
'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'
)
);
/**
* 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++;
}
?>
|