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

Statements: 92.86% (26 / 28)      Branches: 75% (6 / 8)      Functions: 100% (5 / 5)      Lines: 96.3% (26 / 27)      Ignored: none     

All files » ampersand/lib/app/ » generateApp.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 55 56 57 58 59 60 61 62 631 1 1 1   1 1 1                       1 2         2             2 7     2   86 86     2 2   2 1   2 2       1 2 5   5   5      
var fs = require('fs');
var ncp = require('ncp').ncp;
var rimraf = require('rimraf');
var slugger = require('slugger');
 
var TransformStream = require('./transformStream');
var getPackageFile = require('./getPackageFile');
var processString = require('./processString');
 
 
/*
{
    framework: 'hapi' || 'express',
    title: 'string',
    machineName: 'string',
    author: 'string',
    folder: 'path string'
}
*/
module.exports = function (options, cb) {
    Iif (!options.title || !options.projectFolder) {
        throw new Error('title, projectFolder are required');
    }
 
    // our base config
    var config = {
        framework: 'hapi',
        machineName: slugger(options.title),
        author: '',
        title: ''
    };
 
    for (var item in options) {
        config[item] = options[item];
    }
 
    ncp(__dirname + '/../../template/shared', config.projectFolder, {
        transform: function (readable, writeable, file) {
            var transform = new TransformStream(config);
            readable.pipe(transform).pipe(writeable);
        }
    }, function (err) {
        Iif (err) return cb(err);
        copyFilesInDir(__dirname + '/../../template/' + config.framework, config, config.projectFolder);
        // since we don't have spacemonkey working right for hapi, yet
        if (config.framework === 'hapi') {
            rimraf.sync(config.projectFolder + '/test');
        }
        fs.writeFileSync(config.projectFolder + '/package.json', JSON.stringify(getPackageFile(config), null, 2), {encoding: 'utf8'});
        cb();
    });
}
 
function copyFilesInDir(dir, options) {
    fs.readdirSync(dir).forEach(function (filename) {
        var string = fs.readFileSync(dir + '/' + filename, {encoding: 'utf8'});
        // replace our template tags with values
        string = processString(string, options);
        // write it out
        fs.writeFileSync(options.projectFolder + "/" + filename, string, {encoding: 'utf8'})
    });
}