1
+ var fs = require ( "fs" ) ;
2
+ var cp = require ( 'child_process' ) ;
3
+
4
+ var commandLineArguments = process . argv . splice ( 2 ) ;
5
+
6
+ var outputRootDir = "./node_modules" ;
7
+ var inputDir = "../../build" ;
8
+ var readmeFileName = "../../README.md" ;
9
+
10
+ var headerFileName = "./header.js" ;
11
+ var footerFileName = "./footer.js" ;
12
+
13
+ if ( commandLineArguments . length == 0 ) {
14
+ throw new Error ( "build version must be specified as a command line argument (e.g. 0.54.3-dev)" ) ;
15
+ }
16
+ var buildVersion = commandLineArguments [ 0 ] ;
17
+
18
+
19
+ var concateFiles = function ( inputFileNames , outputFileName ) {
20
+ var buffer = [ ] ;
21
+ for ( var i = 0 ; i < inputFileNames . length ; i ++ ) {
22
+ buffer . push (
23
+ fs . readFileSync ( inputFileNames [ i ] , 'utf8' )
24
+ ) ;
25
+ }
26
+
27
+ var combinedContents = buffer . join ( "" ) ;
28
+ fs . writeFileSync ( outputFileName , combinedContents , 'utf8' ) ;
29
+ }
30
+
31
+ var createTemplatedFile = function ( templateFileName , replaceSet , outputFileName ) {
32
+ var templateContents = fs . readFileSync ( templateFileName , 'utf8' ) ;
33
+ for ( var token in replaceSet ) {
34
+ templateContents = templateContents . replace ( "%" + token + "%" , replaceSet [ token ] ) ;
35
+ }
36
+ fs . writeFileSync ( outputFileName , templateContents , 'utf8' ) ;
37
+ }
38
+
39
+ var copyFile = function ( sourceFileName , destinationFileName ) {
40
+
41
+ var contents = fs . readFileSync ( sourceFileName , 'utf8' ) ;
42
+ fs . writeFileSync ( destinationFileName , contents , 'utf8' ) ;
43
+
44
+ }
45
+
46
+ var buildModule = function ( name , version ) {
47
+
48
+ if ( ! fs . existsSync ( outputRootDir ) ) {
49
+ fs . mkdirSync ( outputRootDir ) ;
50
+ }
51
+
52
+ var outputModuleDir = outputRootDir + "/" + name ;
53
+ if ( ! fs . existsSync ( outputModuleDir ) ) {
54
+ fs . mkdirSync ( outputModuleDir ) ;
55
+ }
56
+ // make directory moduleDir
57
+
58
+ var inputRawFileName = inputDir + "/" + name + ".js" ;
59
+ var outputRawFileName = outputModuleDir + "/" + name + ".js" ;
60
+
61
+ concateFiles ( [ headerFileName , inputRawFileName , footerFileName ] , outputRawFileName ) ;
62
+
63
+ var inputMinifiedFileName = inputDir + "/" + name + ".min.js" ;
64
+ var outputMinifiedFileName = outputModuleDir + "/" + name + ".min.js" ;
65
+
66
+ concateFiles ( [ headerFileName , inputMinifiedFileName , footerFileName ] , outputMinifiedFileName ) ;
67
+
68
+ var templatePackageFileName = "./" + name + ".package.json" ;
69
+ var replaceSet = {
70
+ "VERSION" : buildVersion
71
+ } ;
72
+ var outputPackageFileName = outputModuleDir + "/package.json" ;
73
+ createTemplatedFile ( templatePackageFileName , replaceSet , outputPackageFileName ) ;
74
+
75
+ var outputReadmeFileName = outputModuleDir + "/README.md" ;
76
+ copyFile ( readmeFileName , outputReadmeFileName ) ;
77
+ }
78
+
79
+ // TODO: make this non-Windows specific.
80
+ var cmdExe = "cmd.exe" ;
81
+ var args = [ "/c" , "build_all.bat" ] ;
82
+ var opts = { "cwd" : ".." } ;
83
+ var buildAll = cp . spawn ( cmdExe , args , opts ) ;
84
+
85
+ buildAll . stdout . on ( 'data' , function ( data ) {
86
+ console . log ( 'stdout: ' + data ) ;
87
+ } ) ;
88
+
89
+ buildAll . stderr . on ( 'data' , function ( data ) {
90
+ console . log ( 'stderr: ' + data ) ;
91
+ } ) ;
92
+
93
+ buildAll . on ( 'exit' , function ( exitCode ) {
94
+ console . log ( "exitCode: " + exitCode ) ;
95
+ buildModule ( "three" ) ;
96
+ buildModule ( "three-math" ) ;
97
+ } ) ;
0 commit comments