grunto
Version:
Organize your grunt config!
294 lines (279 loc) • 18.5 kB
JavaScript
// instrument by jscoverage, do not modifly this file
(function (file, lines, conds, source) {
var BASE;
if (typeof global === 'object') {
BASE = global;
} else if (typeof window === 'object') {
BASE = window;
} else {
throw new Error('[jscoverage] unknow ENV!');
}
if (BASE._$jscoverage) {
BASE._$jscmd(file, 'init', lines, conds, source);
return;
}
var cov = {};
/**
* jsc(file, 'init', lines, condtions)
* jsc(file, 'line', lineNum)
* jsc(file, 'cond', lineNum, expr, start, offset)
*/
function jscmd(file, type, line, express, start, offset) {
var storage;
switch (type) {
case 'init':
if(cov[file]){
storage = cov[file];
} else {
storage = [];
for (var i = 0; i < line.length; i ++) {
storage[line[i]] = 0;
}
var condition = express;
var source = start;
storage.condition = condition;
storage.source = source;
}
cov[file] = storage;
break;
case 'line':
storage = cov[file];
storage[line] ++;
break;
case 'cond':
storage = cov[file];
storage.condition[line] ++;
return express;
}
}
BASE._$jscoverage = cov;
BASE._$jscmd = jscmd;
jscmd(file, 'init', lines, conds, source);
})('lib/GruntOModuleContext.js', [1,3,4,5,20,43,186,21,28,29,31,32,33,24,25,62,64,69,54,58,59,65,66,89,90,92,121,81,82,83,85,86,95,110,111,98,99,103,107,117,118,132,142,144,150,135,139,145,146,147,171,177,179,180,182,166,168,174,191,188,197,199,193,194], {"23_5_22":0,"53_6_17":0,"57_6_37":0,"57_6_17":0,"57_27_16":0,"65_29_52":0,"65_84_4":0,"80_6_18":0,"84_13_24":0,"97_9_5":0,"98_24_10":0,"102_9_18":0,"106_9_32":0,"116_6_4":0,"134_6_21":0,"138_6_14":0,"146_24_39":0,"146_66_6":0,"165_6_71":0,"165_6_46":0,"165_56_21":0,"165_6_24":0,"165_34_18":0,"173_6_37":0,"187_5_21":0,"192_6_23":0,"197_28_27":0,"197_58_8":0}, ["'use strict';","","var _ = require('lodash');","var utils = require('./utils');","var path = require('path');","","/**"," * @class GruntOModuleContext"," * @property {String} CURRENT_PREFIX"," * @property {grunt} grunt"," * @property {Object} $prop$"," * @constructor"," * @param {grunt} grunt - task runner"," * @param {Object} aliases - ref of object with task aliases"," * @param {Object} refsObj - ref of tasks"," * @param {Object} config - ref of configs object"," * @param {String} prefix - current module prefix"," * @param {?Object} context - context options"," * */","var GruntOModuleContext = module.exports = function GruntOModuleContext (grunt, aliases, refsObj, config, prefix, context) {","\t_.extend(this, context);","","\tif (_.has(aliases, prefix)) {","\t\tgrunt.fail.fatal('duplicate module name \"' + prefix + '\"');","\t\treturn;","\t}","","\taliases[prefix] = [];","\trefsObj[prefix] = true;","","\tthis.CURRENT_PREFIX = prefix;","\tthis.grunt = grunt;","\tthis.$prop$ = {","\t\tnum: 0,","\t\trefs: refsObj,","\t\tgrunt: grunt,","\t\tprefix: prefix,","\t\tconfig: config,","\t\tcurrent: aliases[prefix]","\t};","};","","GruntOModuleContext.prototype = {","","\tconstructor: GruntOModuleContext,","","\t/**","\t * ","\t * {String|Array} tasks - task name or array","\t * {GruntOModuleContext} this","\t * */","\t$run: function $run (tasks) {","\t\tif (_.isString(tasks)) {","\t\t\ttasks = [ tasks ];","\t\t}","","\t\tif (!_.isArray(tasks) || _.isEmpty(tasks)) {","\t\t\tthis.$prop$.grunt.fail.fatal(this.$prop$.prefix + ': Invalid tasks type. Must be string or array');","\t\t\treturn this;","\t\t}","","\t\tvar that = this;","","\t\t_.each(tasks, function (task) {","\t\t\ttask = /^\\./.test(task) ? path.normalize(path.join(that.CURRENT_PREFIX, task)) : task;","\t\t\tthat.$prop$.current.push(task.replace('\\\\', '/'));","\t\t});","","\t\treturn this;","\t},","","\t/**","\t * ","\t * {String} name - name of task, that will replaced","\t * {String} targetName - subtask name","\t * {function} callback - function that will call","\t * {GruntOModuleContext} this","\t * */","\t$task: function $task (name, targetName, callback) {","\t\tif (_.isFunction(name)) {","\t\t\tcallback = name;","\t\t\tname = null;","\t\t\ttargetName = null;","\t\t} else if (_.isFunction(targetName)) {","\t\t\tcallback = targetName;","\t\t\ttargetName = null;","\t\t}","","\t\tvar that = this;","\t\tvar task = null;","","\t\tthis.grunto$task({","\t\t\toptions: {","\t\t\t\t$$run: function () {","\t\t\t\t\tvar taskConfig = callback.call(this);","","\t\t\t\t\tif (!name) {","\t\t\t\t\t\tthat.grunt.log.ok(taskConfig || 'done');","\t\t\t\t\t\treturn;","\t\t\t\t\t}","","\t\t\t\t\tif (taskConfig == null) {","\t\t\t\t\t\tthat.grunt.fail.fatal('Empty config for task \"' + task.ref + '\"');","\t\t\t\t\t}","","\t\t\t\t\tif (that.$prop$.config[name] == null) {","\t\t\t\t\t\tthat.$prop$.config[name] = {};","\t\t\t\t\t}","","\t\t\t\t\tthat.$prop$.config[name][task.target] = taskConfig;","\t\t\t\t\tthat.grunt.log.ok('Created config for \"' + task.ref + '\"');","\t\t\t\t}","\t\t\t}","\t\t});","","\t\tif (name) {","\t\t\ttask = this.$$taskName(name);","\t\t\tthis.$$run(task, {});","\t\t}","","\t\treturn this;","\t},","","\t/**","\t * @method","\t * @private","\t * @param {String} name - name of task","\t * @param {String} target - subtask name","\t * @returns {GruntOModuleContext} this","\t * */","\t$$taskName: function $$taskName (name, target) {","\t\tvar that = this;","","\t\tif (_.isPlainObject(name)) {","\t\t\treturn _.clone(name);","\t\t}","","\t\tif (target != null) {","\t\t\tname = name + ':' + target;","\t\t}","","\t\ttarget = this.$prop$.prefix + '/' + (++this.$prop$.num);","","\t\tname = name.replace(/^([^:]+):*(.*)$/, function ($0, $1, $2) {","\t\t\t$2 = $2.trim();","\t\t\ttarget = $2.length ? utils.joinPaths(that.$prop$.prefix, $2) : target;","\t\t\treturn $1.trim();","\t\t});","","\t\treturn {","\t\t\tname: name,","\t\t\ttarget: target,","\t\t\tref: name + ':' + target","\t\t};","\t},","","\t/**","\t * @method","\t * @private","\t * @param {String} targetName - name of task","\t * @param {String|Object|Array|Function} config - config object","\t * @returns {GruntOModuleContext} this","\t * */","\t$$run: function $$run (targetName, config) {","\t\tif (!_.isPlainObject(config) && !_.isArray(config) && !_.isFunction(config)) {","\t\t\tthis.$prop$.grunt.fail.fatal(this.$prop$.prefix + ': invalid config param of \"' + targetName + '\", must use array|object|function type');","","\t\t\treturn this;","\t\t}","","\t\tvar task = this.$$taskName(targetName);","","\t\tif (!_.has(this.$prop$.config, task.name)) {","\t\t\tthis.$prop$.config[task.name] = {};","\t\t}","","\t\tthis.$prop$.config[task.name][task.target] = config;","","\t\tthis.$prop$.refs[task.ref] = true;","\t\tthis.$prop$.current.push(task.ref);","","\t\treturn this;","\t}","};","","GruntOModuleContext.addTask = function addTask (taskName) {","\tif (!_.isString(taskName)) {","\t\tthrow new TypeError('invalid type of task name for adding. must be string');","\t}","","\tthis.prototype[taskName] = function (targetName, config) {","\t\tif (!_.isString(targetName)) {","\t\t\tconfig = targetName;","\t\t\ttargetName = '';","\t\t}","","\t\ttargetName = targetName ? taskName + ':' + targetName : taskName;","","\t\treturn this.$$run(targetName, config);","\t};","};",""]);
_$jscmd("lib/GruntOModuleContext.js", "line", 1);
"use strict";
_$jscmd("lib/GruntOModuleContext.js", "line", 3);
var _ = require("lodash");
_$jscmd("lib/GruntOModuleContext.js", "line", 4);
var utils = require("./utils");
_$jscmd("lib/GruntOModuleContext.js", "line", 5);
var path = require("path");
_$jscmd("lib/GruntOModuleContext.js", "line", 20);
/**
* @class GruntOModuleContext
* @property {String} CURRENT_PREFIX
* @property {grunt} grunt
* @property {Object} $prop$
* @constructor
* @param {grunt} grunt - task runner
* @param {Object} aliases - ref of object with task aliases
* @param {Object} refsObj - ref of tasks
* @param {Object} config - ref of configs object
* @param {String} prefix - current module prefix
* @param {?Object} context - context options
* */
var GruntOModuleContext = module.exports = function GruntOModuleContext(grunt, aliases, refsObj, config, prefix, context) {
_$jscmd("lib/GruntOModuleContext.js", "line", 21);
_.extend(this, context);
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "23_5_22", _.has(aliases, prefix))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 24);
grunt.fail.fatal('duplicate module name "' + prefix + '"');
_$jscmd("lib/GruntOModuleContext.js", "line", 25);
return;
}
_$jscmd("lib/GruntOModuleContext.js", "line", 28);
aliases[prefix] = [];
_$jscmd("lib/GruntOModuleContext.js", "line", 29);
refsObj[prefix] = true;
_$jscmd("lib/GruntOModuleContext.js", "line", 31);
this.CURRENT_PREFIX = prefix;
_$jscmd("lib/GruntOModuleContext.js", "line", 32);
this.grunt = grunt;
_$jscmd("lib/GruntOModuleContext.js", "line", 33);
this.$prop$ = {
num: 0,
refs: refsObj,
grunt: grunt,
prefix: prefix,
config: config,
current: aliases[prefix]
};
};
_$jscmd("lib/GruntOModuleContext.js", "line", 43);
GruntOModuleContext.prototype = {
constructor: GruntOModuleContext,
/**
* @public
* @param {String|Array} tasks - task name or array
* @returns {GruntOModuleContext} this
* */
$run: function $run(tasks) {
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "53_6_17", _.isString(tasks))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 54);
tasks = [ tasks ];
}
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "57_6_37", _$jscmd("lib/GruntOModuleContext.js", "cond", "57_6_17", !_.isArray(tasks)) || _$jscmd("lib/GruntOModuleContext.js", "cond", "57_27_16", _.isEmpty(tasks)))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 58);
this.$prop$.grunt.fail.fatal(this.$prop$.prefix + ": Invalid tasks type. Must be string or array");
_$jscmd("lib/GruntOModuleContext.js", "line", 59);
return this;
}
_$jscmd("lib/GruntOModuleContext.js", "line", 62);
var that = this;
_$jscmd("lib/GruntOModuleContext.js", "line", 64);
_.each(tasks, function(task) {
_$jscmd("lib/GruntOModuleContext.js", "line", 65);
task = /^\./.test(task) ? _$jscmd("lib/GruntOModuleContext.js", "cond", "65_29_52", path.normalize(path.join(that.CURRENT_PREFIX, task))) : _$jscmd("lib/GruntOModuleContext.js", "cond", "65_84_4", task);
_$jscmd("lib/GruntOModuleContext.js", "line", 66);
that.$prop$.current.push(task.replace("\\", "/"));
});
_$jscmd("lib/GruntOModuleContext.js", "line", 69);
return this;
},
/**
* @public
* @param {String} name - name of task, that will replaced
* @param {String} targetName - subtask name
* @param {function} callback - function that will call
* @returns {GruntOModuleContext} this
* */
$task: function $task(name, targetName, callback) {
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "80_6_18", _.isFunction(name))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 81);
callback = name;
_$jscmd("lib/GruntOModuleContext.js", "line", 82);
name = null;
_$jscmd("lib/GruntOModuleContext.js", "line", 83);
targetName = null;
} else if (_$jscmd("lib/GruntOModuleContext.js", "cond", "84_13_24", _.isFunction(targetName))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 85);
callback = targetName;
_$jscmd("lib/GruntOModuleContext.js", "line", 86);
targetName = null;
}
_$jscmd("lib/GruntOModuleContext.js", "line", 89);
var that = this;
_$jscmd("lib/GruntOModuleContext.js", "line", 90);
var task = null;
_$jscmd("lib/GruntOModuleContext.js", "line", 92);
this.grunto$task({
options: {
$$run: function() {
_$jscmd("lib/GruntOModuleContext.js", "line", 95);
var taskConfig = callback.call(this);
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "97_9_5", !name)) {
_$jscmd("lib/GruntOModuleContext.js", "line", 98);
that.grunt.log.ok(_$jscmd("lib/GruntOModuleContext.js", "cond", "98_24_10", taskConfig) || "done");
_$jscmd("lib/GruntOModuleContext.js", "line", 99);
return;
}
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "102_9_18", taskConfig == null)) {
_$jscmd("lib/GruntOModuleContext.js", "line", 103);
that.grunt.fail.fatal('Empty config for task "' + task.ref + '"');
}
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "106_9_32", that.$prop$.config[name] == null)) {
_$jscmd("lib/GruntOModuleContext.js", "line", 107);
that.$prop$.config[name] = {};
}
_$jscmd("lib/GruntOModuleContext.js", "line", 110);
that.$prop$.config[name][task.target] = taskConfig;
_$jscmd("lib/GruntOModuleContext.js", "line", 111);
that.grunt.log.ok('Created config for "' + task.ref + '"');
}
}
});
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "116_6_4", name)) {
_$jscmd("lib/GruntOModuleContext.js", "line", 117);
task = this.$$taskName(name);
_$jscmd("lib/GruntOModuleContext.js", "line", 118);
this.$$run(task, {});
}
_$jscmd("lib/GruntOModuleContext.js", "line", 121);
return this;
},
/**
* @method
* @private
* @param {String} name - name of task
* @param {String} target - subtask name
* @returns {GruntOModuleContext} this
* */
$$taskName: function $$taskName(name, target) {
_$jscmd("lib/GruntOModuleContext.js", "line", 132);
var that = this;
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "134_6_21", _.isPlainObject(name))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 135);
return _.clone(name);
}
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "138_6_14", target != null)) {
_$jscmd("lib/GruntOModuleContext.js", "line", 139);
name = name + ":" + target;
}
_$jscmd("lib/GruntOModuleContext.js", "line", 142);
target = this.$prop$.prefix + "/" + ++this.$prop$.num;
_$jscmd("lib/GruntOModuleContext.js", "line", 144);
name = name.replace(/^([^:]+):*(.*)$/, function($0, $1, $2) {
_$jscmd("lib/GruntOModuleContext.js", "line", 145);
$2 = $2.trim();
_$jscmd("lib/GruntOModuleContext.js", "line", 146);
target = $2.length ? _$jscmd("lib/GruntOModuleContext.js", "cond", "146_24_39", utils.joinPaths(that.$prop$.prefix, $2)) : _$jscmd("lib/GruntOModuleContext.js", "cond", "146_66_6", target);
_$jscmd("lib/GruntOModuleContext.js", "line", 147);
return $1.trim();
});
_$jscmd("lib/GruntOModuleContext.js", "line", 150);
return {
name: name,
target: target,
ref: name + ":" + target
};
},
/**
* @method
* @private
* @param {String} targetName - name of task
* @param {String|Object|Array|Function} config - config object
* @returns {GruntOModuleContext} this
* */
$$run: function $$run(targetName, config) {
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "165_6_71", _$jscmd("lib/GruntOModuleContext.js", "cond", "165_6_46", _$jscmd("lib/GruntOModuleContext.js", "cond", "165_6_24", !_.isPlainObject(config)) && _$jscmd("lib/GruntOModuleContext.js", "cond", "165_34_18", !_.isArray(config))) && _$jscmd("lib/GruntOModuleContext.js", "cond", "165_56_21", !_.isFunction(config)))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 166);
this.$prop$.grunt.fail.fatal(this.$prop$.prefix + ': invalid config param of "' + targetName + '", must use array|object|function type');
_$jscmd("lib/GruntOModuleContext.js", "line", 168);
return this;
}
_$jscmd("lib/GruntOModuleContext.js", "line", 171);
var task = this.$$taskName(targetName);
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "173_6_37", !_.has(this.$prop$.config, task.name))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 174);
this.$prop$.config[task.name] = {};
}
_$jscmd("lib/GruntOModuleContext.js", "line", 177);
this.$prop$.config[task.name][task.target] = config;
_$jscmd("lib/GruntOModuleContext.js", "line", 179);
this.$prop$.refs[task.ref] = true;
_$jscmd("lib/GruntOModuleContext.js", "line", 180);
this.$prop$.current.push(task.ref);
_$jscmd("lib/GruntOModuleContext.js", "line", 182);
return this;
}
};
_$jscmd("lib/GruntOModuleContext.js", "line", 186);
GruntOModuleContext.addTask = function addTask(taskName) {
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "187_5_21", !_.isString(taskName))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 188);
throw new TypeError("invalid type of task name for adding. must be string");
}
_$jscmd("lib/GruntOModuleContext.js", "line", 191);
this.prototype[taskName] = function(targetName, config) {
if (_$jscmd("lib/GruntOModuleContext.js", "cond", "192_6_23", !_.isString(targetName))) {
_$jscmd("lib/GruntOModuleContext.js", "line", 193);
config = targetName;
_$jscmd("lib/GruntOModuleContext.js", "line", 194);
targetName = "";
}
_$jscmd("lib/GruntOModuleContext.js", "line", 197);
targetName = targetName ? _$jscmd("lib/GruntOModuleContext.js", "cond", "197_28_27", taskName + ":" + targetName) : _$jscmd("lib/GruntOModuleContext.js", "cond", "197_58_8", taskName);
_$jscmd("lib/GruntOModuleContext.js", "line", 199);
return this.$$run(targetName, config);
};
};