-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathutils.js
More file actions
95 lines (82 loc) · 2.49 KB
/
Copy pathutils.js
File metadata and controls
95 lines (82 loc) · 2.49 KB
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
//utils.js
const fs = require('fs-extra'); //filesystem
const path = require('path');
const {join} = require('path');
const stringify = require('json-stringify-safe');
// const logger = require(__dirname + '/logger.js');
// const log = require('debug')('utils.js');
const log = function logger(namespace){
const logger = require('debug')(namespace);
logger.enabled = true;
logger.log = console.log.bind(console);
return logger;
};
const req = function smartRequire(file) {
let err = false;
try{
return require(file);
} catch(e1){
// log('%O\n%s', e1, e1.stack.split('\n').slice(7).join('\n'));
err = e1;
}
try{
return require(join(global.rDir, file));
} catch(e2){
// log('%O\n%s', e2, e2.stack.split('\n').slice(7).join('\n'));
err = e2;
}
if(err){
console.error('%O\n%s', err, err.stack.split('\n').slice(7).join('\n'));
throw err;
}
};
const writeFile = function writeFile(filename, contents){
fs.writeFileSync(filename, contents, "utf8");
}
const getRandomItem = function getRandomItem(list){
if(!list) return false;
return list[Math.floor(Math.random() * list.length)];
};
const checkPermissions = function checkPermissions(message, requiredPermissions){
if(!requiredPermissions){
return true;
}
if(!message.member){
return false;
}
// log.crit(requiredPermissions);
// log.info(requiredPermissions);
try{
return message.member.hasPermission(requiredPermissions, false, true, true);
}catch(err){
return log(err);
}
}
const readJSON = async function readJSON(jsonFile){
console.log('reading file: %o', jsonFile);
try{
const data = await fs.readFileSync(jsonFile, "utf8");
console.log('parsing data');
const parsed = await JSON.parse(data);
console.log('data parsed!');
return parsed;
// console.log(data);
// return await JSON.parse(data);
}catch(err){
console.log(`could not read jsonFile ${jsonFile}`);
console.log(`${err.stack}`);
}
}
const writeJSON = async function writeJSON(jsonFile, data){
log('writing to JSONfile: %s', jsonFile);
const string = stringify(data, undefined, '\t');
await fs.writeFileSync(jsonFile, string, "utf8");
log('done writing');
}
module.exports.checkPermissions = checkPermissions;
module.exports.getRandomItem = getRandomItem;
module.exports.writeFile = writeFile;
module.exports.readJSON = readJSON;
module.exports.writeJSON = writeJSON;
module.exports.log = log;
module.exports.req = req;