forked from LiamKarlMitchell/InfiniteSky
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathutil.js
111 lines (97 loc) · 3.2 KB
/
util.js
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
// This file is part of InfiniteSky.
// Copyright (c) InfiniteSky Dev Teams - Licensed under GNU GPL
// For more information, see LICENCE in the main folder
var fs = require('fs');
function dumpError(err) {
if (typeof err === 'object') {
if (err.message) {
console.error('\n\x1b[31;1m'+ (err.name || 'Error') +': ' + err.message+'\x1b[0m')
}
console.log(new Date());
if (err.stack) {
console.error('\x1b[31;1mStacktrace:\x1b[0m','\n',err.stack.split('\n').splice(1).join('\n'));
}
} else {
console.error('\x1b[31;1m' + err+'\x1b[0m');
}
// Push to redis if required for logging etc
}
var util = {
package: require('./package.json'),
dumpError: dumpError,
logHex: function(data) {
console.log("\n");
var testSplit = data.toString("hex");
testSplit = testSplit.match(/../g);
var lineVal = "";
var hexCounter = 0;
for(var i = 0; i < testSplit.length; i++) {
lineVal += testSplit[i] + " ";
hexCounter++;
if(hexCounter == 15) {
console.log(lineVal);
lineVal = "";
hexCounter = 0;
}
}
},
setupUncaughtExceptionHandler: function () {
process.on('uncaughtException',function(exception) {
dumpError(exception);
});
},
padLeft: function(string,pad,amount) {
return (new Array(amount).join(pad)+string).slice(-amount);
},
// TODO: Make Async?
loadConfig: function(name) {
if (name !== undefined) configFile = name;
if (configFile === undefined) {
return dumpError("loadConfig requires a config file name to be passed as an argument.");
}
console.log('Attempting to load config file: '+configFile);
try {
config = JSON.parse(fs.readFileSync(configFile,{ encoding: 'ascii' }));
//console.log(config.natTranslations);
main.events.emit('config_loaded');
return config;
} catch(ex) {
dumpError(ex);
return null;
}
},
outputHeaderText: function () {
var HeaderText = "\n\
_____ __ _ _ _ _____ _ \n\
|_ _| / _(_) (_) | / ___| | \n\
| | _ __ | |_ _ _ __ _| |_ ___\\ `--.| | ___ _ \n\
| || '_ \\| _| | '_ \\| | __/ _ \\`--. \\ |/ / | | |\n\
_| || | | | | | | | | | | || __/\\__/ / <| |_| |\n\
\\___/_| |_|_| |_|_| |_|_|\\__\\___\\____/|_|\\_\\\\__, |\n\
__/ |\n\
"+util.padLeft('v'+util.package.version+' - '+util.package.version_name,' ',41)+" |___/ \n";
console.log(HeaderText);
console.log('\x1b[36;1m'+ new Date() +'\n\x1b[0m');
// Get last log message from git?
console.log("InfiniteSky Copyright (C) 2014 InfiniteSky Dev Teams\n\
This program comes with ABSOLUTELY NO WARRANTY.\n\
This is free software, and you are welcome to redistribute it\n\
under certain conditions. For more information see LICENSE");
},
// a is array of key names
// b is input array
// returns object with keys set to b indexs in order of a key names
sep: function (a,b) {
var o = {};
for (var i=0;i<a.length;i++) {
if (i>b.length) {
break;
}
o[a[i]] = b[i];
}
return o;
}
}
global.dumpError = dumpError;
global.logHex = util.logHex;
module.exports = util;