This repository has been archived by the owner on Jan 23, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathupdate.js
executable file
·72 lines (67 loc) · 2.15 KB
/
update.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
#!/bin/sh
':' //; exec "$(command -v nodejs || command -v node)" "$0" "$@"
"use strict";
var sys = require("sys"),
async = require("async"),
mongojs = require("mongojs"),
uuid = require("node-uuid"),
read = require("read"),
crypto = require("crypto"),
fs = require("fs"),
defaultSettings = require("./lib/defaultSettings.json"),
packageJson = require("./package.json"),
// init variables that rely on a config file
config = require("./config.json"),
mongo = mongojs(config.mongo.url),
database = require("./lib/database")(mongo);
async.waterfall([
function initDatabase(waterfallDone) {
console.log(" ");
console.log("------------------");
console.log("Initializing database...");
database.createIndexes(waterfallDone);
},
function createDefaultSettings(waterfallDone) {
console.log(" ");
console.log("------------------");
console.log("Insert default settings...");
var settingsCollection = mongo.collection("settings");
async.each(Object.getOwnPropertyNames(defaultSettings), function (key, eachDone) {
settingsCollection.update({
key: key
}, {
$setOnInsert: {
key: key,
value: defaultSettings[key]
}
}, {
upsert: true
}, function (error) {
eachDone(error);
});
}, function eachDone(error) {
waterfallDone(error);
});
},
function updateVersion(waterfallDone) {
mongo.collection("settings").update({
key: "version"
}, {
key: "version",
value: packageJson.version
}, {
upsert: true
}, function (error) {
waterfallDone(error);
});
}
], function waterfallDone(error) {
if (error) {
console.log(error);
process.exit(1);
}
console.log(" ");
console.log("------------------");
console.log("Finished installation.");
process.exit();
});