Code coverage report for tasks/release.js

Statements: 87.93% (51 / 58)      Branches: 78.57% (22 / 28)      Functions: 69.23% (9 / 13)      Lines: 92.59% (50 / 54)      Ignored: none     

All files » tasks/ » release.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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 771 1 1 1 1 1 1   1 1 1   1 1 1 1 1 1 1 1 1 1         1 2 2   2 2 2 2 1   2 2     1 2 2   2 2 2 1       1     1               1 8 8 8 8 5 5     1 3 2 3    
var Promise = require('es6-promise').Promise;
var log = require('./utils/log');
var fs = require('./utils/fs');
var helper = require('./utils/config-helper');
var bump = require('./bump');
var extend = require('util')._extend;
var config, release = {};
 
release.ghPages = function (options){
    var release = helper.matches(config.tasks.release, ['gh-pages']);
    Iif (!release) return Promise.resolve();
 
    var ghPages = require('gh-pages');
    log.info(" * gh-pages");
    options.message = options.message || options.tag;
    options.basePath = options.basePath || config.buildPaths[0].target;
    return new Promise(function(resolve, reject){
        options.tag = false;
        ghPages.publish(options.basePath, options, function(err) {
            ghPages.clean();
            err && reject(err);
            !err && resolve();
        });
    });
};
 
release.s3 = function (options){
    var release = helper.matches(config.tasks.release, ['s3']);
    Iif (!release) return Promise.resolve();
 
    var Release = require('./wrappers/s3');
    options = extend(config.s3 || {}, options);
    var target = options.target || '';
    if (options.version){
        target = target.replace(/("|\/)[0-9]+\.[0-9]+\.[0-9]\-?(?:(?:[0-9A-Za-z-]+\.?)+)?("|\/)/g, '$1' + options.version + '$2');
    }
    log.info(" * S3 (" + options.bucket + ":" + target + ")");
    return new Release(config.s3.baseDir + '/**/*.*', target, options).write();
};
 
release.git = function (options){
    var release = helper.matches(config.tasks.release, ['git']);
    Iif (!release) return Promise.resolve();
 
    var git = require('./utils/git');
    log.info(' * Git');
    if (!git.checkRemote()){
        return log.onError(['No valid Remote Git URL.',
            'Please update your `.git/config` file or run:',
            '$ caddy init git'].join('\n'));
    }
    return git.release(options);
};
 
release.all = function (options){
    return release.git(options).then(function(){
        return release.ghPages(options);
    }).then(function(){
        return release.s3(options);
    }).catch(log.onError);
};
 
function exec(task, options){
    config = helper.getConfig();
    options = options || {};
    options.tag = 'v' +  (options.version || config.pkg.version);
    if (!config.tasks.release) return Promise.resolve();
    log.info('Releasing :');
    return release[task](options);
}
 
module.exports = {
    'git':  function(options){  return exec('git', options); },
    'gh-pages':  function(options){ return exec('ghPages', options); },
    's3':  function(options){  return exec('s3', options); },
    'all':  function(options){ return exec('all', options); }
};