UNPKG

@template-tools/template-sync

Version:
52 lines (45 loc) 1.24 kB
import { parse, stringify } from "yaml"; import { StringContentEntry } from "content-entry"; import { merge } from "hinted-tree-merger"; import { Merger } from "../merger.mjs"; import { actions2message, aggregateActions } from "../util.mjs"; export class YAML extends Merger { static get pattern() { return "**/*.yaml"; } static get options() { return { ...super.options, expand: true, messagePrefix: "chore: " }; } static async *commits( context, destinationEntry, sourceEntry, options = this.options ) { const [original, template] = await Promise.all([ destinationEntry.string, sourceEntry.string ]); const actions = {}; const merged = stringify( merge( parse(context.expand(original, options.expand)), parse(context.expand(template, options.expand)), "", (action, hint) => aggregateActions(actions, action, hint), options.mergeHints ) ); if (original !== merged) { const name = destinationEntry.name; yield { entries: [new StringContentEntry(name, undefined, merged)], message: actions2message(actions, options.messagePrefix, name) }; } } }