@ts-ioc/activities v4.0.5
packaged @ts-ioc/activities
@ts-ioc/activities is activities framework, base on AOP, Ioc container, via @ts-ioc. file stream pipes activities.
This repo is for distribution on npm. The source for this module is in the
main repo.
Please file issues and pull requests against that repo.
Install
- install modules:
npm install @ts-ioc/activities- install cli | build pack:
cli in global
npm install -g '@ts-ioc/cli'build pack
npm install '@ts-ioc/pack'use command: pk run [taskfile.ts], pk run [taskfile.js]
You can import modules:
Doc
Define Task
- Single task
@Task('test')
class SimpleTask extends AbstractTask implements ITask {
constructor(name: string) {
super(name);
}
run(): Promise<any> {
// console.log('before simple activity:', this.name);
return Promise.resolve('simple task')
.then(val => {
console.log('return simple activity:', val);
return val;
});
}
}- control flow activities.
- Task module
Run task
1.
let wf = new Worflow(moudles)
2.
Workflow.create( moudles)
.bootstrap(<IConfigure>{
...
activity:...
});
3.
Workflow.create( moudles)
.bootstrap(TestTask);
4.
Workflow.create()
.sequence(TestTask, TsCompile, <IConfigure>{
...
activity: ...
});
5.
Workflow.create()
.run(...[TestTask, TsCompile, <IConfigure>{
...
activity: ...
}]);Simples
import { Workflow, IfActivityToken, SequenceActivityToken, ExecuteToken } from '@ts-ioc/activities';
import { INodeActivityContext, Asset, BuildModule, AssetToken, ShellModule, TransformModule, NodeActivityContext } from '@ts-ioc/build';
import * as through from 'through2';
import * as path from 'path';
import { isPackClass, PackModule } from '@ts-ioc/pack';
@Asset({
pipes: [
{
ifBody: {
sequence: [
{
src: ['packages/**/package.json', '!packages/activities/**/package.json', '!node_modules/**/package.json'],
pipes: [
ctx => versionSetting(ctx)
],
dest: 'packages',
activity: AssetToken
},
{
src: ['package.json'],
pipes: [
ctx => versionSetting(ctx)
],
dest: '.',
activity: AssetToken
}
],
activity: SequenceActivityToken
},
if: ctx => ctx.getEnvArgs().setvs,
activity: IfActivityToken
},
{
execute: (ctx: INodeActivityContext) => {
let envArgs = ctx.getEnvArgs();
let packages = ctx.getFolders('packages').filter(f => !/activities/.test(f)); // (f => !/(annotations|aop|bootstrap)/.test(f));
let activities = [];
packages.forEach(fd => {
let objs = require(path.join(fd, 'taskfile.ts'));
let builder = Object.values(objs).find(v => isPackClass(v));
activities.push(builder);
});
if (envArgs.deploy) {
let cmd = 'npm publish --access=public'; // envArgs.deploy ? 'npm publish --access=public' : 'npm run build';
let cmds = packages.map(fd => {
return `cd ${fd} && ${cmd}`;
});
console.log(cmds);
activities.push({
shell: cmds,
activity: 'shell'
});
}
return {
contextType: NodeActivityContext,
sequence: activities,
activity: SequenceActivityToken
}
},
activity: ExecuteToken
}
]
})
export class BuilderIoc {
}
@Asset({
pipes: [
{
if: ctx => ctx.getEnvArgs().setvs,
ifBody: {
src: ['packages/activities/**/package.json', '!node_modules/**/package.json'],
pipes: [
(ctx) => actVersionSetting(ctx)
],
dest: 'packages/activities',
activity: AssetToken
},
activity: IfActivityToken
},
{
execute: (ctx: INodeActivityContext) => {
let envArgs = ctx.getEnvArgs();
let packages = ctx.getFolders('packages/activities');
let activities = [];
packages.forEach(fd => {
// console.log(path.join(fd, 'taskfile.ts'));
let objs = require(path.join(fd, 'taskfile.ts'));
let builder = Object.values(objs).find(v => isPackClass(v));
activities.push(builder);
});
if (envArgs.deploy) {
let cmd = 'npm publish --access=public';
let cmds = packages.map(fd => {
return `cd ${fd} && ${cmd}`;
});
console.log(cmds);
activities.push({
shell: cmds,
activity: 'shell'
});
}
return {
sequence: activities,
activity: SequenceActivityToken
}
},
activity: ExecuteToken
}
]
})
export class BuilderActivities {
}
Workflow.create()
.use(PackModule)
.bootstrap({
contextType: NodeActivityContext,
if: ctx => ctx.getEnvArgs().act,
ifBody: BuilderActivities,
elseBody: BuilderIoc,
activity: IfActivityToken
});Documentation github
Documentation is available on the type-task docs site.
License
MIT © Houjun
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago
7 years ago