-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathconfig.ts
70 lines (61 loc) · 2.13 KB
/
config.ts
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
import * as crypto from "crypto";
import * as mkdirp from "mkdirp";
// @ts-ignore
import {config as configureDotenv} from "dotenv";
import {ConfigError} from "./errors";
import {UsersDB} from "./models/users";
configureDotenv();
interface GithubConfig {
readonly client_id: string;
readonly client_secret: string;
readonly login_uri: string;
readonly callback_uri: string;
readonly state: string;
}
interface Config {
readonly port: number|string;
readonly host: string;
readonly protocol: string;
readonly corpora_path: string;
readonly secret: string;
readonly environment: string;
readonly github: GithubConfig;
readonly users_db_path: string;
readonly users: UsersDB;
}
// basic app config
const port = process.env.ANNOTATRIX_PORT || process.env.PORT || 5316;
const host = process.env.ANNOTATRIX_HOST || process.env.HOST || "localhost";
const protocol = process.env.ANNOTATRIX_PROTOCOL || process.env.PROTOCOL || "http";
const corpora_path =
process.env.ANNOTATRIX_CORPORA_PATH || process.env.CORPORA_PATH || process.env.PATH_TO_CORPORA || "corpora";
const secret = process.env.ANNOTATRIX_SECRET || process.env.SECRET || "dev secret";
const environment = process.env.ANNOTATRIX_ENV || process.env.NODE_ENV || "development";
// oauth config
let github = {
client_id: process.env.ANNOTATRIX_GH_CLIENT_ID || process.env.GH_CLIENT_ID ||
"298b7a22eb8bc53567d1", // keggsmurph21 'UD-Annotatrix test 2'
client_secret: process.env.ANNOTATRIX_GH_CLIENT_SECRET || process.env.GH_CLIENT_SECRET,
login_uri: `${protocol}://${host}:${port}/oauth/login`,
callback_uri: `${protocol}://${host}:${port}/oauth/callback`,
state: crypto.randomBytes(8).toString("hex")
};
if (!github.client_secret) {
new ConfigError("Please provide ANNOTATRIX_GH_CLIENT_SECRET");
github = null;
}
// database config
mkdirp(corpora_path, () => {}); // TODO: We should use the callback here!
const users_db_path = process.env.ANNOTATRIX_USERS_DB_PATH || ".users";
const users = UsersDB.create(users_db_path);
export const cfg: Config = {
port,
host,
protocol,
corpora_path,
secret,
environment,
github,
users_db_path,
users,
};