refactor code
This commit is contained in:
		
							
								
								
									
										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)
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user