− Update code indentation
[KiwiIRC.git] / client / assets / src / build.js
CommitLineData
8eb39b80 1var fs = require('fs'),\r
3ef153aa 2 uglifyJS = 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
3ef153aa 24var source_files = [\r
9df70c63 25 __dirname + '/app.js',\r
2d22d7e2
D
26 __dirname + '/models/application.js',\r
27 __dirname + '/models/gateway.js',\r
28 __dirname + '/models/network.js',\r
29 __dirname + '/models/member.js',\r
30 __dirname + '/models/memberlist.js',\r
31 __dirname + '/models/newconnection.js',\r
32 __dirname + '/models/panel.js',\r
33 __dirname + '/models/panellist.js',\r
34 __dirname + '/models/networkpanellist.js',\r
35 __dirname + '/models/query.js',\r
36 __dirname + '/models/channel.js',\r
37 __dirname + '/models/server.js',\r
38 __dirname + '/models/applet.js',\r
39 __dirname + '/models/pluginmanager.js',\r
40 __dirname + '/models/datastore.js',\r
41\r
42 __dirname + '/applets/settings.js',\r
2d22d7e2
D
43 __dirname + '/applets/chanlist.js',\r
44 __dirname + '/applets/scripteditor.js',\r
9df70c63 45\r
3ea29ac2 46 __dirname + '/helpers/utils.js',\r
50ac472f
D
47\r
48 __dirname + '/views/panel.js',\r
49 __dirname + '/views/channel.js',\r
50 __dirname + '/views/applet.js',\r
51 __dirname + '/views/application.js',\r
52 __dirname + '/views/apptoolbar.js',\r
53 __dirname + '/views/controlbox.js',\r
bd85cbdb 54 __dirname + '/views/favicon.js',\r
50ac472f
D
55 __dirname + '/views/mediamessage.js',\r
56 __dirname + '/views/member.js',\r
57 __dirname + '/views/memberlist.js',\r
58 __dirname + '/views/menubox.js',\r
59 __dirname + '/views/networktabs.js',\r
60 __dirname + '/views/nickchangebox.js',\r
61 __dirname + '/views/resizehandler.js',\r
62 __dirname + '/views/serverselect.js',\r
63 __dirname + '/views/statusmessage.js',\r
64 __dirname + '/views/tabs.js',\r
65 __dirname + '/views/topicbar.js',\r
66 __dirname + '/views/userbox.js'\r
3ef153aa 67];\r
9df70c63
D
68\r
69\r
3ef153aa
JA
70/**\r
71 * Build the kiwi.js/kiwi.min.js files\r
72 */\r
73var src = concat(source_files);\r
eaaf73b0 74src = '(function (global, undefined) {\n\n' + src + '\n\n})(window);';\r
9df70c63
D
75\r
76\r
77fs.writeFileSync(__dirname + '/../kiwi.js', src, FILE_ENCODING);\r
78\r
3ef153aa
JA
79// Uglify can take take an array of filenames to produce minified code\r
80// but it's not wraped in an IIFE and produces a slightly larger file\r
81//src = uglifyJS.minify(source_files);\r
82\r
83var ast = uglifyJS.parse(src, {filename: 'kiwi.js'});\r
84ast.figure_out_scope();\r
85ast = ast.transform(uglifyJS.Compressor({warnings: false}));\r
86ast.figure_out_scope();\r
87ast.compute_char_frequency();\r
88ast.mangle_names();\r
89src = ast.print_to_string();\r
9df70c63 90\r
3ef153aa 91fs.writeFileSync(__dirname + '/../kiwi.min.js', src, FILE_ENCODING);\r
23533845
D
92\r
93\r
94\r
95\r
8eb39b80
D
96console.log('kiwi.js and kiwi.min.js built');\r
97\r
98\r
99\r
100\r
101\r
102\r
103\r
104\r
105\r
106\r
107/**\r
108 * Build the index.html file\r
109 */\r
110\r
111var index_src = fs.readFileSync(__dirname + '/index.html.tmpl', FILE_ENCODING);\r
112var vars = {\r
0a8a61ad 113 base_path: config.get().http_base_path || '/kiwi',\r
93e84f75 114 cache_buster: Math.ceil(Math.random() * 9000).toString(),\r
76391784
D
115 server_settings: {},\r
116 client_plugins: []\r
8eb39b80
D
117};\r
118\r
2eec3842 119// Any restricted server mode set?\r
93e84f75 120if (config.get().restrict_server) {\r
76391784 121 vars.server_settings = {\r
93e84f75
D
122 connection: {\r
123 server: config.get().restrict_server,\r
124 port: config.get().restrict_server_port || 6667,\r
125 ssl: config.get().restrict_server_ssl,\r
126 channel: config.get().restrict_server_channel,\r
127 nick: config.get().restrict_server_nick,\r
128 allow_change: false\r
129 }\r
76391784
D
130 };\r
131}\r
132\r
133// Any client default settings?\r
134if (config.get().client) {\r
135 vars.server_settings.client = config.get().client;\r
93e84f75
D
136}\r
137\r
2eec3842
D
138// Any client plugins?\r
139if (config.get().client_plugins && config.get().client_plugins.length > 0) {\r
76391784 140 vars.client_plugins = config.get().client_plugins;\r
2eec3842
D
141}\r
142\r
8eb39b80 143_.each(vars, function(value, key) {\r
76391784 144 if (typeof value === 'object') value = JSON.stringify(value);\r
8eb39b80
D
145 index_src = index_src.replace(new RegExp('<%' + key + '%>', 'g'), value);\r
146});\r
147\r
148fs.writeFileSync(__dirname + '/../../index.html', index_src, FILE_ENCODING);\r
149\r
150\r
151console.log('index.html built');