Ecosyste.ms: Awesome

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

Awesome Lists | Featured Topics | Projects

https://github.com/Jaid/action-sync-node-meta

GitHub Action that syncs package.json with the repository metadata.
https://github.com/Jaid/action-sync-node-meta

action action-sync-node-meta actions bot github-action github-actions github-api metadata node node-js nodejs repository sync-node-meta util utility workflow

Last synced: about 2 months ago
JSON representation

GitHub Action that syncs package.json with the repository metadata.

Awesome Lists containing this project

README

        

# action-sync-node-meta

License Sponsor action-sync-node-meta
Build status Commits since v2.0.0 Last commit Issues

**GitHub Action that syncs package.json with the repository metadata.**

There are values that are meant to be the same. Why not automatically keep them synchronized?

![Banner](readme/banner.jpg)

### Example output

![Example output](readme/output.png)

## Example

### overwrite-file

Example workflow that runs whenever commits are pushed on branch `master`.
This will overwrite the `package.json` file if it differs from the GitHub repository info.

This is the recommended syncing direction, because of the more simple setup (no need to manually add a secret to the repository settings) and the advantages of git commits (better monitoring, revertability).

`.github/workflows/example.yml`
```yaml
name: Sync package.json with repository info
on:
push:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: actions/checkout
uses: actions/[email protected]
- name: Jaid/action-sync-node-meta
uses: jaid/[email protected]
with:
githubToken: ${{ secrets.GITHUB_TOKEN }}
```

### overwrite-github

Example workflow that runs whenever commits are pushed on branch `master`.
This will change the GitHub repository info whenever it differs from the content of `package.json`.

The secret `customGithubToken` is forwarded to the input `githubToken`. It has to be a [personal access token](https://github.com/settings/tokens) with scope "repo" added in [your repository's secrets settings](https://github.com/YOUR_NAME/YOUR_REPOSITORY/settings/secrets).

`.github/workflows/example2.yml`
```yaml
name: Sync repository info with package.json
on:
push:
branches: [master]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: actions/checkout
uses: actions/[email protected]
- name: Jaid/action-sync-node-meta
uses: jaid/[email protected]
with:
direction: overwrite-github
githubToken: ${{ secrets.customGithubToken }}
```

Detailed setup
Go to your account settings and then to “Developer settings”.

![Token setup: Step 1](readme/tokenSteps/01.png)

Go to “Personal access tokens”.

![Token setup: Step 2](readme/tokenSteps/02.png)

Click “Generate new token”.

![Token setup: Step 3](readme/tokenSteps/03.png)

Give it a good title, so you still know what your token does in one year. Add „repo“ permissions.

![Token setup: Step 4](readme/tokenSteps/04.png)

Copy the generated token.

![Token setup: Step 5](readme/tokenSteps/05.png)

Go to the repository that uses action-sync-node-meta. Go to “Settings”, “Secrets”.

![Token setup: Step 6](readme/tokenSteps/06.png)

Click “New repository secret”.

![Token setup: Step 7](readme/tokenSteps/07.png)

Add the secret token from your clipboard. Name the token “repoGithubToken” or anything you like.

![Token setup: Step 8](readme/tokenSteps/08.png)

Now pass the token to action-sync-node-meta in your workflow file.

```yaml
- name: Jaid/action-sync-node-meta
uses: jaid/[email protected]
with:
direction: overwrite-github
githubToken: ${{ secrets.repoGithubToken }}
```

## Options

Default
Info

githubToken
*

Repository token for allowing the action to make commits or change the repository info. If direction is "overwrite-file", this input be set from forwarding secrets.GITHUB_TOKEN in the workflow file. If direction is "overwrite-github", a custom personal access token with "repo" scope has to be created.

approve

true
If true and direction is "overwrite-file", pull requests created by this action are automatically approved and merged.

branch

action-sync-node-meta
The name of the branch to make changes on (only for direction "overwrite-file"). Substring “{random}” will be replaced with randomized characters.

commitMessage

autofix: Updated package.json[{changes}]
Commit message for package.json changes (only for direction "overwrite-file"). Substring “{changes}” will be replaced with a list of changed package.json fields.

direction

overwrite-file
The syncing direction, can be "overwrite-file" or "overwrite-github". If "overwrite-file", the file package.json will be edited in a pull request according to the GitHub repository info. If "overwrite-github", the GitHub repository info will be changed according to the content of the package.json file.

jsonFinalNewline

true
If true and direction is "overwrite-file", the updated package.json will have a final newline.

removeBranch

true
If true and direction is "overwrite-file" and approve is also true, automatically merged pull requests will delete their branch afterwards.

syncDescription

true
If true, package.json[description] will be synced with GitHub repository description.

syncHomepage

true
If true, package.json[homepage] will be synced with GitHub repository homepage.

syncKeywords

true
If true, package.json[keywords] will be synced with GitHub repository topics.

## Development

Setting up:
```bash
git clone [email protected]:jaid/action-sync-node-meta.git
cd action-sync-node-meta
npm install
```

## License
[MIT License](https://raw.githubusercontent.com/jaid/action-sync-node-meta/master/license.txt)
Copyright © 2021, Jaid \ (https://github.com/jaid)