Code coverage report for ampersand/lib/app/getPackageFile.js

Statements: 95.24% (20 / 21)      Branches: 50% (1 / 2)      Functions: 100% (3 / 3)      Lines: 95.24% (20 / 21)      Ignored: none     

All files » ampersand/lib/app/ » getPackageFile.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 551       1   2 2 2     2 7       2 2 2           2 2 2   2       1                             1 6 6 59   6    
var fs = require('fs');
 
 
// returns populated JS structure for package.json file based on options
module.exports = function (config) {
    // do this each time to avoid any issues with caching
    var frameworkDeps = deps[config.framework];
    var pack = JSON.parse(fs.readFileSync(__dirname + '/templatePackage.json', {encoding: 'utf8'}));
    var key;
 
    // extend our dependencies
    for (key in frameworkDeps) {
        pack.dependencies[key] = frameworkDeps[key];
    }
 
    // set name and author (if provided)
    pack.name = config.machineName;
    Eif (config.author) {
        pack.author = config.author;
    } else {
        delete pack.author;
    }
 
    // sort object keys alphabetically
    pack.dependencies = sortObjectKeysAlphabetically(pack.dependencies);
    pack.devDependencies = sortObjectKeysAlphabetically(pack.devDependencies);
    pack.jshintConfig = sortObjectKeysAlphabetically(pack.jshintConfig);
 
    return pack;
}
 
// our list of dependencies for each
var deps = {
    express: {
        "express": "3.x.x",
        "jade": "1.x.x",
        "helmet": "0.1.2",
        "moonboots": "1.x.x",
        "semi-static": "0.0.5"
    },
    hapi: {
        "hapi": "2.x.x",
        "moonboots_hapi": "2.x.x"
    }
};
 
// because I'm anal
function sortObjectKeysAlphabetically(object) {
    var sorted = {};
    Object.keys(object).sort().forEach(function (key) {
        sorted[key] = object[key];
    });
    return sorted;
}