add keyValueObjectArray

This commit is contained in:
2016-08-04 16:09:39 +02:00
parent d7a0541d81
commit 11a2cf83ee
7 changed files with 94 additions and 65 deletions

View File

@ -1,12 +1,18 @@
import * as plugins from "./qenv.plugins";
export interface keyValueObject {
key: string,
value: string
};
export class Qenv {
requiredEnvVars:string[];
availableEnvVars:string[];
missingEnvVars:string[];
requiredEnvVars:string[] = [];
availableEnvVars:string[] = [];
missingEnvVars:string[] = [];
keyValueObjectArray:keyValueObject[] = [];
constructor(basePathArg = process.cwd(),envYmlPathArg,failOnMissing = true){
this.requiredEnvVars = getRequiredEnvVars(basePathArg);
this.availableEnvVars = getAvailableEnvVars(this.requiredEnvVars,envYmlPathArg);
getRequiredEnvVars(basePathArg,this.requiredEnvVars);
getAvailableEnvVars(this.requiredEnvVars,envYmlPathArg,this.availableEnvVars,this.keyValueObjectArray);
this.missingEnvVars = getMissingEnvVars(this.requiredEnvVars,this.availableEnvVars);
//handle missing variables
@ -20,42 +26,47 @@ export class Qenv {
process.exit(1);
}
}
}
};
};
let getRequiredEnvVars = (pathArg:string):string[] => {
let result:string[] = [];
let getRequiredEnvVars = (pathArg:string, requiredEnvVarsArray:string[]) => {
let qenvFilePath = plugins.path.join(pathArg,"qenv.yml");
let qenvFile = plugins.smartfile.local.toObjectSync(qenvFilePath);
let qenvFile = plugins.smartfile.fs.toObjectSync(qenvFilePath);
for(let keyArg in qenvFile.vars){
result.push(qenvFile.vars[keyArg]);
}
return result;
requiredEnvVarsArray.push(qenvFile.vars[keyArg]);
};
}
let getAvailableEnvVars = (requiredEnvVarsArg:string[],envYmlPathArg:string):string[] => {
let result = [];
let getAvailableEnvVars = (requiredEnvVarsArg:string[],envYmlPathArg:string,availableEnvVarsArray:string[],keyValueObjectArrayArg:keyValueObject[]) => {
envYmlPathArg = plugins.path.join(envYmlPathArg,"env.yml")
let envYml;
try {
envYml = plugins.smartfile.local.toObjectSync(envYmlPathArg);
envYml = plugins.smartfile.fs.toObjectSync(envYmlPathArg);
}
catch(err){
plugins.beautylog.log("env file couldn't be found at " + envYmlPathArg)
envYml = {};
}
for(let keyArg in requiredEnvVarsArg){
let requiredEnvVar:string = requiredEnvVarsArg[keyArg];
for(let requiredEnvVar of requiredEnvVarsArg){
if(process.env[requiredEnvVar]){
result.push(requiredEnvVar);
availableEnvVarsArray.push(requiredEnvVar);
keyValueObjectArrayArg.push({
key: requiredEnvVar,
value: process.env[requiredEnvVar]
});
} else if(envYml.hasOwnProperty(requiredEnvVar)){
process.env[requiredEnvVar] = envYml[requiredEnvVar];
result.push(requiredEnvVar);
availableEnvVarsArray.push(requiredEnvVar);
keyValueObjectArrayArg.push({
key: requiredEnvVar,
value: process.env[requiredEnvVar]
});
}
}
return result;
}
};
};
let getMissingEnvVars = (requiredEnvVarsArray:string[],availableEnvVarsArray:string[]) => {
return plugins.lodash.difference(requiredEnvVarsArray,availableEnvVarsArray);
}
};