示例#1
0
rewriteVariablesToFile = function(configFileName, myVariables, callback){
    var my_doc;
    var combinedDictionary = {}
    my_doc = fsutil.readYAMLSync(path.normalize(configFileName));
    if( (! my_doc) || (! my_doc.variables)) {
        my_doc = {};
    }
    if ( ! myVariables ) { 
        myVariables = {};
    }
    var variableArray = [];
    if (! Array.isArray(myVariables)) {
        console.log('not an array, pushing');
        variableArray.push(myVariables);
    } else {
        variableArray = myVariables;
    }
    for ( var m_varArrayIndex = 0; m_varArrayIndex < variableArray.length; m_varArrayIndex++) {
        var variables = variableArray[m_varArrayIndex] || [{}];
        //variables is an array of variable arrays
        for ( var m_varIndex = 0; m_varIndex < variables.length; m_varIndex++ ) {
            // now variables[m_varIndex] is a hash
            // iterate over the hash keys now
            for (m_var in variables[m_varIndex] ) {
                // we need to operate on the actual key
                if (! combinedDictionary[m_var]) {
                    combinedDictionary[m_var] = variables[m_varIndex][m_var];
                } else {
                    var mergedDictionary = mergeOptions(combinedDictionary[m_var], variables[m_varIndex]);
                    combinedDictionary[m_var] = mergedDictionary;
                }
            }
        };
        if ( ! my_doc['variables'] ) {continue;}
        for ( var m_varIndex = 0; m_varIndex < my_doc['variables'].length; m_varIndex++ ) {
            var m_var = my_doc['variables'][m_varIndex];
            var obj = {};
            if (! combinedDictionary[m_var]) {
                obj = my_doc['variables'][m_var];
                combinedDictionary[m_var] = obj;
            } else {
                var mergedDictionary = mergeOptions(combinedDictionary[m_var], my_doc['variables'][m_var]);
                combinedDictionary[m_var] = mergedDictionary;
            }
        };
    }
    for(m_var in combinedDictionary){
        delete combinedDictionary[m_var]['namespace']
    }
    combinedDictionary = {variables: combinedDictionary};
    var conf = yaml.dump(combinedDictionary, {indent: 4, sortKeys: true});
    fs.writeFile(configFileName, conf, function(err) {
        if(err) {
            return callback(err, null);
        } else {
            return callback(null, true);
        }
        
    }); 
};
示例#2
0
module.exports.validateRequiredVariables = function(file, done){
    my_doc = fsutil.readYAMLSync(path.normalize(file));
    if(!my_doc['variables']) { return true; }

    var missingRequiredVaribles = [];
    for(var key in my_doc['variables']){
        var myVar = my_doc['variables'][key];
        // if this is required, we need to have a default or value set
        var missingValue = variableIsMissingValue(myVar);
        var isRequired = variableIsRequired(myVar);
        var isMissing = ( Object.keys(myVar).length === 0 );
        var notExcludable = variableIsNotExcludable(myVar);
        if ( ((isMissing) || (missingValue && isRequired)) && notExcludable) {
            missingRequiredVaribles.push({key: myVar});
            console.log("ERROR: " + key + " is missing and required - please add a default value");
        }
    }
    if(missingRequiredVaribles.length > 0) {
        err = new Error("Missing and required variables");
        return done(err, null);
    } else {
        return done(null, true);
    }
};