Client user script editor
[KiwiIRC.git] / client / assets / dev / build.js
1 var fs = require('fs'),
2 uglyfyJS = require('uglify-js'),
3 _ = require('lodash'),
4 config = require('./../../../server/configuration.js');
5
6 var FILE_ENCODING = 'utf-8',
7 EOL = '\n';
8
9
10 function concat(src) {
11 var file_list = src;
12 var out = file_list.map(function(file_path){
13 return fs.readFileSync(file_path, FILE_ENCODING) + '\n\n';
14 });
15
16 return out.join(EOL);
17 }
18
19
20
21 config.loadConfig();
22
23
24
25
26
27 /**
28 * Build the _kiwi.js files
29 */
30
31 var src = concat([
32 __dirname + '/app.js',
33 __dirname + '/model_application.js',
34 __dirname + '/model_gateway.js',
35 __dirname + '/model_member.js',
36 __dirname + '/model_memberlist.js',
37 __dirname + '/model_panel.js',
38 __dirname + '/model_panellist.js',
39 __dirname + '/model_query.js',
40 __dirname + '/model_channel.js',
41 __dirname + '/model_server.js',
42 __dirname + '/model_applet.js',
43 __dirname + '/model_pluginmanager.js',
44 __dirname + '/model_datastore.js',
45
46 __dirname + '/applet_settings.js',
47 __dirname + '/applet_nickserv.js',
48 __dirname + '/applet_chanlist.js',
49 __dirname + '/applet_scripteditor.js',
50
51 __dirname + '/utils.js',
52 __dirname + '/view.js'
53 ]);
54
55
56 src = '(function (global, undefined) {\n\n' + src + '\n\n})(window);';
57
58
59 fs.writeFileSync(__dirname + '/../kiwi.js', src, FILE_ENCODING);
60
61
62 src = uglyfyJS.parser.parse(src);
63 src = uglyfyJS.uglify.ast_mangle(src);
64 src = uglyfyJS.uglify.ast_squeeze(src);
65 fs.writeFileSync(__dirname + '/../kiwi.min.js', uglyfyJS.uglify.gen_code(src), FILE_ENCODING);
66
67
68
69
70 console.log('kiwi.js and kiwi.min.js built');
71
72
73
74
75
76
77
78
79
80
81 /**
82 * Build the index.html file
83 */
84
85 var index_src = fs.readFileSync(__dirname + '/index.html.tmpl', FILE_ENCODING);
86 var vars = {
87 base_path: config.get().http_base_path || '/kiwi',
88 cache_buster: Math.ceil(Math.random() * 9000).toString(),
89 server_settings: {},
90 client_plugins: []
91 };
92
93 // Any restricted server mode set?
94 if (config.get().restrict_server) {
95 vars.server_settings = {
96 connection: {
97 server: config.get().restrict_server,
98 port: config.get().restrict_server_port || 6667,
99 ssl: config.get().restrict_server_ssl,
100 channel: config.get().restrict_server_channel,
101 nick: config.get().restrict_server_nick,
102 allow_change: false
103 }
104 };
105 }
106
107 // Any client default settings?
108 if (config.get().client) {
109 vars.server_settings.client = config.get().client;
110 }
111
112 // Any client plugins?
113 if (config.get().client_plugins && config.get().client_plugins.length > 0) {
114 vars.client_plugins = config.get().client_plugins;
115 }
116
117 _.each(vars, function(value, key) {
118 if (typeof value === 'object') value = JSON.stringify(value);
119 index_src = index_src.replace(new RegExp('<%' + key + '%>', 'g'), value);
120 });
121
122 fs.writeFileSync(__dirname + '/../../index.html', index_src, FILE_ENCODING);
123
124
125 console.log('index.html built');