This avoids having to manipulate config files in brittle bash entrypoints that need to react to dynamic service discovery. This significantly improves the operability of various bench sites.
54 lines
1.3 KiB
JavaScript
54 lines
1.3 KiB
JavaScript
const fs = require("fs");
|
|
const path = require("path");
|
|
const redis = require("redis");
|
|
const bench_path = path.resolve(__dirname, "..", "..");
|
|
|
|
function get_conf() {
|
|
// defaults
|
|
var conf = {
|
|
socketio_port: 3000,
|
|
};
|
|
|
|
var read_config = function (file_path) {
|
|
const full_path = path.resolve(bench_path, file_path);
|
|
|
|
if (fs.existsSync(full_path)) {
|
|
var bench_config = JSON.parse(fs.readFileSync(full_path));
|
|
for (var key in bench_config) {
|
|
if (bench_config[key]) {
|
|
conf[key] = bench_config[key];
|
|
}
|
|
}
|
|
}
|
|
};
|
|
|
|
// get ports from bench/config.json
|
|
read_config("config.json");
|
|
read_config("sites/common_site_config.json");
|
|
|
|
// set overrides from environment
|
|
if (process.env.FRAPPE_SITE) {
|
|
conf.default_site = process.env.FRAPPE_SITE;
|
|
}
|
|
if (process.env.FRAPPE_REDIS_CACHE) {
|
|
conf.redis_cache = process.env.FRAPPE_REDIS_CACHE;
|
|
}
|
|
if (process.env.FRAPPE_REDIS_QUEUE) {
|
|
conf.redis_queue = process.env.FRAPPE_REDIS_QUEUE;
|
|
}
|
|
if (process.env.FRAPPE_SOCKETIO_PORT) {
|
|
conf.socketio_port = process.env.FRAPPE_SOCKETIO_PORT;
|
|
}
|
|
return conf;
|
|
}
|
|
|
|
function get_redis_subscriber(kind = "redis_queue", options = {}) {
|
|
const conf = get_conf();
|
|
const host = conf[kind];
|
|
return redis.createClient({ url: host, ...options });
|
|
}
|
|
|
|
module.exports = {
|
|
get_conf,
|
|
get_redis_subscriber,
|
|
};
|