made-beta
Version:
It allows you to create tasks in your project manager (e.g., Github) automatically based on predefined processes. Additionally, it generates documentation based on the project.
58 lines (43 loc) • 2.15 kB
text/typescript
import { Activity, isProcess, Model, Task, Process } from "../../../language/generated/ast.js";
import { AbstractApplication } from "./AbstractApplication.js";
import { Process as ProcessData, Activity as ActivityData, Task as TaskData} from "made-lib-beta";
import { ProcessBuilder } from "./builders/ProcessBuilder.js";
import { TaskBuilder } from "./builders/TaskBuilder.js";
import { ActivityBuilder } from "./builders/ActivityBuilder.js";
export class ProcessApplication extends AbstractApplication {
constructor(target_folder:string, model: Model) {
super(target_folder, model)
this.jsonFile = "process.json"
}
public async create(){
const processes = this.model.components.filter (isProcess);
processes.map (async process => {
const instance = await this.createProcess(process)
await this.saveorUpdate (instance)
})
}
private async createProcess (process: Process): Promise<ProcessData>{
const builder = new ProcessBuilder()
builder.setId(process.id)
.setName(process.name ?? "")
.setDescription(process.description ?? "")
.setActivities(await Promise.all(process.activities.map(async activity => await this.createActivity(activity)) ?? []))
return builder.build()
}
private async createActivity (activity: Activity): Promise<ActivityData>{
const builder = new ActivityBuilder()
builder.setId(activity.id ?? "")
.setName(activity.name ?? "")
.setDescription(activity.description ?? "")
.setTasks(await Promise.all(activity.tasks.map (async task => await this.createTask(task)) ?? []))
//depends: await Promise.all(activity.depend)
return builder.build()
}
private async createTask (task: Task): Promise<TaskData>{
const builder = new TaskBuilder()
builder.setId(task.id ?? "")
.setName(task.name ?? "")
.setDescription(task.description ?? "")
return builder.build()
}
}