BREAKING CHANGE(scope): change scope to @pushrocks/
This commit is contained in:
@ -1 +1 @@
|
||||
export * from './qenv.classes.qenv'
|
||||
export * from './qenv.classes.qenv';
|
||||
|
@ -1,37 +1,42 @@
|
||||
import * as plugins from './qenv.plugins'
|
||||
import * as helpers from './qenv.helpers'
|
||||
import * as plugins from './qenv.plugins';
|
||||
import * as helpers from './qenv.helpers';
|
||||
|
||||
export interface IKeyValueObject {
|
||||
key: string,
|
||||
value: string
|
||||
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)
|
||||
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)
|
||||
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)
|
||||
console.error('Exiting!');
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
getEnvVar (envVarName): string {
|
||||
return process.env[envVarName]
|
||||
getEnvVar(envVarName): string {
|
||||
return process.env[envVarName];
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,13 @@
|
||||
import * as plugins from './qenv.plugins'
|
||||
import { IKeyValueObject } from './qenv.classes.qenv'
|
||||
import * as plugins from './qenv.plugins';
|
||||
import { IKeyValueObject } from './qenv.classes.qenv';
|
||||
|
||||
export let getRequiredEnvVars = (pathArg: string, requiredEnvVarsArray: string[]) => {
|
||||
let qenvFilePath = plugins.path.join(pathArg, 'qenv.yml')
|
||||
let qenvFile = plugins.smartfile.fs.toObjectSync(qenvFilePath)
|
||||
let qenvFilePath = plugins.path.join(pathArg, 'qenv.yml');
|
||||
let qenvFile = plugins.smartfile.fs.toObjectSync(qenvFilePath);
|
||||
for (let keyArg in qenvFile.vars) {
|
||||
requiredEnvVarsArray.push(qenvFile.vars[ keyArg ])
|
||||
requiredEnvVarsArray.push(qenvFile.vars[keyArg]);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export let getAvailableEnvVars = (
|
||||
requiredEnvVarsArg: string[],
|
||||
@ -15,32 +15,41 @@ export let getAvailableEnvVars = (
|
||||
availableEnvVarsArray: string[],
|
||||
keyValueObjectArrayArg: IKeyValueObject[]
|
||||
) => {
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml')
|
||||
let envYml
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml');
|
||||
let envYml;
|
||||
try {
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg)
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg);
|
||||
} catch (err) {
|
||||
console.log("env file couldn't be found at " + envYmlPathArg)
|
||||
envYml = {}
|
||||
console.log("env file couldn't be found at " + envYmlPathArg);
|
||||
envYml = {};
|
||||
}
|
||||
for (let requiredEnvVar of requiredEnvVarsArg) {
|
||||
if (process.env[ requiredEnvVar ]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
if (process.env[requiredEnvVar]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
} else if (envYml.hasOwnProperty(requiredEnvVar)) {
|
||||
process.env[ requiredEnvVar ] = envYml[ requiredEnvVar ]
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
process.env[requiredEnvVar] = envYml[requiredEnvVar];
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
export let getMissingEnvVars = (requiredEnvVarsArray: string[], availableEnvVarsArray: string[]) => {
|
||||
return plugins.lodash.difference(requiredEnvVarsArray, availableEnvVarsArray)
|
||||
}
|
||||
export let getMissingEnvVars = (
|
||||
requiredEnvVarsArray: string[],
|
||||
availableEnvVarsArray: string[]
|
||||
): string[] => {
|
||||
const missingEnvVars: string[] = [];
|
||||
for (const envVar of requiredEnvVarsArray) {
|
||||
if (!availableEnvVarsArray.includes(envVar)) {
|
||||
missingEnvVars.push(envVar);
|
||||
}
|
||||
}
|
||||
return missingEnvVars;
|
||||
};
|
||||
|
@ -1,4 +1,2 @@
|
||||
import 'typings-global'
|
||||
export let lodash = require('lodash')
|
||||
export import path = require('path')
|
||||
export import smartfile = require('smartfile')
|
||||
export import path = require('path');
|
||||
export import smartfile = require('@pushrocks/smartfile');
|
||||
|
Reference in New Issue
Block a user