import { chain, externalSchematic, Rule, apply, url, template, move, mergeWith, } from '@angular-devkit/schematics'; import { strings } from '@angular-devkit/core'; import { DomainOptions } from './schema'; import { addDomainToLintingRules } from '../utils/update-linting-rules'; export default function(options: DomainOptions): Rule { const libFolder = strings.dasherize(options.name); const templateSource = apply(url('./files'), [ template({}), move(`libs/${libFolder}/domain/src/lib`) ]); return chain([ externalSchematic('@nrwl/workspace', 'library', { name: 'domain', directory: options.name, tags: `domain:${options.name},type:domain-logic`, }), addDomainToLintingRules(options.name), mergeWith(templateSource) ]); }