relay/src/config.ts

79 lines
1.4 KiB
TypeScript
Raw Normal View History

2022-07-05 19:02:07 +00:00
// @ts-ignore
import Config from "@lumeweb/cfg";
2022-07-23 00:27:54 +00:00
import * as os from "os";
import * as fs from "fs";
2022-07-23 00:27:54 +00:00
import path from "path";
2022-12-07 05:46:16 +00:00
import log from "loglevel";
import chalk, { ChalkInstance } from "chalk";
import prefix from "loglevel-plugin-prefix";
2022-07-05 19:02:07 +00:00
const config = new Config("lumeweb-relay");
2022-07-05 19:02:07 +00:00
let configDir;
2022-07-23 00:27:54 +00:00
switch (os.platform()) {
case "win32":
configDir = path.join(
path.dirname(require?.main?.filename as string),
"config"
);
2022-07-23 00:27:54 +00:00
break;
case "linux":
default:
configDir = "/etc/lumeweb/relay/config.d";
2022-07-23 00:27:54 +00:00
break;
}
2022-07-05 19:02:07 +00:00
config.inject({
2022-09-21 20:09:34 +00:00
configDir,
2022-07-26 00:18:31 +00:00
port: 8080,
2022-07-24 00:24:19 +00:00
logLevel: "info",
pluginDir: path.resolve(configDir, "..", "plugins"),
plugins: ["core"],
ssl: false,
2022-07-05 19:02:07 +00:00
});
config.load({
2022-07-19 22:31:15 +00:00
env: true,
argv: true,
2022-07-05 19:02:07 +00:00
});
2022-09-21 20:09:34 +00:00
configDir = config.str("configdir");
if (fs.existsSync(configDir)) {
try {
config.openDir(configDir);
} catch (e) {
console.error((e as Error).message);
}
2022-07-23 00:27:54 +00:00
}
2022-07-05 19:02:07 +00:00
config.load({
env: true,
argv: true,
});
2022-12-07 05:46:16 +00:00
log.setDefaultLevel(config.get("loglevel"));
const colors = {
TRACE: chalk.magenta,
DEBUG: chalk.cyan,
INFO: chalk.blue,
WARN: chalk.yellow,
ERROR: chalk.red,
} as { [level: string]: ChalkInstance };
prefix.reg(log);
log.enableAll();
prefix.apply(log, {
format(level, name, timestamp) {
return `${chalk.gray(`[${timestamp}]`)} ${colors[level.toUpperCase()](
level
)} ${chalk.green(`${name}:`)}`;
},
});
2022-07-05 19:02:07 +00:00
export default config;