58 lines
1.6 KiB
JavaScript
58 lines
1.6 KiB
JavaScript
const Joi = require('joi');
|
|
const path = require('path');
|
|
// require and configure dotenv, will load vars in .env in PROCESS.ENV
|
|
const envPath = path.resolve(__dirname, '../probot/.env');
|
|
require('dotenv').config({ path: envPath });
|
|
|
|
// define validation for all the env vars
|
|
const envVarsSchema = Joi.object({
|
|
NODE_ENV: Joi.string()
|
|
.allow(['development', 'production', 'test', 'provision'])
|
|
.default('development'),
|
|
PORT: Joi.number().default(3001),
|
|
MONGO_HOST: Joi.string()
|
|
.required()
|
|
.description('Mongo DB host url'),
|
|
MONGO_PORT: Joi.number().default(27017),
|
|
GITHUB_USERNAME: Joi.string().required(),
|
|
GITHUB_ACCESS_TOKEN: Joi.string().required(),
|
|
REPOSITORY_OWNER: Joi.string().required(),
|
|
REPOSITORY: Joi.string().required(),
|
|
PRODUCTION_RUN: Joi.boolean()
|
|
.default(false),
|
|
WEBHOOK_PROXY_URL: Joi.string().required(),
|
|
APP_ID: Joi.number().required(),
|
|
WEBHOOK_SECRET: Joi.string().required()
|
|
})
|
|
.unknown()
|
|
.required();
|
|
|
|
const { error, value: envVars } = Joi.validate(process.env, envVarsSchema);
|
|
if (error) {
|
|
throw new Error(`Config validation error: ${error.message}`);
|
|
}
|
|
|
|
const config = {
|
|
env: envVars.NODE_ENV,
|
|
mongo: {
|
|
host: envVars.MONGO_HOST,
|
|
port: envVars.MONGO_PORT
|
|
},
|
|
github: {
|
|
id: envVars.GITHUB_USERNAME,
|
|
secret: envVars.GITHUB_ACCESS_TOKEN,
|
|
owner: envVars.REPOSITORY_OWNER,
|
|
repo: envVars.REPOSITORY,
|
|
probot: {
|
|
webhookUrl: envVars.WEBHOOK_PROXY_URL,
|
|
webhookSecret: envVars.WEBHOOK_SECRET,
|
|
appID: envVars.APP_ID
|
|
}
|
|
},
|
|
oneoff: {
|
|
productionRun: envVars.PRODUCTION_RUN
|
|
}
|
|
};
|
|
|
|
module.exports = config;
|