UNPKG

grunto

Version:
304 lines (283 loc) 17.9 kB
// 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/GruntO.js', [1,3,4,5,6,7,17,27,169,183,18,20,21,22,23,24,42,44,52,39,45,47,49,60,62,64,66,68,70,57,75,84,86,88,81,102,104,99,122,124,128,115,119,125,136,140,133,137,144,145,147,163,165,148,160,153,155,157,150,170,172,180,173,175,177,184,185,186,188,194,198,201,202,204,205,189,191,195], {"38_6_33":0,"56_6_52":0,"56_6_19":0,"56_29_29":0,"62_66_66":0,"62_135_28":0,"74_6_29":0,"80_6_32":0,"84_44_26":0,"84_73_64":0,"98_6_24":0,"114_6_14":0,"118_6_24":0,"125_54_28":0,"125_85_1":0,"132_6_23":0,"149_8_45":0}, ["'use strict';","","var path = require('path');","var _ = require('lodash');","var utils = require('./utils');","var GruntOModuleContext = require('./GruntOModuleContext');","var gruntOTaskInitialize = require('../tasks/gruntoTask');","","/**"," * @class GruntO"," * @property {grunt} grunt"," * @property {Object} config"," * @property {Object} _contextOptions"," * @property {Array} _moduleScanParamsArray"," * @param {Object} grunt - task runner"," */","var GruntO = module.exports = function GruntO (grunt) {","\tthis.grunt = grunt;","","\tthis._config = {};","\tthis._taskAliases = {};","\tthis._moduleTaskRefs = {};","\tthis._contextOptions = {};","\tthis._moduleScanParamsArray = [];","};","","GruntO.prototype = {","","\tconstructor: GruntO,","","\t/**","\t * @this GruntO","\t * @public","\t * @param {!Object|Array|String} filesScanObject - array of file glob-patterns for scanning","\t * @returns {GruntO} this","\t */","\tscan: function scan (filesScanObject) {","\t\tif (!_.isPlainObject(filesScanObject)) {","\t\t\tthrow new Error('Invalid scan type, must be object');","\t\t}","","\t\tvar that = this;","","\t\tthis.grunt.file.expand(filesScanObject, filesScanObject.src).forEach(function (fRelPath) {","\t\t\tvar fAbsPath = path.resolve(filesScanObject.cwd, fRelPath);","","\t\t\tvar targetPrefixString = that._compilePrefix(fRelPath, filesScanObject.targetPrefix);","","\t\t\tthat.module(targetPrefixString, fAbsPath);","\t\t});","","\t\treturn this;","\t},","","\tmodule: function (targetPrefixString, moduleFunctionOrPathToModule) {","\t\tif (!targetPrefixString || !moduleFunctionOrPathToModule) {","\t\t\tthrow new Error('grunto: target prefix and module function must be specified!');","\t\t}","","\t\tthis._checkPrefix(targetPrefixString);","","\t\tvar moduleFunction = _.isString(moduleFunctionOrPathToModule) ? require(path.resolve(process.cwd(), moduleFunctionOrPathToModule)) : moduleFunctionOrPathToModule; // eslint-disable-line","","\t\tvar context = new GruntOModuleContext(this.grunt, this._taskAliases, this._moduleTaskRefs, this._config, targetPrefixString, this._contextOptions);","","\t\tvar config = moduleFunction.call(context, this.grunt, this._contextOptions);","","\t\tthis.addConfig(config);","","\t\treturn this;","\t},","","\t_checkPrefix: function (targetPrefixString) {","\t\tif (/\\\\/.test(targetPrefixString)) {","\t\t\tthrow new Error('invalid target prefix. it must not contains \\\\ symbol');","\t\t}","\t},","","\t_compilePrefix: function (filePathRel, targetPrefixString) {","\t\tif (_.isFunction(targetPrefixString)) {","\t\t\ttargetPrefixString = targetPrefixString(filePathRel);","\t\t}","","\t\ttargetPrefixString = targetPrefixString ? String(targetPrefixString) : filePathRel.replace(/^[\\/]?(.+?)(?:\\/default)?(?:\\.js)?$/, '$1');","","\t\ttargetPrefixString = targetPrefixString.replace(/\\\\/g, '/').replace(/\\/+$/, '').replace(/^\\/+/, '');","","\t\treturn targetPrefixString;","\t},","","\t/**","\t * @this GruntO","\t * @public","\t * @param {!Object} params - params for extend the standard GruntO context","\t * @returns {GruntO} this","\t */","\tcontext: function initContextOptions (params) {","\t\tif (!_.isPlainObject(params)) {","\t\t\tthrow new Error('Invalid options type, must be object');","\t\t}","","\t\t_.extend(this._contextOptions, params);","","\t\treturn this;","\t},","","\t/**","\t * @this GruntO","\t * @public","\t * @param {!Object} config - config object for adding to main config","\t * @returns {GruntO} this","\t */","\taddConfig: function addConfig (config) {","\t\tif (config == null) {","\t\t\treturn this;","\t\t}","","\t\tif (!_.isPlainObject(config)) {","\t\t\tthrow new Error('invalid config value, must be object');","\t\t}","","\t\tvar that = this;","","\t\t_.each(config, function (v, k) {","\t\t\tthat._config[k] = that._config.hasOwnProperty(k) ? _.extend(that._config[k], v) : v;","\t\t});","","\t\treturn this;","\t},","","\taddTaskNames: function addTaskNames (taskOrArray) {","\t\tif (!_.isArray(taskOrArray)) {","\t\t\ttaskOrArray = [ taskOrArray ];","\t\t}","","\t\t_.each(taskOrArray, function (taskName) {","\t\t\tGruntOModuleContext.addTask(taskName);","\t\t});","","\t\treturn this;","\t},","","\t_commit: function commitConfigsAndAliasTasks () {","\t\tvar that = this;","\t\tvar grunt = this.grunt;","","\t\t_.each(this._taskAliases, function (tasksArray, name) {","\t\t\ttasksArray = _.map(tasksArray, function (taskName) {","\t\t\t\tif (that._moduleTaskRefs.hasOwnProperty(taskName)) {","\t\t\t\t\treturn taskName;","\t\t\t\t}","","\t\t\t\tvar tmpTaskName = utils.genUniqueTaskName();","","\t\t\t\tgrunt.task.registerTask(tmpTaskName, [ taskName ]);","","\t\t\t\treturn tmpTaskName;","\t\t\t});","","\t\t\tgrunt.task.registerTask(name, tasksArray);","\t\t});","","\t\tgrunt.task.registerTask('_grunto', []);","","\t\tgrunt.initConfig(this._config);","\t}","};","","GruntO.run = function gruntORun (grunt, initializeFunction) {","\tvar gruntO = new GruntO(grunt);","","\tGruntO.shimGruntMethods(gruntO, function (grunt) {","\t\tgruntOTaskInitialize(grunt);","","\t\tvar configMayBe = initializeFunction.call(gruntO, grunt);","","\t\tgruntO.addConfig(configMayBe);","\t});","","\tgruntO._commit();","};","","GruntO.shimGruntMethods = function shimGruntMethods (gruntO, method) {","\tvar grunt = gruntO.grunt;","\tvar oldGruntRegisterTask = grunt.task.registerTask;","\tvar oldGruntInitConfig = grunt.initConfig;","","\tgrunt.task.registerTask = function (taskName) {","\t\tgruntO.addTaskNames(taskName);","","\t\treturn oldGruntRegisterTask.apply(this, arguments);","\t};","","\tgrunt.initConfig = function (config) {","\t\tgruntO.addConfig(config);","\t};","","\tmethod(grunt);","","\t// rollback","\tgrunt.task.registerTask = oldGruntRegisterTask;","\tgrunt.initConfig = oldGruntInitConfig;","","\toldGruntInitConfig = null;","\toldGruntRegisterTask = null;","};",""]); _$jscmd("lib/GruntO.js", "line", 1); "use strict"; _$jscmd("lib/GruntO.js", "line", 3); var path = require("path"); _$jscmd("lib/GruntO.js", "line", 4); var _ = require("lodash"); _$jscmd("lib/GruntO.js", "line", 5); var utils = require("./utils"); _$jscmd("lib/GruntO.js", "line", 6); var GruntOModuleContext = require("./GruntOModuleContext"); _$jscmd("lib/GruntO.js", "line", 7); var gruntOTaskInitialize = require("../tasks/gruntoTask"); _$jscmd("lib/GruntO.js", "line", 17); /** * @class GruntO * @property {grunt} grunt * @property {Object} config * @property {Object} _contextOptions * @property {Array} _moduleScanParamsArray * @param {Object} grunt - task runner */ var GruntO = module.exports = function GruntO(grunt) { _$jscmd("lib/GruntO.js", "line", 18); this.grunt = grunt; _$jscmd("lib/GruntO.js", "line", 20); this._config = {}; _$jscmd("lib/GruntO.js", "line", 21); this._taskAliases = {}; _$jscmd("lib/GruntO.js", "line", 22); this._moduleTaskRefs = {}; _$jscmd("lib/GruntO.js", "line", 23); this._contextOptions = {}; _$jscmd("lib/GruntO.js", "line", 24); this._moduleScanParamsArray = []; }; _$jscmd("lib/GruntO.js", "line", 27); GruntO.prototype = { constructor: GruntO, /** * @this GruntO * @public * @param {!Object|Array|String} filesScanObject - array of file glob-patterns for scanning * @returns {GruntO} this */ scan: function scan(filesScanObject) { if (_$jscmd("lib/GruntO.js", "cond", "38_6_33", !_.isPlainObject(filesScanObject))) { _$jscmd("lib/GruntO.js", "line", 39); throw new Error("Invalid scan type, must be object"); } _$jscmd("lib/GruntO.js", "line", 42); var that = this; _$jscmd("lib/GruntO.js", "line", 44); this.grunt.file.expand(filesScanObject, filesScanObject.src).forEach(function(fRelPath) { _$jscmd("lib/GruntO.js", "line", 45); var fAbsPath = path.resolve(filesScanObject.cwd, fRelPath); _$jscmd("lib/GruntO.js", "line", 47); var targetPrefixString = that._compilePrefix(fRelPath, filesScanObject.targetPrefix); _$jscmd("lib/GruntO.js", "line", 49); that.module(targetPrefixString, fAbsPath); }); _$jscmd("lib/GruntO.js", "line", 52); return this; }, module: function(targetPrefixString, moduleFunctionOrPathToModule) { if (_$jscmd("lib/GruntO.js", "cond", "56_6_52", _$jscmd("lib/GruntO.js", "cond", "56_6_19", !targetPrefixString) || _$jscmd("lib/GruntO.js", "cond", "56_29_29", !moduleFunctionOrPathToModule))) { _$jscmd("lib/GruntO.js", "line", 57); throw new Error("grunto: target prefix and module function must be specified!"); } _$jscmd("lib/GruntO.js", "line", 60); this._checkPrefix(targetPrefixString); _$jscmd("lib/GruntO.js", "line", 62); var moduleFunction = _.isString(moduleFunctionOrPathToModule) ? _$jscmd("lib/GruntO.js", "cond", "62_66_66", require(path.resolve(process.cwd(), moduleFunctionOrPathToModule))) : _$jscmd("lib/GruntO.js", "cond", "62_135_28", moduleFunctionOrPathToModule); _$jscmd("lib/GruntO.js", "line", 64); // eslint-disable-line var context = new GruntOModuleContext(this.grunt, this._taskAliases, this._moduleTaskRefs, this._config, targetPrefixString, this._contextOptions); _$jscmd("lib/GruntO.js", "line", 66); var config = moduleFunction.call(context, this.grunt, this._contextOptions); _$jscmd("lib/GruntO.js", "line", 68); this.addConfig(config); _$jscmd("lib/GruntO.js", "line", 70); return this; }, _checkPrefix: function(targetPrefixString) { if (_$jscmd("lib/GruntO.js", "cond", "74_6_29", /\\/.test(targetPrefixString))) { _$jscmd("lib/GruntO.js", "line", 75); throw new Error("invalid target prefix. it must not contains \\ symbol"); } }, _compilePrefix: function(filePathRel, targetPrefixString) { if (_$jscmd("lib/GruntO.js", "cond", "80_6_32", _.isFunction(targetPrefixString))) { _$jscmd("lib/GruntO.js", "line", 81); targetPrefixString = targetPrefixString(filePathRel); } _$jscmd("lib/GruntO.js", "line", 84); targetPrefixString = targetPrefixString ? _$jscmd("lib/GruntO.js", "cond", "84_44_26", String(targetPrefixString)) : _$jscmd("lib/GruntO.js", "cond", "84_73_64", filePathRel.replace(/^[\/]?(.+?)(?:\/default)?(?:\.js)?$/, "$1")); _$jscmd("lib/GruntO.js", "line", 86); targetPrefixString = targetPrefixString.replace(/\\/g, "/").replace(/\/+$/, "").replace(/^\/+/, ""); _$jscmd("lib/GruntO.js", "line", 88); return targetPrefixString; }, /** * @this GruntO * @public * @param {!Object} params - params for extend the standard GruntO context * @returns {GruntO} this */ context: function initContextOptions(params) { if (_$jscmd("lib/GruntO.js", "cond", "98_6_24", !_.isPlainObject(params))) { _$jscmd("lib/GruntO.js", "line", 99); throw new Error("Invalid options type, must be object"); } _$jscmd("lib/GruntO.js", "line", 102); _.extend(this._contextOptions, params); _$jscmd("lib/GruntO.js", "line", 104); return this; }, /** * @this GruntO * @public * @param {!Object} config - config object for adding to main config * @returns {GruntO} this */ addConfig: function addConfig(config) { if (_$jscmd("lib/GruntO.js", "cond", "114_6_14", config == null)) { _$jscmd("lib/GruntO.js", "line", 115); return this; } if (_$jscmd("lib/GruntO.js", "cond", "118_6_24", !_.isPlainObject(config))) { _$jscmd("lib/GruntO.js", "line", 119); throw new Error("invalid config value, must be object"); } _$jscmd("lib/GruntO.js", "line", 122); var that = this; _$jscmd("lib/GruntO.js", "line", 124); _.each(config, function(v, k) { _$jscmd("lib/GruntO.js", "line", 125); that._config[k] = that._config.hasOwnProperty(k) ? _$jscmd("lib/GruntO.js", "cond", "125_54_28", _.extend(that._config[k], v)) : _$jscmd("lib/GruntO.js", "cond", "125_85_1", v); }); _$jscmd("lib/GruntO.js", "line", 128); return this; }, addTaskNames: function addTaskNames(taskOrArray) { if (_$jscmd("lib/GruntO.js", "cond", "132_6_23", !_.isArray(taskOrArray))) { _$jscmd("lib/GruntO.js", "line", 133); taskOrArray = [ taskOrArray ]; } _$jscmd("lib/GruntO.js", "line", 136); _.each(taskOrArray, function(taskName) { _$jscmd("lib/GruntO.js", "line", 137); GruntOModuleContext.addTask(taskName); }); _$jscmd("lib/GruntO.js", "line", 140); return this; }, _commit: function commitConfigsAndAliasTasks() { _$jscmd("lib/GruntO.js", "line", 144); var that = this; _$jscmd("lib/GruntO.js", "line", 145); var grunt = this.grunt; _$jscmd("lib/GruntO.js", "line", 147); _.each(this._taskAliases, function(tasksArray, name) { _$jscmd("lib/GruntO.js", "line", 148); tasksArray = _.map(tasksArray, function(taskName) { if (_$jscmd("lib/GruntO.js", "cond", "149_8_45", that._moduleTaskRefs.hasOwnProperty(taskName))) { _$jscmd("lib/GruntO.js", "line", 150); return taskName; } _$jscmd("lib/GruntO.js", "line", 153); var tmpTaskName = utils.genUniqueTaskName(); _$jscmd("lib/GruntO.js", "line", 155); grunt.task.registerTask(tmpTaskName, [ taskName ]); _$jscmd("lib/GruntO.js", "line", 157); return tmpTaskName; }); _$jscmd("lib/GruntO.js", "line", 160); grunt.task.registerTask(name, tasksArray); }); _$jscmd("lib/GruntO.js", "line", 163); grunt.task.registerTask("_grunto", []); _$jscmd("lib/GruntO.js", "line", 165); grunt.initConfig(this._config); } }; _$jscmd("lib/GruntO.js", "line", 169); GruntO.run = function gruntORun(grunt, initializeFunction) { _$jscmd("lib/GruntO.js", "line", 170); var gruntO = new GruntO(grunt); _$jscmd("lib/GruntO.js", "line", 172); GruntO.shimGruntMethods(gruntO, function(grunt) { _$jscmd("lib/GruntO.js", "line", 173); gruntOTaskInitialize(grunt); _$jscmd("lib/GruntO.js", "line", 175); var configMayBe = initializeFunction.call(gruntO, grunt); _$jscmd("lib/GruntO.js", "line", 177); gruntO.addConfig(configMayBe); }); _$jscmd("lib/GruntO.js", "line", 180); gruntO._commit(); }; _$jscmd("lib/GruntO.js", "line", 183); GruntO.shimGruntMethods = function shimGruntMethods(gruntO, method) { _$jscmd("lib/GruntO.js", "line", 184); var grunt = gruntO.grunt; _$jscmd("lib/GruntO.js", "line", 185); var oldGruntRegisterTask = grunt.task.registerTask; _$jscmd("lib/GruntO.js", "line", 186); var oldGruntInitConfig = grunt.initConfig; _$jscmd("lib/GruntO.js", "line", 188); grunt.task.registerTask = function(taskName) { _$jscmd("lib/GruntO.js", "line", 189); gruntO.addTaskNames(taskName); _$jscmd("lib/GruntO.js", "line", 191); return oldGruntRegisterTask.apply(this, arguments); }; _$jscmd("lib/GruntO.js", "line", 194); grunt.initConfig = function(config) { _$jscmd("lib/GruntO.js", "line", 195); gruntO.addConfig(config); }; _$jscmd("lib/GruntO.js", "line", 198); method(grunt); _$jscmd("lib/GruntO.js", "line", 201); // rollback grunt.task.registerTask = oldGruntRegisterTask; _$jscmd("lib/GruntO.js", "line", 202); grunt.initConfig = oldGruntInitConfig; _$jscmd("lib/GruntO.js", "line", 204); oldGruntInitConfig = null; _$jscmd("lib/GruntO.js", "line", 205); oldGruntRegisterTask = null; };