qenv/ts/qenv.classes.qenv.ts

38 lines
1.2 KiB
TypeScript

import * as plugins from './qenv.plugins'
import * as helpers from './qenv.helpers'
export interface IKeyValueObject {
key: string,
value: string
}
export class Qenv {
requiredEnvVars: string[] = []
availableEnvVars: string[] = []
missingEnvVars: string[] = []
keyValueObjectArray: IKeyValueObject[] = []
constructor (basePathArg = process.cwd(), envYmlPathArg, failOnMissing = true) {
basePathArg = plugins.path.resolve(basePathArg)
envYmlPathArg = plugins.path.resolve(envYmlPathArg)
helpers.getRequiredEnvVars(basePathArg, this.requiredEnvVars)
helpers.getAvailableEnvVars(this.requiredEnvVars, envYmlPathArg, this.availableEnvVars, this.keyValueObjectArray)
this.missingEnvVars = helpers.getMissingEnvVars(this.requiredEnvVars, this.availableEnvVars)
// handle missing variables
if (this.missingEnvVars.length > 0) {
console.info('Required Env Vars are:')
console.log(this.requiredEnvVars)
console.error('However some Env variables could not be resolved:')
console.log(this.missingEnvVars)
if (failOnMissing) {
console.error('Exiting!')
process.exit(1)
}
}
}
getEnvVar (envVarName): string {
return process.env[envVarName]
}
}