diff --git a/packages/config/package.json b/packages/config/package.json index 09056cd1e..33ab4705a 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -26,6 +26,7 @@ }, "homepage": "https://github.com/smartbear/git-en-boite#readme", "dependencies": { + "env-var": "^7.0.0", "ioredis": "^4.19.2" }, "devDependencies": { diff --git a/packages/config/src/config.ts b/packages/config/src/config.ts index f589af1cd..c3d4588f4 100644 --- a/packages/config/src/config.ts +++ b/packages/config/src/config.ts @@ -1,4 +1,5 @@ import path from 'path' +import * as getEnv from 'env-var' const appRoot = path.resolve(__dirname, '../../..') @@ -18,10 +19,9 @@ export type LoggerOptions = { readableBy: 'humans' | 'machines' | 'nobody' } -const createGitConfig = (env: { GIT_ROOT?: string }): GitOptions => { - if (!env.GIT_ROOT) throw new Error('Please set GIT_ROOT') +const createGitConfig = (env: { get: (key: string) => getEnv.IOptionalVariable }): GitOptions => { return { - root: env.GIT_ROOT, + root: env.get('GIT_ROOT').required().asString(), queueName: 'main', } } @@ -35,9 +35,8 @@ const createVersionConfig = (env: { npm_package_version?: string }, fs: any): st return `${env.npm_package_version}.${fs.readFileSync(buildNumPath)}` } -const createRedisConfig = (env: { REDIS_URL?: string }): string => { - if (!env.REDIS_URL) throw new Error('Please set REDIS_URL') - return env.REDIS_URL +const createRedisConfig = (env: { get: (key: string) => getEnv.IOptionalVariable }): string => { + return env.get('REDIS_URL').required().asString() } const createLoggerConfig = (env: { NODE_ENV?: string }): LoggerOptions => { @@ -51,12 +50,13 @@ type Environment = { npm_package_version?: string } -export const createConfig = (env: Environment = process.env, fs = require('fs')): Config => { - if (!env.NODE_ENV) throw new Error('Please set NODE_ENV') +export const createConfig = (rawEnv: Environment = process.env, fs = require('fs')): Config => { + const env = getEnv.from(rawEnv) + if (!rawEnv.NODE_ENV) throw new Error('Please set NODE_ENV') return { git: createGitConfig(env), - version: createVersionConfig(env, fs), + version: createVersionConfig(rawEnv, fs), redis: createRedisConfig(env), - logger: createLoggerConfig(env), + logger: createLoggerConfig(rawEnv), } } diff --git a/yarn.lock b/yarn.lock index 785914e5a..57a8d0f0e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2109,6 +2109,11 @@ enquirer@^2.3.5: dependencies: ansi-colors "^3.2.1" +env-var@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/env-var/-/env-var-7.0.0.tgz#db3e4733ec419d8fa3bc49b67a4d2ff8cbb14294" + integrity sha512-XnoXQhg98QpSQqpBjySM3VjXGVrIvisgFbFURxAxOymarLzlcdvy6Y3qlnvZFaAp5j99qwSbRwqbrZtug/0x9w== + error-ex@^1.2.0, error-ex@^1.3.1: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf"