From 722145cf072eb4041711c1a0799acc186c94b8cf Mon Sep 17 00:00:00 2001 From: Arman Ozak Date: Fri, 28 Aug 2020 17:25:00 +0300 Subject: [PATCH] feat: add chainAndMerge utility rule creator --- npm/ng-packs/packages/schematics/src/utils/rule.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/npm/ng-packs/packages/schematics/src/utils/rule.ts b/npm/ng-packs/packages/schematics/src/utils/rule.ts index 6748f30fab..39b14cec78 100644 --- a/npm/ng-packs/packages/schematics/src/utils/rule.ts +++ b/npm/ng-packs/packages/schematics/src/utils/rule.ts @@ -1,6 +1,8 @@ import { apply, + chain, forEach, + MergeStrategy, mergeWith, Rule, SchematicContext, @@ -16,6 +18,14 @@ export function applyWithOverwrite(source: Source, rules: Rule[]): Rule { }; } +export function chainAndMerge(rules: Rule[]) { + return (host: Tree) => async (tree: Tree, context: SchematicContext) => + host.merge( + (await (chain(rules)(tree, context) as any).toPromise()) as Tree, + MergeStrategy.AllowDeleteConflict, + ); +} + export function overwriteFileIfExists(tree: Tree): Rule { return forEach(fileEntry => { if (!tree.exists(fileEntry.path)) return fileEntry;