An open API service indexing awesome lists of open source software.

https://github.com/template-tools/template-tools.github.io


https://github.com/template-tools/template-tools.github.io

Last synced: 2 months ago
JSON representation

Awesome Lists containing this project

README

          

[![npm](https://img.shields.io/npm/v/@template-tools/sync-cli.svg)](https://www.npmjs.com/package/@template-tools/sync-cli)
[![License](https://img.shields.io/badge/License-BSD%203--Clause-blue.svg)](https://opensource.org/licenses/BSD-3-Clause)
[![install size](https://packagephobia.now.sh/badge?p=@template-tools/sync-cli/@2.1.11)](https://packagephobia.now.sh/result?p=@template-tools/sync-cli@2.1.11)
[![minified size](https://badgen.net/bundlephobia/min/@template-tools/sync-cli)](https://bundlephobia.com/result?p=@template-tools/sync-cli)
[![downloads](http://img.shields.io/npm/dm/@template-tools/sync-cli.svg?style=flat-square)](https://npmjs.org/package/@template-tools/sync-cli)
[![GitHub Issues](https://img.shields.io/github/issues/template-tools/template-sync-cli.svg?style=flat-square)](https://github.com/template-tools/template-sync-cli/issues)
[![Build Status](https://img.shields.io/endpoint.svg?url=https%3A%2F%2Factions-badge.atrox.dev%2Ftemplate-tools%2Ftemplate-sync-cli%2Fbadge\&style=flat)](https://actions-badge.atrox.dev/template-tools/template-sync-cli/goto)
[![Coverage Status](https://coveralls.io/repos/template-tools/template-sync-cli/badge.svg)](https://coveralls.io/github/template-tools/template-sync-cli)

## @template-tools/sync-cli

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 npm-template-sync the target project will be updated accoring to the template.

Works with github and bitbucket.

```shell
export AGGREGATION_FACTORY="github-repository-provider" # for github repos
export GITHUB_TOKEN='token providing repositroy write access' # for github repos

template-sync --template aTemplateGithubUser/aRepo myGithubUser/myRepo
```

Define (initial) properties to be used in the template

```shell
export AGGREGATION_FACTORY="github-repository-provider" # for github repos
export GITHUB_TOKEN='token providing repositroy write access' # for github repos

template-sync --define "description=a very new fantastic module" -t myUser/myTemplate myUser/newModule#aBranch
```

Create new repository and bind it to aTemplateGithubUser/aRepo

```shell
export GITHUB_TOKEN='token providing repositroy write access' # for github repos

template-sync --track --create --template aTemplateGithubUser/aRepo myGithubUser/myRepo
```

Switch from [arlac77/template-github](https://github.com/arlac77/template-github) to [arlac77/template-arlac77-github](https://github.com/arlac77/template-arlac77-github) template for [arlac77/url-cmd](https://github.com/arlac77/url-cmd), [arlac77/uti](https://github.com/arlac77/uti), [arlac77/content-entry](https://github.com/arlac77/content-entry) and [arlac77/repository-provider](https://github.com/arlac77/repository-provider)

```shell
export GITHUB_TOKEN='token providing repositroy write access' # for github repos

template-sync --track --template arlac77/template-arlac77-github --template -arlac77/template-github arlac77/url-cmd arlac77/uti arlac77/content-entry arlac77/repository-provider
```

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

### Table of Contents

- [Context](#context)
- [Parameters](#parameters)
- [Properties](#properties)
- [execute](#execute)
- [commits](#commits)
- [executeBranch](#executebranch)
- [sortedKeys](#sortedkeys)
- [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)
- [EntryMerger](#entrymerger)
- [Properties](#properties-5)
- [Template](#template)
- [Parameters](#parameters-6)
- [Properties](#properties-6)
- [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)
- [Readme](#readme)
- [MergeLineSet](#mergelineset)
- [Replace](#replace)
- [Skip](#skip)
- [Delete](#delete)
- [normalizeTemplateSources](#normalizetemplatesources)
- [Parameters](#parameters-12)
- [jspath](#jspath)
- [Parameters](#parameters-13)

## Context

**Extends LogLevelMixin(class \_Context {})**

Context prepared to execute one branch.

### Parameters

- `provider`
- `targetBranchName` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `options` (optional, default `{}`)

### Properties

- `ctx` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**
- `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)>**

### execute

Generate Pull Requests.

Returns **AsyncIterator<PullRequest>**

### commits

Generate all commits from the template entry merges.

Returns **Commit<AsyncIterator>**

### executeBranch

Generate Pull Requests.

Returns **AsyncIterator<PullRequest>** the actual PRs

## sortedKeys

order in which json keys are written

## Package

**Extends Merger**

Merger for package.json

### properties

Deliver some key properties.

- name
- version
- description
- main

#### Parameters

- `entry` **ContentEntry**

Returns **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**

## Merger

Mergable content

### properties

Deliver some key properties.

#### Parameters

- `entry` **ContentEntry**

Returns **[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`
- `destinationEntry`
- `sourceEntry`
- `options`

## 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)**
- `pattern` **[string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String)**
- `factory` **Class**
- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**

### properties

Deliver some key properties.

#### Parameters

- `entry` **ContentEntry**

Returns **[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`
- `destinationEntry`
- `sourceEntry`
- `options`

## 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)**
- `factory` **Class**
- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**

## Template

**Extends LogLevelMixin(class {})**

### Parameters

- `context` **Conext**
- `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)>**
- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)** (optional, default `{}`)

### Properties

- `context` **Conext**
- `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)>**
- `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)>**
- `mergers` **[Array](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array)<[Merger](#merger)>**
- `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

### entryMerger

Find a suitable merger for each entry

#### Parameters

- `entries` **Iterator<ContentEntry>**

Returns **Iterator<\[ContentEntry, [Merger](#merger)]>**

### 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)**

### \_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>**

### templateFor

Load a template

#### Parameters

- `context` **[Context](#context)**
- `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)>**
- `options` **[Object](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object)**

## ReplaceIfEmpty

**Extends Merger**

Overwrites none existing entries from template

## Readme

**Extends Merger**

injects badges into README.md

## MergeLineSet

**Extends Merger**

## Replace

**Extends Merger**

Replace file from template (always)

## Skip

**Extends Merger**

Does not generate destination entry

## Delete

**Extends Merger**

Delete entry.

## 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)>**
- `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`
- `path`
- `cb`

# install

With [npm](http://npmjs.org) do:

```shell
npm install -g @template-tools/sync-cli

# template-sync --help
```

# license

BSD-2-Clause