refactor code
This commit is contained in:
parent
e34d37da19
commit
0a4bad1ad0
12
dist/index.d.ts
vendored
12
dist/index.d.ts
vendored
@ -1,11 +1 @@
|
||||
export interface IKeyValueObject {
|
||||
key: string;
|
||||
value: string;
|
||||
}
|
||||
export declare class Qenv {
|
||||
requiredEnvVars: string[];
|
||||
availableEnvVars: string[];
|
||||
missingEnvVars: string[];
|
||||
keyValueObjectArray: IKeyValueObject[];
|
||||
constructor(basePathArg: string, envYmlPathArg: any, failOnMissing?: boolean);
|
||||
}
|
||||
export * from './qenv.classes.qenv';
|
||||
|
68
dist/index.js
vendored
68
dist/index.js
vendored
@ -1,65 +1,7 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./qenv.plugins");
|
||||
class Qenv {
|
||||
constructor(basePathArg = process.cwd(), envYmlPathArg, failOnMissing = true) {
|
||||
this.requiredEnvVars = [];
|
||||
this.availableEnvVars = [];
|
||||
this.missingEnvVars = [];
|
||||
this.keyValueObjectArray = [];
|
||||
getRequiredEnvVars(basePathArg, this.requiredEnvVars);
|
||||
getAvailableEnvVars(this.requiredEnvVars, envYmlPathArg, this.availableEnvVars, this.keyValueObjectArray);
|
||||
this.missingEnvVars = 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
function __export(m) {
|
||||
for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
|
||||
}
|
||||
exports.Qenv = Qenv;
|
||||
let getRequiredEnvVars = (pathArg, requiredEnvVarsArray) => {
|
||||
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]);
|
||||
}
|
||||
};
|
||||
let getAvailableEnvVars = (requiredEnvVarsArg, envYmlPathArg, availableEnvVarsArray, keyValueObjectArrayArg) => {
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml');
|
||||
let envYml;
|
||||
try {
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg);
|
||||
}
|
||||
catch (err) {
|
||||
console.log("env file couldn't be found at " + envYmlPathArg);
|
||||
envYml = {};
|
||||
}
|
||||
for (let requiredEnvVar of requiredEnvVarsArg) {
|
||||
if (process.env[requiredEnvVar]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
}
|
||||
else if (envYml.hasOwnProperty(requiredEnvVar)) {
|
||||
process.env[requiredEnvVar] = envYml[requiredEnvVar];
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
let getMissingEnvVars = (requiredEnvVarsArray, availableEnvVarsArray) => {
|
||||
return plugins.lodash.difference(requiredEnvVarsArray, availableEnvVarsArray);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLDBDQUF5QztBQU96QztJQUtFLFlBQWEsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxHQUFHLElBQUk7UUFKN0Usb0JBQWUsR0FBYSxFQUFFLENBQUE7UUFDOUIscUJBQWdCLEdBQWEsRUFBRSxDQUFBO1FBQy9CLG1CQUFjLEdBQWEsRUFBRSxDQUFBO1FBQzdCLHdCQUFtQixHQUFzQixFQUFFLENBQUE7UUFFekMsa0JBQWtCLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUNyRCxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUE7UUFDekcsSUFBSSxDQUFDLGNBQWMsR0FBRyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRXBGLDJCQUEyQjtRQUMzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUE7WUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDaEMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDekIsT0FB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
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
__export(require("./qenv.classes.qenv"));
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlDQUFtQyJ9
|
12
dist/qenv.classes.qenv.d.ts
vendored
Normal file
12
dist/qenv.classes.qenv.d.ts
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
export interface IKeyValueObject {
|
||||
key: string;
|
||||
value: string;
|
||||
}
|
||||
export declare class Qenv {
|
||||
requiredEnvVars: string[];
|
||||
availableEnvVars: string[];
|
||||
missingEnvVars: string[];
|
||||
keyValueObjectArray: IKeyValueObject[];
|
||||
constructor(basePathArg: string, envYmlPathArg: any, failOnMissing?: boolean);
|
||||
getEnvVar(envVarName: any): string;
|
||||
}
|
30
dist/qenv.classes.qenv.js
vendored
Normal file
30
dist/qenv.classes.qenv.js
vendored
Normal file
@ -0,0 +1,30 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const helpers = require("./qenv.helpers");
|
||||
class Qenv {
|
||||
constructor(basePathArg = process.cwd(), envYmlPathArg, failOnMissing = true) {
|
||||
this.requiredEnvVars = [];
|
||||
this.availableEnvVars = [];
|
||||
this.missingEnvVars = [];
|
||||
this.keyValueObjectArray = [];
|
||||
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) {
|
||||
return process.env[envVarName];
|
||||
}
|
||||
}
|
||||
exports.Qenv = Qenv;
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWVudi5jbGFzc2VzLnFlbnYuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi90cy9xZW52LmNsYXNzZXMucWVudi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUNBLDBDQUF5QztBQU96QztJQUtFLFlBQWEsV0FBVyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxhQUFhLEVBQUUsYUFBYSxHQUFHLElBQUk7UUFKN0Usb0JBQWUsR0FBYSxFQUFFLENBQUE7UUFDOUIscUJBQWdCLEdBQWEsRUFBRSxDQUFBO1FBQy9CLG1CQUFjLEdBQWEsRUFBRSxDQUFBO1FBQzdCLHdCQUFtQixHQUFzQixFQUFFLENBQUE7UUFFekMsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFdBQVcsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUE7UUFDN0QsT0FBTyxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxlQUFlLEVBQUUsYUFBYSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQTtRQUNqSCxJQUFJLENBQUMsY0FBYyxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFBO1FBRTVGLDJCQUEyQjtRQUMzQixFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sQ0FBQyxJQUFJLENBQUMsd0JBQXdCLENBQUMsQ0FBQTtZQUN0QyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQTtZQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLG1EQUFtRCxDQUFDLENBQUE7WUFDbEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUE7WUFDaEMsRUFBRSxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztnQkFDbEIsT0FBTyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQTtnQkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUNqQixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLENBQUUsVUFBVTtRQUNuQixNQUFNLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0NBQ0Y7QUExQkQsb0JBMEJDIn0=
|
4
dist/qenv.helpers.d.ts
vendored
Normal file
4
dist/qenv.helpers.d.ts
vendored
Normal file
@ -0,0 +1,4 @@
|
||||
import { IKeyValueObject } from './qenv.classes.qenv';
|
||||
export declare let getRequiredEnvVars: (pathArg: string, requiredEnvVarsArray: string[]) => void;
|
||||
export declare let getAvailableEnvVars: (requiredEnvVarsArg: string[], envYmlPathArg: string, availableEnvVarsArray: string[], keyValueObjectArrayArg: IKeyValueObject[]) => void;
|
||||
export declare let getMissingEnvVars: (requiredEnvVarsArray: string[], availableEnvVarsArray: string[]) => any;
|
42
dist/qenv.helpers.js
vendored
Normal file
42
dist/qenv.helpers.js
vendored
Normal file
@ -0,0 +1,42 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const plugins = require("./qenv.plugins");
|
||||
exports.getRequiredEnvVars = (pathArg, requiredEnvVarsArray) => {
|
||||
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]);
|
||||
}
|
||||
};
|
||||
exports.getAvailableEnvVars = (requiredEnvVarsArg, envYmlPathArg, availableEnvVarsArray, keyValueObjectArrayArg) => {
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml');
|
||||
let envYml;
|
||||
try {
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg);
|
||||
}
|
||||
catch (err) {
|
||||
console.log("env file couldn't be found at " + envYmlPathArg);
|
||||
envYml = {};
|
||||
}
|
||||
for (let requiredEnvVar of requiredEnvVarsArg) {
|
||||
if (process.env[requiredEnvVar]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
}
|
||||
else if (envYml.hasOwnProperty(requiredEnvVar)) {
|
||||
process.env[requiredEnvVar] = envYml[requiredEnvVar];
|
||||
availableEnvVarsArray.push(requiredEnvVar);
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[requiredEnvVar]
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.getMissingEnvVars = (requiredEnvVarsArray, availableEnvVarsArray) => {
|
||||
return plugins.lodash.difference(requiredEnvVarsArray, availableEnvVarsArray);
|
||||
};
|
||||
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicWVudi5oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvcWVudi5oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMENBQXlDO0FBRzlCLFFBQUEsa0JBQWtCLEdBQUcsQ0FBQyxPQUFlLEVBQUUsb0JBQThCO0lBQzlFLElBQUksWUFBWSxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxVQUFVLENBQUMsQ0FBQTtJQUN6RCxJQUFJLFFBQVEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDOUQsR0FBRyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDakMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUUsTUFBTSxDQUFFLENBQUMsQ0FBQTtJQUNwRCxDQUFDO0FBQ0gsQ0FBQyxDQUFBO0FBRVUsUUFBQSxtQkFBbUIsR0FBRyxDQUMvQixrQkFBNEIsRUFDNUIsYUFBcUIsRUFDckIscUJBQStCLEVBQy9CLHNCQUF5QztJQUV6QyxhQUFhLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxFQUFFLFNBQVMsQ0FBQyxDQUFBO0lBQzNELElBQUksTUFBTSxDQUFBO0lBQ1YsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLENBQUMsQ0FBQTtJQUMzRCxDQUFDO0lBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0NBQWdDLEdBQUcsYUFBYSxDQUFDLENBQUE7UUFDN0QsTUFBTSxHQUFHLEVBQUUsQ0FBQTtJQUNiLENBQUM7SUFDRCxHQUFHLENBQUMsQ0FBQyxJQUFJLGNBQWMsSUFBSSxrQkFBa0IsQ0FBQyxDQUFDLENBQUM7UUFDOUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBRSxjQUFjLENBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMscUJBQXFCLENBQUMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1lBQzFDLHNCQUFzQixDQUFDLElBQUksQ0FBQztnQkFDMUIsR0FBRyxFQUFFLGNBQWM7Z0JBQ25CLEtBQUssRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFFLGNBQWMsQ0FBRTthQUNyQyxDQUFDLENBQUE7UUFDSixDQUFDO1FBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2pELE9BQU8sQ0FBQyxHQUFHLENBQUUsY0FBYyxDQUFFLEdBQUcsTUFBTSxDQUFFLGNBQWMsQ0FBRSxDQUFBO1lBQ3hELHFCQUFxQixDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQTtZQUMxQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUM7Z0JBQzFCLEdBQUcsRUFBRSxjQUFjO2dCQUNuQixLQUFLLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBRSxjQUFjLENBQUU7YUFDckMsQ0FBQyxDQUFBO1FBQ0osQ0FBQztJQUNILENBQUM7QUFDSCxDQUFDLENBQUE7QUFFVSxRQUFBLGlCQUFpQixHQUFHLENBQUMsb0JBQThCLEVBQUUscUJBQStCO0lBQzdGLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsRUFBRSxxQkFBcUIsQ0FBQyxDQUFBO0FBQy9FLENBQUMsQ0FBQSJ9
|
75
ts/index.ts
75
ts/index.ts
@ -1,74 +1 @@
|
||||
import * as plugins from './qenv.plugins'
|
||||
|
||||
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) {
|
||||
getRequiredEnvVars(basePathArg, this.requiredEnvVars)
|
||||
getAvailableEnvVars(this.requiredEnvVars, envYmlPathArg, this.availableEnvVars, this.keyValueObjectArray)
|
||||
this.missingEnvVars = 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let getRequiredEnvVars = (pathArg: string, requiredEnvVarsArray: string[]) => {
|
||||
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 ])
|
||||
}
|
||||
}
|
||||
|
||||
let getAvailableEnvVars = (
|
||||
requiredEnvVarsArg: string[],
|
||||
envYmlPathArg: string,
|
||||
availableEnvVarsArray: string[],
|
||||
keyValueObjectArrayArg: IKeyValueObject[]
|
||||
) => {
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml')
|
||||
let envYml
|
||||
try {
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg)
|
||||
} catch (err) {
|
||||
console.log("env file couldn't be found at " + envYmlPathArg)
|
||||
envYml = {}
|
||||
}
|
||||
for (let requiredEnvVar of requiredEnvVarsArg) {
|
||||
if (process.env[ requiredEnvVar ]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
} else if (envYml.hasOwnProperty(requiredEnvVar)) {
|
||||
process.env[ requiredEnvVar ] = envYml[ requiredEnvVar ]
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let getMissingEnvVars = (requiredEnvVarsArray: string[], availableEnvVarsArray: string[]) => {
|
||||
return plugins.lodash.difference(requiredEnvVarsArray, availableEnvVarsArray)
|
||||
}
|
||||
export * from './qenv.classes.qenv'
|
||||
|
35
ts/qenv.classes.qenv.ts
Normal file
35
ts/qenv.classes.qenv.ts
Normal file
@ -0,0 +1,35 @@
|
||||
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) {
|
||||
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]
|
||||
}
|
||||
}
|
46
ts/qenv.helpers.ts
Normal file
46
ts/qenv.helpers.ts
Normal file
@ -0,0 +1,46 @@
|
||||
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)
|
||||
for (let keyArg in qenvFile.vars) {
|
||||
requiredEnvVarsArray.push(qenvFile.vars[ keyArg ])
|
||||
}
|
||||
}
|
||||
|
||||
export let getAvailableEnvVars = (
|
||||
requiredEnvVarsArg: string[],
|
||||
envYmlPathArg: string,
|
||||
availableEnvVarsArray: string[],
|
||||
keyValueObjectArrayArg: IKeyValueObject[]
|
||||
) => {
|
||||
envYmlPathArg = plugins.path.join(envYmlPathArg, 'env.yml')
|
||||
let envYml
|
||||
try {
|
||||
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg)
|
||||
} catch (err) {
|
||||
console.log("env file couldn't be found at " + envYmlPathArg)
|
||||
envYml = {}
|
||||
}
|
||||
for (let requiredEnvVar of requiredEnvVarsArg) {
|
||||
if (process.env[ requiredEnvVar ]) {
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
} else if (envYml.hasOwnProperty(requiredEnvVar)) {
|
||||
process.env[ requiredEnvVar ] = envYml[ requiredEnvVar ]
|
||||
availableEnvVarsArray.push(requiredEnvVar)
|
||||
keyValueObjectArrayArg.push({
|
||||
key: requiredEnvVar,
|
||||
value: process.env[ requiredEnvVar ]
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export let getMissingEnvVars = (requiredEnvVarsArray: string[], availableEnvVarsArray: string[]) => {
|
||||
return plugins.lodash.difference(requiredEnvVarsArray, availableEnvVarsArray)
|
||||
}
|
Loading…
Reference in New Issue
Block a user