development-tool
Advanced tools
Comparing version 0.1.0 to 0.1.1
@@ -53,3 +53,3 @@ /// <reference types="gulp" /> | ||
externalTask?: Task; | ||
runTasks?: Src[] | ((oper: Operation, tasks: Src[]) => Src[]); | ||
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src) => Src[]); | ||
tasks?: TaskOption | TaskOption[]; | ||
@@ -66,3 +66,3 @@ } | ||
option: TaskOption; | ||
runTasks?(): Src[]; | ||
runTasks?(subGroupTask?: Src): Src[]; | ||
printHelp?(lang: string): void; | ||
@@ -69,0 +69,0 @@ findTasksInModule?(module: string): Promise<Task[]>; |
@@ -23,2 +23,3 @@ /// <reference types="gulp" /> | ||
protected setup(gulp: Gulp, config: TaskConfig, tasks: Task[]): Promise<Src[]>; | ||
protected loadSubTask(gulp: Gulp, config: TaskConfig): Promise<Src>; | ||
protected createLoader(option: TaskOption): ITaskLoader; | ||
@@ -25,0 +26,0 @@ protected printHelp(help: boolean | string): void; |
109
lib/tools.js
@@ -42,2 +42,3 @@ "use strict"; | ||
.then(tseq => { | ||
console.log(chalk.grey('run sequenec tasks:'), tseq); | ||
return this.runSequence(gulp, tseq); | ||
@@ -96,30 +97,2 @@ }) | ||
return this.setup(gulp, cfg, tasks); | ||
}) | ||
.then(tsq => { | ||
if (optask.tasks) { | ||
_.each(_.isArray(optask.tasks) ? optask.tasks : [optask.tasks], subopt => { | ||
subopt.src = subopt.src || optask.src; | ||
subopt.dist = subopt.dist || optask.dist; | ||
}); | ||
return this.loadTasks(gulp, optask.tasks, env) | ||
.then(subseq => { | ||
if (subseq && subseq.length > 0) { | ||
let first = _.first(subseq); | ||
let last = _.last(subseq); | ||
let frn = _.isArray(first) ? _.first(first) : first; | ||
let lsn = _.isArray(last) ? _.first(last) : last; | ||
let subName = frn + '_' + lsn; | ||
gulp.task(subName, () => { | ||
return runSequence(gulp, subseq); | ||
}); | ||
return tsq.push(subName); | ||
} | ||
else { | ||
return tsq; | ||
} | ||
}); | ||
} | ||
else { | ||
return tsq; | ||
} | ||
}); | ||
@@ -137,15 +110,54 @@ } | ||
.then(ts => { | ||
let tsqs = config.runTasks ? config.runTasks() : this.toSquence(ts); | ||
console.log(chalk.grey('run sequenec tasks:'), tsqs); | ||
if (config.option.runTasks) { | ||
if (_.isArray(config.option.runTasks)) { | ||
tsqs = config.option.runTasks; | ||
return this.loadSubTask(gulp, config) | ||
.then(subGroupTask => { | ||
let tsqs = this.toSquence(ts); | ||
if (config.option.runTasks) { | ||
if (_.isFunction(config.option.runTasks)) { | ||
tsqs = config.option.runTasks(config.oper, tsqs, subGroupTask); | ||
} | ||
else { | ||
tsqs = config.option.runTasks; | ||
subGroupTask && tsqs.push(subGroupTask); | ||
} | ||
return tsqs; | ||
} | ||
else if (_.isFunction(config.option.runTasks)) { | ||
tsqs = config.option.runTasks(config.oper, tsqs); | ||
else if (config.runTasks) { | ||
return config.runTasks(subGroupTask); | ||
} | ||
} | ||
return tsqs; | ||
else { | ||
subGroupTask && tsqs.push(subGroupTask); | ||
return tsqs; | ||
} | ||
}); | ||
}); | ||
} | ||
loadSubTask(gulp, config) { | ||
let optask = config.option; | ||
if (optask.tasks) { | ||
_.each(_.isArray(optask.tasks) ? optask.tasks : [optask.tasks], subopt => { | ||
subopt.src = subopt.src || optask.src; | ||
subopt.dist = subopt.dist || optask.dist; | ||
}); | ||
return this.loadTasks(gulp, optask.tasks, config.env) | ||
.then(subseq => { | ||
if (subseq && subseq.length > 0) { | ||
let first = _.first(subseq); | ||
let last = _.last(subseq); | ||
let frn = _.isArray(first) ? _.first(first) : first; | ||
let lsn = _.isArray(last) ? _.last(last) : last; | ||
let subName = frn + '_' + lsn; | ||
gulp.task(subName, () => { | ||
return runSequence(gulp, subseq); | ||
}); | ||
return subName; | ||
} | ||
else { | ||
return null; | ||
} | ||
}); | ||
} | ||
else { | ||
return Promise.resolve(null); | ||
} | ||
} | ||
createLoader(option) { | ||
@@ -212,4 +224,8 @@ let loader = null; | ||
ps = ps.then(() => { | ||
let taskErr = null, taskStop = null, len = _.isArray(task) ? (task.length - 1) : 0; | ||
let taskErr = null, taskStop = null; | ||
return new Promise((reslove, reject) => { | ||
let tskmap = {}; | ||
_.each(_.isArray(task) ? task : [task], t => { | ||
tskmap[t] = false; | ||
}); | ||
taskErr = (err) => { | ||
@@ -219,21 +235,10 @@ reject(err); | ||
taskStop = (e) => { | ||
if (len <= 0) { | ||
tskmap[e.task] = true; | ||
if (!_.some(_.values(tskmap), it => !it)) { | ||
reslove(); | ||
} | ||
else { | ||
if (task.indexOf(e.task) >= 0) { | ||
len--; | ||
} | ||
} | ||
}; | ||
gulp.on('task_stop', taskStop) | ||
.on('task_err', taskErr); | ||
gulp.start(task, (err) => { | ||
if (err) { | ||
reject(err); | ||
} | ||
else { | ||
reslove(); | ||
} | ||
}); | ||
gulp.start(task); | ||
}) | ||
@@ -240,0 +245,0 @@ .then(() => { |
{ | ||
"name": "development-tool", | ||
"version": "0.1.0", | ||
"version": "0.1.1", | ||
"description": "development build tools.", | ||
@@ -5,0 +5,0 @@ "main": "./lib/tools.js", |
@@ -238,3 +238,3 @@ import { Gulp } from 'gulp'; | ||
*/ | ||
runTasks?: Src[] | ((oper: Operation, tasks: Src[]) => Src[]); | ||
runTasks?: Src[] | ((oper: Operation, tasks: Src[], subGroupTask?: Src) => Src[]); | ||
@@ -321,2 +321,3 @@ /** | ||
* | ||
* @param {Src} subGroupTask sub tasks group tasks. | ||
* @returns {Src[]} | ||
@@ -326,3 +327,3 @@ * | ||
*/ | ||
runTasks?(): Src[]; | ||
runTasks?(subGroupTask?: Src): Src[]; | ||
/** | ||
@@ -329,0 +330,0 @@ * custom print help. |
115
src/tools.ts
@@ -56,2 +56,3 @@ import * as _ from 'lodash'; | ||
.then(tseq => { | ||
console.log(chalk.grey('run sequenec tasks:'), tseq); | ||
return this.runSequence(gulp, tseq); | ||
@@ -122,28 +123,2 @@ }) | ||
return this.setup(gulp, cfg, tasks) | ||
}) | ||
.then(tsq => { | ||
if (optask.tasks) { | ||
_.each(_.isArray(optask.tasks) ? optask.tasks : [optask.tasks], subopt => { | ||
subopt.src = subopt.src || optask.src; | ||
subopt.dist = subopt.dist || optask.dist; | ||
}); | ||
return this.loadTasks(gulp, optask.tasks, env) | ||
.then(subseq => { | ||
if (subseq && subseq.length > 0) { | ||
let first = _.first(subseq); | ||
let last = _.last(subseq); | ||
let frn = _.isArray(first) ? _.first(first) : first; | ||
let lsn = _.isArray(last) ? _.first(last) : last; | ||
let subName = frn + '_' + lsn; | ||
gulp.task(subName, () => { | ||
return runSequence(gulp, subseq); | ||
}) | ||
return tsq.push(subName); | ||
} else { | ||
return tsq; | ||
} | ||
}); | ||
} else { | ||
return tsq; | ||
} | ||
}); | ||
@@ -162,14 +137,60 @@ } | ||
.then(ts => { | ||
let tsqs: Src[] = config.runTasks ? config.runTasks() : this.toSquence(ts); | ||
console.log(chalk.grey('run sequenec tasks:'), tsqs); | ||
if (config.option.runTasks) { | ||
if (_.isArray(config.option.runTasks)) { | ||
tsqs = config.option.runTasks; | ||
} else if (_.isFunction(config.option.runTasks)) { | ||
tsqs = config.option.runTasks(config.oper, tsqs); | ||
return this.loadSubTask(gulp, config) | ||
.then(subGroupTask => { | ||
let tsqs: Src[] = this.toSquence(ts); | ||
if (config.option.runTasks) { | ||
if (_.isFunction(config.option.runTasks)) { | ||
tsqs = config.option.runTasks(config.oper, tsqs, subGroupTask); | ||
} else { | ||
tsqs = config.option.runTasks; | ||
subGroupTask && tsqs.push(subGroupTask); | ||
} | ||
return tsqs; | ||
} else if (config.runTasks) { | ||
return config.runTasks(subGroupTask); | ||
} else { | ||
subGroupTask && tsqs.push(subGroupTask); | ||
return tsqs; | ||
} | ||
}); | ||
}); | ||
} | ||
/** | ||
* load sub tasks as group task. | ||
* | ||
* @protected | ||
* @param {Gulp} gulp | ||
* @param {TaskConfig} config | ||
* @returns {Promise<Src>} | ||
* | ||
* @memberOf Development | ||
*/ | ||
protected loadSubTask(gulp: Gulp, config: TaskConfig): Promise<Src> { | ||
let optask = config.option; | ||
if (optask.tasks) { | ||
_.each(_.isArray(optask.tasks) ? optask.tasks : [optask.tasks], subopt => { | ||
subopt.src = subopt.src || optask.src; | ||
subopt.dist = subopt.dist || optask.dist; | ||
}); | ||
return this.loadTasks(gulp, optask.tasks, config.env) | ||
.then(subseq => { | ||
if (subseq && subseq.length > 0) { | ||
let first = _.first(subseq); | ||
let last = _.last(subseq); | ||
let frn = _.isArray(first) ? _.first(first) : first; | ||
let lsn = _.isArray(last) ? _.last(last) : last; | ||
let subName = frn + '_' + lsn; | ||
gulp.task(subName, () => { | ||
return runSequence(gulp, subseq); | ||
}) | ||
return subName; | ||
} else { | ||
return null; | ||
} | ||
} | ||
return tsqs; | ||
}); | ||
} else { | ||
return Promise.resolve(null); | ||
} | ||
}); | ||
} | ||
@@ -253,4 +274,8 @@ | ||
ps = ps.then(() => { | ||
let taskErr = null, taskStop = null, len = _.isArray(task) ? (task.length - 1) : 0; | ||
let taskErr = null, taskStop = null; | ||
return new Promise((reslove, reject) => { | ||
let tskmap: any = {}; | ||
_.each(_.isArray(task) ? task : [task], t => { | ||
tskmap[t] = false; | ||
}); | ||
taskErr = (err) => { | ||
@@ -260,8 +285,5 @@ reject(err); | ||
taskStop = (e: any) => { | ||
if (len <= 0) { | ||
tskmap[e.task] = true; | ||
if (!_.some(_.values(tskmap), it => !it)) { | ||
reslove(); | ||
} else { | ||
if ((<string[]>task).indexOf(e.task) >= 0) { | ||
len--; | ||
} | ||
} | ||
@@ -271,10 +293,3 @@ } | ||
.on('task_err', taskErr); | ||
gulp.start(task, (err) => { | ||
if (err) { | ||
reject(err); | ||
} else { | ||
reslove(); | ||
} | ||
}); | ||
gulp.start(task); | ||
}) | ||
@@ -281,0 +296,0 @@ .then(() => { |
1734
59438