-
-
Notifications
You must be signed in to change notification settings - Fork 22
/
Copy pathupdaterList.js
71 lines (63 loc) · 1.62 KB
/
updaterList.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
const { readFileSync, writeFileSync, existsSync} = require("fs");
const { join } = require("path");
const log = require("debug")("niles:updater-list");
const basePath = process.env.STORE_PATH ?? join(__dirname, "..", "stores");
const filename = join(basePath, "todo_list.json");
/**
* Load json file
* @returns {[{guild, channel}]} - Array with objects containing guild and chnanel
*/
const load = () => !existsSync(filename) ? [] : safeLoadFile();
const safeLoadFile = () => {
try {
const data = readFileSync(filename, "utf8");
const json = JSON.parse(data);
return json.list;
} catch (err) {
return [];
}
};
/**
* Append guild to list
* @param {String} list
*/
function write(list) {
writeFileSync(filename, JSON.stringify({list}, null, 4), (err) => { if (err) console.log(err); });
}
/**
* Append guild to list
* @param {String} guild - guildID to remove
* @param {String} channel - channelID to send to
*/
function append(guild, channel) {
let list = load();
list.push({guild, channel});
write(list);
log(`append ${guild}`);
}
/**
* remove guild from list
* @param {String} guild - guildID to remove
*/
function remove(guild) {
let list = load();
list = list.filter((item) => item.guild !== guild); // recreate list without target
write(list);
log(`remove ${guild}`);
}
/**
* check if guild exists
* @param {String} guild
*/
const exists = (guild) => load().some((obj) => obj.guild === guild);
/**
* Load iterator from array
* @returns {Iterator} - Iterator
*/
const getIterator = () => load()[Symbol.iterator]();
module.exports = {
append,
remove,
exists,
getIterator
};