Client: view.js split up into multiple files
[KiwiIRC.git] / client / assets / src / build.js
CommitLineData
8eb39b80
D
1var fs = require('fs'),\r
2 uglyfyJS = require('uglify-js'),\r
f9ff7686 3 _ = require('lodash'),\r
8eb39b80 4 config = require('./../../../server/configuration.js');\r
23533845
D
5\r
6var FILE_ENCODING = 'utf-8',\r
7 EOL = '\n';\r
8\r
9\r
9df70c63
D
10function concat(src) {\r
11 var file_list = src;\r
23533845 12 var out = file_list.map(function(file_path){\r
9df70c63 13 return fs.readFileSync(file_path, FILE_ENCODING) + '\n\n';\r
23533845
D
14 });\r
15\r
9df70c63 16 return out.join(EOL);\r
23533845
D
17}\r
18\r
8eb39b80
D
19\r
20\r
21config.loadConfig();\r
22\r
23\r
24\r
25\r
26\r
27/**\r
eaaf73b0 28 * Build the _kiwi.js files\r
8eb39b80
D
29 */\r
30\r
9df70c63
D
31var src = concat([\r
32 __dirname + '/app.js',\r
2d22d7e2
D
33 __dirname + '/models/application.js',\r
34 __dirname + '/models/gateway.js',\r
35 __dirname + '/models/network.js',\r
36 __dirname + '/models/member.js',\r
37 __dirname + '/models/memberlist.js',\r
38 __dirname + '/models/newconnection.js',\r
39 __dirname + '/models/panel.js',\r
40 __dirname + '/models/panellist.js',\r
41 __dirname + '/models/networkpanellist.js',\r
42 __dirname + '/models/query.js',\r
43 __dirname + '/models/channel.js',\r
44 __dirname + '/models/server.js',\r
45 __dirname + '/models/applet.js',\r
46 __dirname + '/models/pluginmanager.js',\r
47 __dirname + '/models/datastore.js',\r
48\r
49 __dirname + '/applets/settings.js',\r
2d22d7e2
D
50 __dirname + '/applets/chanlist.js',\r
51 __dirname + '/applets/scripteditor.js',\r
9df70c63
D
52\r
53 __dirname + '/utils.js',\r
50ac472f
D
54\r
55 __dirname + '/views/panel.js',\r
56 __dirname + '/views/channel.js',\r
57 __dirname + '/views/applet.js',\r
58 __dirname + '/views/application.js',\r
59 __dirname + '/views/apptoolbar.js',\r
60 __dirname + '/views/controlbox.js',\r
61 __dirname + '/views/mediamessage.js',\r
62 __dirname + '/views/member.js',\r
63 __dirname + '/views/memberlist.js',\r
64 __dirname + '/views/menubox.js',\r
65 __dirname + '/views/networktabs.js',\r
66 __dirname + '/views/nickchangebox.js',\r
67 __dirname + '/views/resizehandler.js',\r
68 __dirname + '/views/serverselect.js',\r
69 __dirname + '/views/statusmessage.js',\r
70 __dirname + '/views/tabs.js',\r
71 __dirname + '/views/topicbar.js',\r
72 __dirname + '/views/userbox.js'\r
9df70c63
D
73]);\r
74\r
75\r
eaaf73b0 76src = '(function (global, undefined) {\n\n' + src + '\n\n})(window);';\r
9df70c63
D
77\r
78\r
79fs.writeFileSync(__dirname + '/../kiwi.js', src, FILE_ENCODING);\r
80\r
81\r
82src = uglyfyJS.parser.parse(src);\r
83src = uglyfyJS.uglify.ast_mangle(src);\r
84src = uglyfyJS.uglify.ast_squeeze(src);\r
85fs.writeFileSync(__dirname + '/../kiwi.min.js', uglyfyJS.uglify.gen_code(src), FILE_ENCODING);\r
23533845
D
86\r
87\r
88\r
89\r
8eb39b80
D
90console.log('kiwi.js and kiwi.min.js built');\r
91\r
92\r
93\r
94\r
95\r
96\r
97\r
98\r
99\r
100\r
101/**\r
102 * Build the index.html file\r
103 */\r
104\r
105var index_src = fs.readFileSync(__dirname + '/index.html.tmpl', FILE_ENCODING);\r
106var vars = {\r
0a8a61ad 107 base_path: config.get().http_base_path || '/kiwi',\r
93e84f75 108 cache_buster: Math.ceil(Math.random() * 9000).toString(),\r
76391784
D
109 server_settings: {},\r
110 client_plugins: []\r
8eb39b80
D
111};\r
112\r
2eec3842 113// Any restricted server mode set?\r
93e84f75 114if (config.get().restrict_server) {\r
76391784 115 vars.server_settings = {\r
93e84f75
D
116 connection: {\r
117 server: config.get().restrict_server,\r
118 port: config.get().restrict_server_port || 6667,\r
119 ssl: config.get().restrict_server_ssl,\r
120 channel: config.get().restrict_server_channel,\r
121 nick: config.get().restrict_server_nick,\r
122 allow_change: false\r
123 }\r
76391784
D
124 };\r
125}\r
126\r
127// Any client default settings?\r
128if (config.get().client) {\r
129 vars.server_settings.client = config.get().client;\r
93e84f75
D
130}\r
131\r
2eec3842
D
132// Any client plugins?\r
133if (config.get().client_plugins && config.get().client_plugins.length > 0) {\r
76391784 134 vars.client_plugins = config.get().client_plugins;\r
2eec3842
D
135}\r
136\r
8eb39b80 137_.each(vars, function(value, key) {\r
76391784 138 if (typeof value === 'object') value = JSON.stringify(value);\r
8eb39b80
D
139 index_src = index_src.replace(new RegExp('<%' + key + '%>', 'g'), value);\r
140});\r
141\r
142fs.writeFileSync(__dirname + '/../../index.html', index_src, FILE_ENCODING);\r
143\r
144\r
145console.log('index.html built');