import { Rule, SchematicContext, Tree, schematic, chain } from '@angular-devkit/schematics'; import { getModelFromKraftosApi, getProjectFromKraftos } from './shared/kraftos-api'; import { Model, Project } from '@vmfvmf/ywtc-lib'; import { FrontendSchematics } from './frontend/add-artifacts/frontend-schematics'; export function gen(data: any): Rule { return async (tree: Tree, context: SchematicContext) => { let newPrj = await initiateProjectTemplate(data); const rules: any[] = [ schematic(FrontendSchematics.NEW, newPrj), ]; return chain(rules)(tree, context); }; } export async function initiateProjectTemplate(data: any | Project): Promise { let p = new Project(); if ('prjid' in data && Object.keys(data).length == 2) { Object.assign(p, await getProjectFromKraftos(data.prjid)); } else { Object.assign(p, data); } return p; } export async function initiateModelTemplate(data: any | Model): Promise { let model = new Model({}); if ('modelId' in data && Object.keys(data).length == 2) { Object.assign(model, await getModelFromKraftosApi(data.modelId)); } else { Object.assign(model, data); } return model; }