UNPKG

@template-tools/template-sync

Version:
426 lines (271 loc) 15 kB
[![npm](https://img.shields.io/npm/v/@template-tools/template-sync.svg)](https://www.npmjs.com/package/@template-tools/template-sync) [![License](https://img.shields.io/badge/License-0BSD-blue.svg)](https://spdx.org/licenses/0BSD.html) [![bundlejs](https://deno.bundlejs.com/?q=@template-tools/template-sync\&badge=detailed)](https://bundlejs.com/?q=@template-tools/template-sync) [![downloads](http://img.shields.io/npm/dm/@template-tools/template-sync.svg?style=flat-square)](https://npmjs.org/package/@template-tools/template-sync) [![GitHub Issues](https://img.shields.io/github/issues/template-tools/template-sync.svg?style=flat-square)](https://github.com/template-tools/template-sync/issues) [![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ftemplate-tools%2Ftemplate-sync%2Fbadge\&style=flat)](https://actions-badge.atrox.dev/template-tools/template-sync/goto) [![Styled with prettier](https://img.shields.io/badge/styled_with-prettier-ff69b4.svg)](https://github.com/prettier/prettier) [![Commitizen friendly](https://img.shields.io/badge/commitizen-friendly-brightgreen.svg)](http://commitizen.github.io/cz-cli/) [![Known Vulnerabilities](https://snyk.io/test/github/template-tools/template-sync/badge.svg)](https://snyk.io/test/github/template-tools/template-sync) ## template-sync Keep repository in sync with its template. Generates pull requests to bring a repository back in sync with its template. So by making changes to the template and applying template-sync the target project will be updated accoring to the template. Works with github and bitbucket. This is the engine for cli operation please see [template-tools/template-sync-cli](https://github.com/template-tools/template-sync-cli) Merges contents from template branch into destination branch handling some special cases for: * Licenses - rewriting license years * line set files like .npmignore and .gitignore - by merging both sets together * package.json - merge (.\*)\[Dd]ependencies, engines and scripts * rollup.conf.\*js - copy / rewrite + detect dev dependencies * [\*.yaml - merge](doc/yaml/README.md) * [.travis.yml - merge with hints](doc/travis/README.md) * [\*.toml - merge](doc/toml/README.md) * [\*.ini - merge](doc/ini/README.md) * [\*.json - merge](doc/json/README.md) * README.md - merge badges ![generated pull request](doc/pr_sample.png) ## Some templates * [arlac77/template-cli-app](https://github.com/arlac77/template-cli-app) *rollup* *ava* *travis* * [arlac77/template-esm-only](https://github.com/arlac77/template-esm-only) *ava* *travis* * [arlac77/template-svelte-component](https://github.com/arlac77/template-svelte-component) *svelte* *rollup* *testcafe* *travis* * [arlac77/template-svelte-app](https://github.com/arlac77/template-svelte-app) *svelte* *rollup* *pkgbuild* *travis* * [arlac77/template-kronos-component](https://github.com/arlac77/template-kronos-component) template-esm-only with node 14 * [arlac77/template-kronos-app](https://github.com/arlac77/template-kronos-app) node 14 + systemd # API <!-- Generated by documentation.js. Update this documentation by updating the source code. --> ### Table of Contents * [Context](#context) * [Parameters](#parameters) * [Properties](#properties) * [targetBranch](#targetbranch) * [initialize](#initialize) * [execute](#execute) * [commits](#commits) * [executeBranch](#executebranch) * [pullRequestBranch](#pullrequestbranch) * [sortedKeys](#sortedkeys) * [exportsConditionOrder](#exportsconditionorder) * [Package](#package) * [properties](#properties-1) * [Parameters](#parameters-1) * [Merger](#merger) * [properties](#properties-2) * [Parameters](#parameters-2) * [commits](#commits-1) * [Parameters](#parameters-3) * [Merger](#merger-1) * [Properties](#properties-3) * [properties](#properties-4) * [Parameters](#parameters-4) * [commits](#commits-2) * [Parameters](#parameters-5) * [Readme](#readme) * [MergeLineSet](#mergelineset) * [Replace](#replace) * [INI](#ini) * [Skip](#skip) * [Delete](#delete) * [EntryMerger](#entrymerger) * [Properties](#properties-5) * [Template](#template) * [Parameters](#parameters-6) * [Properties](#properties-6) * [shortKey](#shortkey) * [entryMerger](#entrymerger-1) * [Parameters](#parameters-7) * [mergerFor](#mergerfor) * [Parameters](#parameters-8) * [\_templateFrom](#_templatefrom) * [Parameters](#parameters-9) * [updateUsedBy](#updateusedby) * [Parameters](#parameters-10) * [templateFor](#templatefor) * [Parameters](#parameters-11) * [ReplaceIfEmpty](#replaceifempty) * [normalizeTemplateSources](#normalizetemplatesources) * [Parameters](#parameters-12) * [jspath](#jspath) * [Parameters](#parameters-13) * [actions2message](#actions2message) * [Parameters](#parameters-14) * [actions2messages](#actions2messages) * [Parameters](#parameters-15) ## Context **Extends LogLevelMixin(class \_Context {})** Context prepared to execute one branch. ### Parameters * `provider` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20; * `targetBranch` **(Branch | [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String))**&#x20; * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`) ### Properties * `ctx` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20; * `files` **[Map](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String), [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>**&#x20; ### targetBranch Type: (Branch | [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)) ### initialize Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<([Context](#context) | [undefined](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/undefined))>**&#x20; ### execute Generate Pull Requests. Returns **AsyncIterable\<PullRequest>**&#x20; ### commits Generate all commits from the template entry merges. Returns **AsyncIterable\<Commit>**&#x20; ### executeBranch Generate Pull Requests. Returns **AsyncIterable\<PullRequest>** the actual PRs ## pullRequestBranch Type: [String](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) ## sortedKeys order in which json keys are written ## exportsConditionOrder * **See**: {<https://nodejs.org/dist/latest/docs/api/packages.html#exports}> Order in which exports are searched ## Package **Extends Merger** Merger for package.json ### properties Deliver some key properties. * name * version * description * main #### Parameters * `entry` **ContentEntry**&#x20; Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>**&#x20; ## Merger Mergable content ### properties Deliver some key properties. #### Parameters * `entry` **ContentEntry**&#x20; Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>** extracted properties ### commits Generate commits as result of merging two entries. #### Parameters * `context` &#x20; * `destinationEntry` &#x20; * `sourceEntry` &#x20; * `options` &#x20; Returns **AsyncIterable\<Commit>**&#x20; ## Merger Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) ### Properties * `type` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; * `pattern` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; * `factory` **Class**&#x20; * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20; ### properties Deliver some key properties. #### Parameters * `entry` **ContentEntry**&#x20; Returns **[Promise](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Promise)<[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)>** extracted properties ### commits Generate commits as result of merging two entries. #### Parameters * `context` &#x20; * `destinationEntry` &#x20; * `sourceEntry` &#x20; * `options` &#x20; Returns **AsyncIterable\<Commit>**&#x20; ## Readme **Extends Merger** Injects badges into README.md. ## MergeLineSet **Extends Merger** ## Replace **Extends Merger** Always overwrite entry from template ## INI **Extends Merger** Merge ini entries ## Skip **Extends Merger** Does not generate destination entry ## Delete **Extends Merger** Delete entry. ## EntryMerger Type: [Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object) ### Properties * `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; * `factory` **Class**&#x20; * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20; ## Template **Extends LogLevelMixin(class {})** ### Parameters * `context` **Conext**&#x20; * `sources` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20; * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`) ### Properties * `context` **Conext**&#x20; * `sources` **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20; * `toBeRemovedSources` **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20; * `mergers` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Merger](#merger)>**&#x20; * `branches` **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)\<Branch>** all used branches direct and inherited * `keyBranches` **[Set](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Set)\<Branch>** branches used to define the template ### shortKey Used to identify generated branch. Returns **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** short template key ### entryMerger Find a suitable merger for each entry #### Parameters * `entries` **Iterator\<ContentEntry>**&#x20; Returns **Iterator<\[ContentEntry, [Merger](#merger)]>**&#x20; ### mergerFor Find a suitable merger #### Parameters * `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** of the entry Returns **[Merger](#merger)**&#x20; ### \_templateFrom Load all templates and collects the entries. #### Parameters * `sources` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)** branch names * `inheritencePath` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)\<Branch>** who was requesting us (optional, default `[]`) Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** package as merged from sources ### updateUsedBy Updates usedBy section of the template branch. #### Parameters * `targetBranch` **Branch** template to be updated * `templateSources` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** original branch identifiers (even with deletion hints) * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** as passed to commitIntoPullRequest Returns **AsyncIterator\<PullRequest>**&#x20; ### templateFor Load a template. #### Parameters * `context` **[Context](#context)**&#x20; * `sources` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20; * `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**&#x20; ## ReplaceIfEmpty **Extends Merger** Overwrites none existing entries from template. ## normalizeTemplateSources Remove duplicate sources. Sources staring with '-' will be removed ### Parameters * `sources` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>**&#x20; * `remove` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** (optional, default `[]`) Returns **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)>** normalized sources ## jspath ### Parameters * `object` &#x20; * `path` &#x20; * `cb` &#x20; ## actions2message ### Parameters * `actions` &#x20; * `prefix` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; * `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; Returns **any** actions as one string lines ordered by scope ## actions2messages ### Parameters * `actions` &#x20; * `prefix` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; * `name` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**&#x20; # install With [npm](http://npmjs.org) do: ```shell npm install -g @template-tools/sync-cli ``` # license BSD-2-Clause