Compare commits

...

63 Commits

Author SHA1 Message Date
Federico Grandi
d192ad0aba release: v5.3.0 2020-12-12 17:51:51 +01:00
Federico Grandi
3bee5aeb33 docs(README): add outputs info 2020-12-12 17:44:28 +01:00
Federico Grandi
5cb8787442 [auto] build: update compiled version 2020-12-12 16:07:50 +00:00
Federico Grandi
334c6c32a5 fix(outputs): keep failing on tag error
This is just not to introduce breaking changes
2020-12-12 17:07:05 +01:00
Federico Grandi
d4b7879e16 [auto] build: update compiled version 2020-12-12 16:02:02 +00:00
Federico Grandi
d8573f888f fix(tag): fix tag logs
It seems like simple-git handlers don't work for custom git tag commands
Promises still work, we'll try to use them then
2020-12-12 17:01:09 +01:00
Federico Grandi
cac5e6ba5b [auto] build: update compiled version 2020-12-12 15:37:41 +00:00
Federico Grandi
655a68b116 fix(outputs): fix outputs not displaying in logs 2020-12-12 16:36:50 +01:00
Federico Grandi
524f96d401 fix(build): re-enable lib minification 2020-12-12 16:33:38 +01:00
Federico Grandi
28ab8fcce3 Merge branch 'master' of https://github.com/EndBug/add-and-commit 2020-12-12 16:33:03 +01:00
Federico Grandi
6da0ea7f9b fix(outputs): add debug log 2020-12-12 16:32:21 +01:00
Federico Grandi
11a529635a [auto] build: update compiled version 2020-12-12 15:26:19 +00:00
Federico Grandi
bc31c50167 fix(outputs): update output format in log 2020-12-12 16:25:26 +01:00
Federico Grandi
07e991cfab [auto] build: update compiled version 2020-12-06 16:44:04 +00:00
Federico Grandi
0f3c8c6996 fix(util): fix build issue
This may be caused by ncc not correctly using edModuleInterlop
2020-12-06 17:43:05 +01:00
Federico Grandi
0f070625cd chore(build): don't minify build 2020-12-06 17:31:53 +01:00
Federico Grandi
ed8cbae509 [auto] build: update compiled version 2020-12-06 10:31:36 +00:00
Federico Grandi
4b5a2df0dd chore(build): minify build 2020-12-06 11:30:50 +01:00
Federico Grandi
c8e1fb0d1b [auto] build: update compiled version 2020-12-05 15:35:39 +00:00
Federico Grandi
fe1fb219a6 feat: add outputs
re #96
2020-12-05 16:34:50 +01:00
Federico Grandi
28fa18d5af chore(build): don't minify build 2020-12-05 16:04:15 +01:00
Federico Grandi
a0873811e5 chore(deps): lock simple-git version 2020-12-05 16:03:39 +01:00
Federico Grandi
40e84d601c chore(husky): don't commit src folder 2020-12-05 16:02:49 +01:00
Federico Grandi
ec13f51fd9 [auto] build: update compiled version 2020-11-29 17:05:43 +00:00
Federico Grandi
3140d34146 chore: add prettier 2020-11-29 17:51:26 +01:00
Federico Grandi
3ed8463058 chore: remove compiled imputs 2020-11-29 17:41:48 +01:00
dependabot[bot]
ea1d3cefff chore(deps-dev): bump typescript from 4.0.5 to 4.1.2 (#94)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.0.5 to 4.1.2.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.0.5...v4.1.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-23 09:57:39 +01:00
dependabot[bot]
e298441a67 chore(deps): bump simple-git from 2.22.0 to 2.23.0 (#93)
Bumps [simple-git](https://github.com/steveukx/git-js) from 2.22.0 to 2.23.0.
- [Release notes](https://github.com/steveukx/git-js/releases)
- [Changelog](https://github.com/steveukx/git-js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/steveukx/git-js/compare/v2.22.0...v2.23.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-23 09:51:25 +01:00
Federico Grandi
4387feb4b8 chore: add bug issue template 2020-11-18 18:59:52 +01:00
dependabot[bot]
cfa65e13b2 chore(deps): bump simple-git from 2.21.0 to 2.22.0 (#92)
Bumps [simple-git](https://github.com/steveukx/git-js) from 2.21.0 to 2.22.0.
- [Release notes](https://github.com/steveukx/git-js/releases)
- [Changelog](https://github.com/steveukx/git-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/steveukx/git-js/compare/v2.21.0...v2.22.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-16 16:00:41 +01:00
Federico Grandi
eb9afeffe2 [auto] build: update compiled version 2020-11-11 18:00:17 +00:00
Federico Grandi
110b7e289f ci(gh-actions): limit ci actions to master branch
This causes issues when a release is published, because the build scripts create a new branch
because of the new tag that gets automatically pushed by GitHub
2020-11-11 18:59:15 +01:00
Federico Grandi
57c075ed5f release: v5.2.0 2020-11-11 18:34:50 +01:00
allcontributors[bot]
dd36cc6914 docs: add kbsali as a contributor (#91)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* [auto] docs: update contributors badge

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-11-11 18:29:40 +01:00
Federico Grandi
15f07d3078 [auto] build: update compiled version 2020-11-11 17:15:54 +00:00
Federico Grandi
c0c96adb24 docs(push): update docs for the push parameter 2020-11-11 18:15:00 +01:00
Federico Grandi
b36969554e feat(push): add push option
re #86
2020-11-11 18:11:50 +01:00
allcontributors[bot]
0c6f4a1284 docs: add Chocrates as a contributor (#90)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* [auto] docs: update contributors badge

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-11-10 15:44:24 +01:00
Federico Grandi
9358097a71 release: v5.1.2 2020-11-10 08:10:33 +01:00
dependabot[bot]
ed17cacb74 chore(deps-dev): bump @vercel/ncc from 0.24.1 to 0.25.1 (#87)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.24.1 to 0.25.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.24.1...0.25.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-09 22:52:04 +01:00
Federico Grandi
e0cd865b68 build(husky): add build files 2020-11-07 14:02:30 +01:00
Federico Grandi
ed7b74af50 release: v5.1.1 2020-11-07 13:59:56 +01:00
allcontributors[bot]
8c0903ea07 docs: add coffeegoddd as a contributor (#84)
* docs: update README.md [skip ci]

* docs: update .all-contributorsrc [skip ci]

* [auto] docs: update contributors badge

Co-authored-by: allcontributors[bot] <46447321+allcontributors[bot]@users.noreply.github.com>
2020-11-07 13:52:16 +01:00
Dustin Brown
29856365a6 [auto] build: update compiled version 2020-11-07 12:50:49 +00:00
Dustin Brown
a7661122af /{action.yml, src/}: fix typo (#83) 2020-11-07 13:50:19 +01:00
dependabot[bot]
1181181b70 chore(deps): bump simple-git from 2.19.0 to 2.21.0 (#80)
Bumps [simple-git](https://github.com/steveukx/git-js) from 2.19.0 to 2.21.0.
- [Release notes](https://github.com/steveukx/git-js/releases)
- [Changelog](https://github.com/steveukx/git-js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/steveukx/git-js/compare/v2.19.0...v2.21.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-02 08:05:47 +01:00
dependabot[bot]
32090e561e chore(deps-dev): bump typescript from 4.0.2 to 4.0.5 (#81)
Bumps [typescript](https://github.com/Microsoft/TypeScript) from 4.0.2 to 4.0.5.
- [Release notes](https://github.com/Microsoft/TypeScript/releases)
- [Commits](https://github.com/Microsoft/TypeScript/compare/v4.0.2...v4.0.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-02 08:03:06 +01:00
Federico Grandi
07a46e3fca [auto] build: update compiled version 2020-10-29 08:03:05 +00:00
Federico Grandi
b43e3143da ci: remove unnecessary --force 2020-10-29 09:01:50 +01:00
Federico Grandi
9c99934303 chore: remove lib from .gitignore 2020-10-29 08:50:02 +01:00
Federico Grandi
34757b89f7 chore: add husky for building 2020-10-29 08:46:41 +01:00
dependabot[bot]
e3b93a10e2 chore(deps-dev): bump @vercel/ncc from 0.23.0 to 0.24.1 (#77)
Bumps [@vercel/ncc](https://github.com/vercel/ncc) from 0.23.0 to 0.24.1.
- [Release notes](https://github.com/vercel/ncc/releases)
- [Commits](https://github.com/vercel/ncc/compare/0.23.0...0.24.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-29 08:41:29 +01:00
Federico Grandi
b043969cfd [auto] build: update compiled version 2020-10-29 07:40:53 +00:00
Federico Grandi
101829e6c0 fix: fix build error 2020-10-29 08:40:06 +01:00
dependabot[bot]
8cd8f9f071 chore(deps-dev): bump all-contributors-cli from 6.17.2 to 6.19.0 (#76)
Bumps [all-contributors-cli](https://github.com/all-contributors/all-contributors-cli) from 6.17.2 to 6.19.0.
- [Release notes](https://github.com/all-contributors/all-contributors-cli/releases)
- [Commits](https://github.com/all-contributors/all-contributors-cli/compare/v6.17.2...v6.19.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-29 08:36:37 +01:00
dependabot[bot]
c010bcbe2f chore(deps): bump axios from 0.19.2 to 0.21.0 (#74)
Bumps [axios](https://github.com/axios/axios) from 0.19.2 to 0.21.0.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/master/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.19.2...v0.21.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-29 08:34:50 +01:00
dependabot[bot]
1b176ae96b chore(deps-dev): bump ts-node from 8.10.2 to 9.0.0 (#73)
Bumps [ts-node](https://github.com/TypeStrong/ts-node) from 8.10.2 to 9.0.0.
- [Release notes](https://github.com/TypeStrong/ts-node/releases)
- [Commits](https://github.com/TypeStrong/ts-node/compare/v8.10.2...v9.0.0)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-10-29 08:34:32 +01:00
Jose Eduardo Kimura
ecdc355d15 fix: Fix missing pull strategy for simple-git (#72)
Closes #71
2020-10-29 08:33:40 +01:00
Federico Grandi
79fae44cb3 ci: fix dependabot.yml 2020-10-29 08:31:33 +01:00
Federico Grandi
34b3c277a4 ci: add dependabot config 2020-10-19 09:52:03 +02:00
Federico Grandi
bd911ffe7e ci: add label-sync 2020-10-19 09:47:38 +02:00
Federico Grandi
e6f30b78b7 ci: fix action ref 2020-10-17 09:30:15 +02:00
Federico Grandi
9145a27b50 ci: export repo labels 2020-10-17 09:27:55 +02:00
24 changed files with 991 additions and 302 deletions

View File

@@ -147,6 +147,33 @@
"contributions": [
"ideas"
]
},
{
"login": "coffeegoddd",
"name": "Dustin Brown",
"avatar_url": "https://avatars3.githubusercontent.com/u/43383835?v=4",
"profile": "https://github.com/coffeegoddd",
"contributions": [
"bug"
]
},
{
"login": "Chocrates",
"name": "Chris McIntosh",
"avatar_url": "https://avatars1.githubusercontent.com/u/1758164?v=4",
"profile": "https://github.com/Chocrates",
"contributions": [
"bug"
]
},
{
"login": "kbsali",
"name": "Kevin Saliou",
"avatar_url": "https://avatars0.githubusercontent.com/u/53676?v=4",
"profile": "https://github.com/kbsali",
"contributions": [
"ideas"
]
}
],
"contributorsPerLine": 7,

View File

@@ -1,64 +0,0 @@
{
"env": {
"node": true,
"browser": true,
"amd": true,
"es6": true
},
"root": true,
"extends": [
"eslint:recommended"
],
"plugins": [
"@typescript-eslint"
],
"parser": "@typescript-eslint/parser",
"parserOptions": {
"ecmaVersion": 6,
"sourceType": "module",
"ecmaFeatures": {
"jsx": true
}
},
"rules": {
"no-cond-assign": [
2,
"except-parens"
],
"no-use-before-define": [
2,
{
"functions": false,
"classes": false,
"variables": false
}
],
"new-cap": 0,
"no-caller": 2,
"no-undef": 2,
"no-unused-vars": 0,
"@typescript-eslint/no-unused-vars": "warn",
"no-empty": [
"error",
{
"allowEmptyCatch": true
}
],
"no-console": "off",
"prefer-const": [
"warn",
{
"destructuring": "all"
}
],
"quotes": [
"warn",
"single"
],
"semi": [
"warn",
"never"
],
"spaced-comment": "warn"
}
}

38
.eslintrc.js Normal file
View File

@@ -0,0 +1,38 @@
module.exports = {
env: {
commonjs: true,
es6: true,
node: true
},
extends: [
'eslint:recommended',
'prettier/@typescript-eslint',
'plugin:prettier/recommended'
],
globals: {},
parser: '@typescript-eslint/parser',
parserOptions: {
ecmaVersion: 6,
sourceType: 'module'
},
plugins: ['@typescript-eslint'],
rules: {
'prettier/prettier': 'warn',
'no-cond-assign': [2, 'except-parens'],
'no-unused-vars': 0,
'@typescript-eslint/no-unused-vars': 1,
'no-empty': [
'error',
{
allowEmptyCatch: true
}
],
'prefer-const': [
'warn',
{
destructuring: 'all'
}
],
'spaced-comment': 'warn'
}
}

24
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@@ -0,0 +1,24 @@
---
name: Bug report
about: Report an issue with the action
title: ''
labels: 'status: pending'
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is. If a particular error is shown
**Workflow used**
Provide a snippet of the workflow and/or a link to it (use the commit sha as the ref when you link it, so that it's not influenced by other changes). If you only share a section of the workflow, make sure it includes the step that uses the action!
**Expected behavior**
A clear and concise description of what you expected to happen.
**Logs**
Either provide a link to the action run or (if your repo is private) paste here the logs from the step that uses it. If you paste the logs, please use this template, and remember to paste the logs from all the different sections.
<details>
<summary>Logs</summary>
<pre><code>Your logs here.</code></pre>
</details>

16
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,16 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: 'npm' # See documentation for possible values
directory: '/' # Location of package manifests
schedule:
interval: 'weekly'
commit-message:
prefix: 'chore'
include: 'scope'
labels:
- 'type: dependencies'

80
.github/labels.yml vendored Normal file
View File

@@ -0,0 +1,80 @@
# General purpose
- name: 'good first issue'
color: '5319e7'
description: 'Good for newcomers'
aliases: []
- name: 'help wanted'
color: '008672'
description: 'Extra attention is needed'
aliases: []
- name: 'status: pending'
color: c5def5
description: 'More info is needed before deciding what to do.'
aliases: []
- name: 'status: pinned'
color: 0052cc
description: 'Issues and PRs that should not be labeled as stale or closed if they remain inactive.'
aliases: []
- name: 'status: stale'
color: fbca04
description: 'Inactive issues and PRs.'
aliases: ['stale']
- name: 'status: wontfix'
color: ffffff
description: 'This will not be worked on.'
aliases: ['wontfix']
- name: 'type: automation'
color: 2fc904
description: 'About actions workflows and automation.'
aliases: ['automation', 'actions']
- name: 'type: bug'
color: d73a4a
description: 'Verified problems that need to be worked on.'
aliases: ['bug']
- name: 'type: dependencies'
color: 0366d6
description: 'Pull requests that update a dependency file'
aliases: ['dependencies']
- name: 'type: duplicate'
color: cfd3d7
description: 'This issue or pull request already exists.'
aliases: ['duplicate']
- name: 'type: enhancement'
color: a2eeef
description: 'New feature or request.'
aliases: ['enhancement']
- name: 'type: invalid'
color: e4e669
description: "This doesn't seem right."
aliases: ['invalid']
- name: 'type: maintenance'
color: 0075ca
description: "Documentation improvements and code refactoring, doesn't affect functionality."
aliases: ['documentation', 'docs']
- name: 'type: not a bug'
color: 0e8a16
description: 'Reports that happen not be our fault.'
aliases: ['not a bug']
- name: 'type: question'
color: d876e3
description: 'Further information is requested.'
aliases: ['question']
- name: 'type: security'
color: 'ee0701'
description: 'Pull requests that address a security vulnerability.'
aliases: ['security']

View File

@@ -1,6 +1,8 @@
name: Build
on:
push:
branches:
- master
paths:
- src/**
- .github/workflows/build.yml
@@ -25,13 +27,5 @@ jobs:
with:
message: '[auto] build: update compiled version'
add: lib
force: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- uses: EndBug/add-and-commit@v4
with:
message: '[auto] build: update input typings'
add: src/inputs.ts
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,6 +1,8 @@
name: Docs
on:
push:
branches:
- master
paths:
- .all-contributorsrc
- .github/workflows/docs.yml
@@ -23,7 +25,7 @@ jobs:
- uses: EndBug/add-and-commit@v4.0.0
with:
message: "[auto] docs: update contributors badge"
message: '[auto] docs: update contributors badge'
add: README.md
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

21
.github/workflows/export-labels.yml vendored Normal file
View File

@@ -0,0 +1,21 @@
name: Export label config
on:
# You can run this with every event, but it's better to run it only when you actually need it.
workflow_dispatch:
jobs:
labels:
runs-on: ubuntu-latest
steps:
- uses: EndBug/export-label-config@main
with:
# This is needed if you're dealing with private repos.
token: ${{ secrets.GITHUB_TOKEN }}
# Set this to `true` if you want to get the raw API reponse. Defaults to `false`.
raw-result: false
# By default every label entry will have an `aliases` property set to an empty array.
# It's for EndBug/label-sync, if you don't want it you cans set this to `false`
add-aliases: true

19
.github/workflows/label-sync.yml vendored Normal file
View File

@@ -0,0 +1,19 @@
name: Sync labels
on:
push:
branches:
- master
paths:
- '.github/labels.yml'
workflow_dispatch:
jobs:
sync:
name: Run EndBug/label-sync
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: EndBug/label-sync@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
config-file: '.github/labels.yml'

1
.gitignore vendored
View File

@@ -1,3 +1,2 @@
node_modules
build
lib

7
.prettierrc Normal file
View File

@@ -0,0 +1,7 @@
{
"semi": false,
"singleQuote": true,
"tabWidth": 2,
"useTabs": false,
"trailingComma": "none"
}

View File

@@ -1,4 +1,5 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
@@ -6,113 +7,183 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [5.1.0] - 2020-10-07
## [5.3.0] - 2020-12-12
### Added:
- The default commit message now displays the name of the workflow too (issue #64)
- Outputs: the action now has 3 outputs (`committed`, `pushed`, and `tagged`) that will be set to either `true` or `false` to tell you what the action has done. The outputs are also shown in the action logs.
## [5.2.0] - 2020-11-11
### Added:
- New `push` option: this lets you tell the action whether to push commit and tags to the repo. The default value is `true`, so that the default behavior is not changed. (issue #86)
## [5.1.2] - 2020-11-10
### Fixed:
- Fixed an issue with the build (issue #88)
## [5.1.1] - 2020-11-07
### Fixed:
- Fixed typo in parameter name: `pull_strategy` was written as `pull_stategy` (PR #83)
## [5.1.0] - 2020-10-07
### Added:
- The default commit message now displays the name of the workflow too (issue #64)
## [5.0.0] - 2020-09-27
### Changed:
- **[BREAKING]** Action parameters: multiple action parameters have been changed, refer to the docs for better info
- The code is now entirely in TypeScript (PR #57)
### Fixed:
- Improved input checks
- Logs are now displayed on Windows too
- Remove unnecessary steps
- Remove unused dependencies
## [4.4.0] - 2020-07-31
### Added:
- Pull requests: the action can now work in runs triggered by pull request events (issue #48)
## [4.3.0] - 2020-07-29
### Addded:
- `signoff` parameter: lets you use the `--signoff` argument for the `git commit` command (PR #46)
## [4.2.1] - 2020-07-10
### Fixed:
- OS-support: the action now properly works on Windows instances (issue #33)
## [4.2.0] - 2020-05-17
### Added:
- Tagging: you can now create and update lightweight tags (PR #30)
## [4.1.0] - 2020-05-01
### Added:
### Added:
- `ref` parameter: lets you choose the branch to run the action on, the default is the one that triggered the workflow (issue #29)
## [4.0.3] - 2020-05-01
### Fixed:
- Logs: `git diff` won't display logs anymore, to avoid buffer problems (issue #27)
- Logs: additional info will be logged along with the command outputs
- Logs: added groups to improve readability
## [4.0.2] - 2020-04-19
### Fixed:
- Error handling: failures are now easier to read (issue #25)
## [4.0.1] - 2020-03-20
### Fixed:
- Scheduled events: the action can be used in action runs triggered by a scheduled events
- Warnings: there won't be warnings when both `author_name` and `author_email` are set
## [4.0.0] - 2020-03-03
### Removed:
- **[BREAKING]** `path` parameter: see 'Changed' section for more info
- **[BREAKING]** `pattern` parameter: see 'Changed' section for more info
### Changed:
- The action now uses `git add` and `git rm` commands, you can choose their arguemnts directly by using the `add` and `remove` parameters
- **[BREAKING]** Error handling: the action won't stop if one of your git commands fails (e.g. if one of your pathspecs doesn't match any file)
## [3.1.0] - 2020-02-21
### Added:
- `remove` parameter: lets you delete files directly from the action
## [3.0.0] - 2020-01-24
### Added:
- The action can now run in multiple subsequent jobs in the same workflow
### Removed:
- **[BREAKING]** [`actions/checkout@v1`](https://github.com/actions/checkout/tree/v1) support is being dropped in favor of [`actions/checkout@v2`](https://github.com/actions/checkout/releases/tag/v2)
## [2.3.2] - 2019-12-29
### Added:
- `cwd` parameter: lets you set the Current Working Directory
## [2.3.1] - 2019-12-20
### Added:
### Added:
- Short tags: from now on, there will be short major tags available (`v2`, `v3`, ...)
## [2.3.0] - 2019-12-14
### Changed:
- TypeScript rewrite: the action will run faster because, unlike with Docker, no build process is needed
### Added:
- OS support: the action can now run in non-Linux environments too
## [2.2.0] - 2019-12-14
### Added:
- The action can automatically fetch the commit author to use
- You can manually provide the author using the `author_name` and `author_email` parameters
## [2.1.1] - 2019-12-07
### Fixed:
- The action can now be used multiple times in the same workflow
## [2.1.0] - 2019-09-19
### Added:
- `force` parameter: uses `--force` when running `git add`
## [2.0.0] - 2019-09-18
### Changed:
- **[BREAKING]** The action now uses a `find` command
## [1.0.0] - 2019-09-17
First release
#
[Unreleased]: https://github.com/EndBug/add-and-commit/compare/v5.1.0...HEAD
[unreleased]: https://github.com/EndBug/add-and-commit/compare/v5.3.0...HEAD
[1.0.0]: https://github.com/EndBug/add-and-commit/tree/v1.0.0
[2.0.0]: https://github.com/EndBug/add-and-commit/compare/v1.0.0...v2.0.0
[2.1.0]: https://github.com/EndBug/add-and-commit/compare/v2.0.0...v2.1.0
@@ -134,3 +205,7 @@ First release
[4.4.0]: https://github.com/EndBug/add-and-commit/compare/v4.3.0...v4.4.0
[5.0.0]: https://github.com/EndBug/add-and-commit/compare/v4.4.0...v5.0.0
[5.1.0]: https://github.com/EndBug/add-and-commit/compare/v5.0.0...v5.1.0
[5.1.1]: https://github.com/EndBug/add-and-commit/compare/v5.1.0...v5.1.1
[5.1.2]: https://github.com/EndBug/add-and-commit/compare/v5.1.1...v5.1.2
[5.2.0]: https://github.com/EndBug/add-and-commit/compare/v5.1.2...v5.2.0
[5.3.0]: https://github.com/EndBug/add-and-commit/compare/v5.2.0...v5.3.0

View File

@@ -1,6 +1,7 @@
# Add & Commit
<a href="https://github.com/search?o=desc&q=EndBug%2Fadd-and-commit+path%3A.github%2Fworkflows+language%3AYAML&s=&type=Code" target="_blank" title="Public workflows that use this action."><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fapi-git-master.endbug.vercel.app%2Fapi%2Fgithub-actions%2Fused-by%3Faction%3DEndBug%2Fadd-and-commit%26badge%3Dtrue" alt="Public workflows that use this action."></a>
[![All Contributors](https://img.shields.io/badge/all_contributors-15-orange.svg?style=flat)](#contributors-)
[![All Contributors](https://img.shields.io/badge/all_contributors-18-orange.svg?style=flat)](#contributors-)
You can use this GitHub Action to commit changes made in your workflow run directly to your repo: for example, you use it to lint your code, update documentation, commit updated builds, etc....
@@ -38,9 +39,17 @@ Add a step like this to your workflow:
# Default: 'Commit from GitHub Actions (name of the workflow)'
message: 'Your commit message'
# The flag used on the pull strategy
# Default: '--no-rebase'
pull_strategy: '--no-rebase or --no-ff or --rebase'
# Whether to push the commit and, if any, its tags to the repo (only `true` and `false` are accepted)
# Default: true
push: false
# The arguments for the `git rm` command (see the paragraph below for more info)
# Default: ''
remove: "./dir/old_file.js"
remove: './dir/old_file.js'
# Whether to use the --signoff option on `git commit` (only `true` and `false` are accepted)
# Default: false
@@ -48,7 +57,7 @@ Add a step like this to your workflow:
# Arguments for the git tag command (the tag name always needs to be the first word not preceded by an hyphen)
# Default: ''
tag: "v1.0.0 --force"
tag: 'v1.0.0 --force'
env:
# This is necessary in order to push a commit to the repo
@@ -74,6 +83,16 @@ The script will not stop if one of the git commands fails. E.g.: if your command
You can use the `tag` option to enter the arguments for a `git add` command. In order for the action to isolate the tag name from the rest of the arguments, it should be the first word not preceded by an hyphen (e.g. `-a tag-name -m "some other stuff"` is ok).
### Outputs:
The action provides these outputs:
- `committed`: whether the action has created a commit (`'true'` or `'false'`)
- `pushed`: whether the action has pushed to teh remote(`'true'` or `'false'`)
- `tagged`: whether the action has created a tag (`'true'` or `'false'`)
For more info on how to use outputs, see ["Context and expression syntax"](https://docs.github.com/en/free-pro-team@latest/actions/reference/context-and-expression-syntax-for-github-actions).
### Examples:
Do you want to lint your JavaScript files, located in the `src` folder, with ESLint, so that fixable changes are done without your intervention? You can use a workflow like this:
@@ -82,34 +101,34 @@ Do you want to lint your JavaScript files, located in the `src` folder, with ESL
name: Lint source code
on: push
jobs:
jobs:
run:
name: Lint with ESLint
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v2
steps:
- name: Checkout repo
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Install dependencies
run: npm install
- name: Set up Node.js
uses: actions/setup-node@v1
with:
node-version: 12.x
- name: Update source code
run: eslint "src/**" --fix
- name: Install dependencies
run: npm install
- name: Commit changes
uses: EndBug/add-and-commit@v5
with:
author_name: Your Name
author_email: mail@example.com
message: "Your commit message"
add: "*.js"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Update source code
run: eslint "src/**" --fix
- name: Commit changes
uses: EndBug/add-and-commit@v5
with:
author_name: Your Name
author_email: mail@example.com
message: 'Your commit message'
add: '*.js'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
If you need to run the action on a repository that is not located in [`$GITHUB_WORKSPACE`](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/using-environment-variables#default-environment-variables), you can use the `cwd` option: the action uses a `cd` normal command, so the path should follow bash standards.
@@ -118,7 +137,7 @@ If you need to run the action on a repository that is not located in [`$GITHUB_W
name: Use a different repository directory
on: push
jobs:
jobs:
run:
name: Add a text file
runs-on: ubuntu-latest
@@ -127,7 +146,7 @@ jobs:
# If you need to, you can check out your repo to a different location
- uses: actions/checkout@v2
with:
path: "./pathToRepo/"
path: './pathToRepo/'
# You can make whatever type of change to the repo...
- run: echo "123" > ./pathToRepo/file.txt
@@ -135,9 +154,9 @@ jobs:
# ...and then use the action as you would normally do, but providing the path to the repo
- uses: EndBug/add-and-commit@v5
with:
message: "Add the very useful text file"
add: "*.txt --force"
cwd: "./pathToRepo/"
message: 'Add the very useful text file'
add: '*.txt --force'
cwd: './pathToRepo/'
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
@@ -170,11 +189,15 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d
</tr>
<tr>
<td align="center"><a href="https://github.com/Cyberbeni"><img src="https://avatars1.githubusercontent.com/u/8356175?v=4" width="100px;" alt=""/><br /><sub><b>Benedek Kozma</b></sub></a><br /><a href="#ideas-Cyberbeni" title="Ideas, Planning, & Feedback">🤔</a></td>
<td align="center"><a href="https://github.com/coffeegoddd"><img src="https://avatars3.githubusercontent.com/u/43383835?v=4" width="100px;" alt=""/><br /><sub><b>Dustin Brown</b></sub></a><br /><a href="https://github.com/EndBug/add-and-commit/issues?q=author%3Acoffeegoddd" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/Chocrates"><img src="https://avatars1.githubusercontent.com/u/1758164?v=4" width="100px;" alt=""/><br /><sub><b>Chris McIntosh</b></sub></a><br /><a href="https://github.com/EndBug/add-and-commit/issues?q=author%3AChocrates" title="Bug reports">🐛</a></td>
<td align="center"><a href="https://github.com/kbsali"><img src="https://avatars0.githubusercontent.com/u/53676?v=4" width="100px;" alt=""/><br /><sub><b>Kevin Saliou</b></sub></a><br /><a href="#ideas-kbsali" title="Ideas, Planning, & Feedback">🤔</a></td>
</tr>
</table>
<!-- markdownlint-enable -->
<!-- prettier-ignore-end -->
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/all-contributors/all-contributors) specification. Contributions of any kind welcome!

View File

@@ -22,6 +22,13 @@ inputs:
message:
description: The message for the commit
required: false
pull_strategy:
description: The flag used on the pull strategy
required: false
default: '--no-rebase'
push:
description: Whether to push the commit and, if any, its tags to the repo
required: false
remove:
description: Arguments for the git rm command
required: false
@@ -32,6 +39,14 @@ inputs:
description: Arguments for the git tag command (the tag name always needs to be the first word not preceded by a hyphen)
required: false
outputs:
committed:
description: Whether the action has created a commit.
pushed:
description: Whether the action has pushed to the remote.
tagged:
description: Whether the action has created a tag.
runs:
using: node12
main: lib/index.js

File diff suppressed because one or more lines are too long

376
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "add-and-commit",
"version": "5.0.0",
"version": "5.2.0",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -30,9 +30,9 @@
}
},
"@babel/runtime": {
"version": "7.11.2",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.11.2.tgz",
"integrity": "sha512-TeWkU52so0mPtDcaCTxNBI/IHiz0pZgr8VEFqXFtZWpYD08ZB6FaSwVAS8MKRQAP3bYKiVjwysOJgMFY28o6Tw==",
"version": "7.12.1",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz",
"integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==",
"dev": true,
"requires": {
"regenerator-runtime": "^0.13.4"
@@ -75,6 +75,12 @@
"integrity": "sha512-ge4xZ3vSBornVYlDnk7yZ0gK6ChHf/CHB7Gl1I0Jhah8DDnEQqBzgohYG4FX4p81TNirSETOiSyn+y1r9/IR6w==",
"dev": true
},
"@types/parse-json": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
"integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
"dev": true
},
"@types/yamljs": {
"version": "0.2.31",
"resolved": "https://registry.npmjs.org/@types/yamljs/-/yamljs-0.2.31.tgz",
@@ -152,9 +158,9 @@
}
},
"@vercel/ncc": {
"version": "0.23.0",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.23.0.tgz",
"integrity": "sha512-Fcr1qlG9t54X4X9qbo/+jr1+t5Qc6H3TgIRBXmKkF/WDs6YFulAN6ilq2Ehx38RbgIOFxaZnjlAQ50GyexnMpQ==",
"version": "0.25.1",
"resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.25.1.tgz",
"integrity": "sha512-dGecC5+1wLof1MQpey4+6i2KZv4Sfs6WfXkl9KfO32GED4ZPiKxRfvtGPjbjZv0IbqMl6CxtcV1RotXYfd5SSA==",
"dev": true
},
"acorn": {
@@ -182,9 +188,9 @@
}
},
"all-contributors-cli": {
"version": "6.17.2",
"resolved": "https://registry.npmjs.org/all-contributors-cli/-/all-contributors-cli-6.17.2.tgz",
"integrity": "sha512-1ip57waUGz92HWbM5VgiGOjBz25fWXOtCRtCFbjCuuiCuiYbygnvcb9iFYiyNz28RlECg1VPXWrXOJABq+h+MQ==",
"version": "6.19.0",
"resolved": "https://registry.npmjs.org/all-contributors-cli/-/all-contributors-cli-6.19.0.tgz",
"integrity": "sha512-QJN4iLeTeYpTZJES8XFTzQ+itA1qSyBbxLapJLtwrnY+kipyRhCX49fS/s/qftQQym9XLATMZUpUeEeJSox1sw==",
"dev": true,
"requires": {
"@babel/runtime": "^7.7.6",
@@ -200,12 +206,11 @@
},
"dependencies": {
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -241,9 +246,9 @@
"dev": true
},
"supports-color": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
@@ -311,11 +316,11 @@
"dev": true
},
"axios": {
"version": "0.19.2",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz",
"integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==",
"version": "0.21.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.0.tgz",
"integrity": "sha512-fmkJBknJKoZwem3/IKSSLpkdNXZeBu5Q7GA/aRsr2btgrptmSCxi2oFjZHqGdK9DoTil9PIHlPIZw2EcRJXRvw==",
"requires": {
"follow-redirects": "1.5.10"
"follow-redirects": "^1.10.0"
}
},
"balanced-match": {
@@ -369,6 +374,12 @@
"integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==",
"dev": true
},
"ci-info": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz",
"integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==",
"dev": true
},
"cli-cursor": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz",
@@ -421,12 +432,31 @@
"integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
"dev": true
},
"compare-versions": {
"version": "3.6.0",
"resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz",
"integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==",
"dev": true
},
"concat-map": {
"version": "0.0.1",
"resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
"integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
"dev": true
},
"cosmiconfig": {
"version": "7.0.0",
"resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz",
"integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==",
"dev": true,
"requires": {
"@types/parse-json": "^4.0.0",
"import-fresh": "^3.2.1",
"parse-json": "^5.0.0",
"path-type": "^4.0.0",
"yaml": "^1.10.0"
}
},
"cross-spawn": {
"version": "6.0.5",
"resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
@@ -495,6 +525,15 @@
"integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true
},
"error-ex": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
"integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
"dev": true,
"requires": {
"is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
@@ -563,6 +602,24 @@
}
}
},
"eslint-config-prettier": {
"version": "6.15.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-6.15.0.tgz",
"integrity": "sha512-a1+kOYLR8wMGustcgAjdydMsQ2A/2ipRPwRKUmfYaSxc9ZPcrku080Ctl6zrZzZNs/U82MjSv+qKREkoq3bJaw==",
"dev": true,
"requires": {
"get-stdin": "^6.0.0"
}
},
"eslint-plugin-prettier": {
"version": "3.1.4",
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.1.4.tgz",
"integrity": "sha512-jZDa8z76klRqo+TdGDTFJSavwbnWK2ZpqGKNZ+VvweMW516pDUMmQ2koXvxEE4JhzNvTv+radye/bWGBmA6jmg==",
"dev": true,
"requires": {
"prettier-linter-helpers": "^1.0.0"
}
},
"eslint-scope": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.0.0.tgz",
@@ -652,6 +709,12 @@
"integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==",
"dev": true
},
"fast-diff": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz",
"integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==",
"dev": true
},
"fast-json-stable-stringify": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
@@ -692,6 +755,15 @@
"path-exists": "^4.0.0"
}
},
"find-versions": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz",
"integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==",
"dev": true,
"requires": {
"semver-regex": "^2.0.0"
}
},
"flat-cache": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz",
@@ -710,27 +782,9 @@
"dev": true
},
"follow-redirects": {
"version": "1.5.10",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz",
"integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==",
"requires": {
"debug": "=3.1.0"
},
"dependencies": {
"debug": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz",
"integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==",
"requires": {
"ms": "2.0.0"
}
},
"ms": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz",
"integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g="
}
}
"version": "1.13.0",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.13.0.tgz",
"integrity": "sha512-aq6gF1BEKje4a9i9+5jimNFIpq4Q1WiwBToeRK5NvZBd/TRsmW8BsJfOEGkr76TbOyPVD3OVDN910EcUNtRYEA=="
},
"fs.realpath": {
"version": "1.0.0",
@@ -750,6 +804,12 @@
"integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
"dev": true
},
"get-stdin": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-6.0.0.tgz",
"integrity": "sha512-jp4tHawyV7+fkkSKyvjuLZswblUtz+SQKzSWnBbii16BuZksJlU1wuBYXY75r+duh/llF1ur6oNwi+2ZzjKZ7g==",
"dev": true
},
"glob": {
"version": "7.1.6",
"resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
@@ -779,6 +839,75 @@
"integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
"dev": true
},
"husky": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/husky/-/husky-4.3.0.tgz",
"integrity": "sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==",
"dev": true,
"requires": {
"chalk": "^4.0.0",
"ci-info": "^2.0.0",
"compare-versions": "^3.6.0",
"cosmiconfig": "^7.0.0",
"find-versions": "^3.2.0",
"opencollective-postinstall": "^2.0.2",
"pkg-dir": "^4.2.0",
"please-upgrade-node": "^3.2.0",
"slash": "^3.0.0",
"which-pm-runs": "^1.0.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"color-convert": "^2.0.1"
}
},
"chalk": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz",
"integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==",
"dev": true,
"requires": {
"ansi-styles": "^4.1.0",
"supports-color": "^7.1.0"
}
},
"color-convert": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
"integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
"dev": true,
"requires": {
"color-name": "~1.1.4"
}
},
"color-name": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
"integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
"dev": true
},
"has-flag": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
"integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
"dev": true
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
}
}
}
},
"iconv-lite": {
"version": "0.4.24",
"resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
@@ -908,6 +1037,12 @@
}
}
},
"is-arrayish": {
"version": "0.2.1",
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
"integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
"dev": true
},
"is-extglob": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
@@ -958,23 +1093,22 @@
}
},
"json-fixer": {
"version": "1.5.4",
"resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.5.4.tgz",
"integrity": "sha512-ZyMkHr45kMBzl9yeAkeMX8CAPDuL2PL+SN6s+IsPfdknpC03c5A+0190XYV2qTD4kMMZvxMuB6A3R96SEQG+EA==",
"version": "1.6.5",
"resolved": "https://registry.npmjs.org/json-fixer/-/json-fixer-1.6.5.tgz",
"integrity": "sha512-ewOhCI/b7Wx0DtO7ZhDp4SW5sjvp5dBWoeGnjta7mXPrvopvcE6TYGIqo+XREhzr/hKz7Bf3e2C0TSuoGFxAYA==",
"dev": true,
"requires": {
"@babel/runtime": "^7.10.4",
"@babel/runtime": "^7.11.2",
"chalk": "^4.1.0",
"pegjs": "^0.10.0"
},
"dependencies": {
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -1010,9 +1144,9 @@
"dev": true
},
"supports-color": {
"version": "7.1.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.1.0.tgz",
"integrity": "sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g==",
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
"integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
"dev": true,
"requires": {
"has-flag": "^4.0.0"
@@ -1020,6 +1154,12 @@
}
}
},
"json-parse-even-better-errors": {
"version": "2.3.1",
"resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
"integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
"dev": true
},
"json-schema-traverse": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
@@ -1042,6 +1182,12 @@
"type-check": "~0.3.2"
}
},
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
"integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=",
"dev": true
},
"locate-path": {
"version": "5.0.0",
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
@@ -1140,6 +1286,12 @@
"mimic-fn": "^2.1.0"
}
},
"opencollective-postinstall": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz",
"integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==",
"dev": true
},
"optionator": {
"version": "0.8.3",
"resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz",
@@ -1193,6 +1345,18 @@
"callsites": "^3.0.0"
}
},
"parse-json": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz",
"integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==",
"dev": true,
"requires": {
"@babel/code-frame": "^7.0.0",
"error-ex": "^1.3.1",
"json-parse-even-better-errors": "^2.3.0",
"lines-and-columns": "^1.1.6"
}
},
"path-exists": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
@@ -1211,6 +1375,12 @@
"integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
"dev": true
},
"path-type": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
"integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
"dev": true
},
"pegjs": {
"version": "0.10.0",
"resolved": "https://registry.npmjs.org/pegjs/-/pegjs-0.10.0.tgz",
@@ -1223,12 +1393,45 @@
"integrity": "sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==",
"dev": true
},
"pkg-dir": {
"version": "4.2.0",
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
"integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
"dev": true,
"requires": {
"find-up": "^4.0.0"
}
},
"please-upgrade-node": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz",
"integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==",
"dev": true,
"requires": {
"semver-compare": "^1.0.0"
}
},
"prelude-ls": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz",
"integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=",
"dev": true
},
"prettier": {
"version": "2.2.1",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-2.2.1.tgz",
"integrity": "sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q==",
"dev": true
},
"prettier-linter-helpers": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz",
"integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==",
"dev": true,
"requires": {
"fast-diff": "^1.1.2"
}
},
"progress": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
@@ -1320,6 +1523,18 @@
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
},
"semver-compare": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz",
"integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=",
"dev": true
},
"semver-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz",
"integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==",
"dev": true
},
"set-blocking": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
@@ -1348,15 +1563,31 @@
"dev": true
},
"simple-git": {
"version": "2.19.0",
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.19.0.tgz",
"integrity": "sha512-OZKxX9zHeH8JbCo8DMlERE8RsWox7Q9Jmh+lJKw/Zla8HQkiVP5I4LF5ZRfkud9XU27ZNgpccHezg1lbHw6VzQ==",
"version": "2.23.0",
"resolved": "https://registry.npmjs.org/simple-git/-/simple-git-2.23.0.tgz",
"integrity": "sha512-s/gEkxFV2WGTN4kO1uQoA4cE4rq0FRzQPR5Yhgg8JUuA4IhOeccjlKSFhwF3rrpo7797ZvQc7L6hJJNA4szHCw==",
"requires": {
"@kwsites/file-exists": "^1.1.1",
"@kwsites/promise-deferred": "^1.1.1",
"debug": "^4.1.1"
"debug": "^4.3.1"
},
"dependencies": {
"debug": {
"version": "4.3.1",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz",
"integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==",
"requires": {
"ms": "2.1.2"
}
}
}
},
"slash": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
"integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
"dev": true
},
"slice-ansi": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz",
@@ -1511,9 +1742,9 @@
}
},
"ts-node": {
"version": "8.10.2",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.10.2.tgz",
"integrity": "sha512-ISJJGgkIpDdBhWVu3jufsWpK3Rzo7bdiIXJjQc0ynKxVOVcg2oIrf2H2cejminGrptVc6q6/uynAHNCuWGbpVA==",
"version": "9.0.0",
"resolved": "https://registry.npmjs.org/ts-node/-/ts-node-9.0.0.tgz",
"integrity": "sha512-/TqB4SnererCDR/vb4S/QvSZvzQMJN8daAslg7MeaiHvD8rDZsSfXmNeNumyZZzMned72Xoq/isQljYSt8Ynfg==",
"dev": true,
"requires": {
"arg": "^4.1.0",
@@ -1554,9 +1785,9 @@
"dev": true
},
"typescript": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz",
"integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==",
"version": "4.1.2",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.2.tgz",
"integrity": "sha512-thGloWsGH3SOxv1SoY7QojKi0tc+8FnOmiarEGMbd/lar7QOEd3hvlx3Fp5y6FlDUGl9L+pd4n2e+oToGMmhRQ==",
"dev": true
},
"uri-js": {
@@ -1589,6 +1820,12 @@
"integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
"dev": true
},
"which-pm-runs": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz",
"integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=",
"dev": true
},
"word-wrap": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz",
@@ -1607,12 +1844,11 @@
},
"dependencies": {
"ansi-styles": {
"version": "4.2.1",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz",
"integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==",
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
"integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
"dev": true,
"requires": {
"@types/color-name": "^1.1.1",
"color-convert": "^2.0.1"
}
},
@@ -1663,6 +1899,12 @@
"integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==",
"dev": true
},
"yaml": {
"version": "1.10.0",
"resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz",
"integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==",
"dev": true
},
"yamljs": {
"version": "0.3.0",
"resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz",

View File

@@ -1,16 +1,21 @@
{
"name": "add-and-commit",
"version": "5.1.0",
"version": "5.3.0",
"description": "Add & commit files from a path directly from GitHub Actions",
"main": "lib/index.js",
"scripts": {
"build": "npm run inputs && ncc build src/main.ts --minify --out lib",
"build": "ncc build src/main.ts --minify --out lib",
"watch": "ncc build src/main.ts --watch --out lib",
"lint:fix": "eslint --ext .ts --fix src",
"all-contributors-badge": "ts-node scripts/all-contributors-badge",
"changelog": "ts-node scripts/changelog.ts",
"inputs": "ts-node scripts/inputs.ts",
"test": "echo \"Error: no test specified\" && exit 1"
},
"husky": {
"hooks": {
"pre-commit": "npm run build && git add lib"
}
},
"repository": {
"type": "git",
"url": "git+https://github.com/EndBug/add-and-commit.git"
@@ -30,19 +35,23 @@
"homepage": "https://github.com/EndBug/add-and-commit#readme",
"dependencies": {
"@actions/core": "^1.2.6",
"axios": "^0.19.2",
"simple-git": "^2.19.0"
"axios": "^0.21.0",
"simple-git": "2.23.0"
},
"devDependencies": {
"@types/node": "^12.12.54",
"@types/yamljs": "^0.2.31",
"@typescript-eslint/eslint-plugin": "^2.34.0",
"@typescript-eslint/parser": "^2.34.0",
"@vercel/ncc": "^0.23.0",
"all-contributors-cli": "^6.17.2",
"@vercel/ncc": "^0.25.1",
"all-contributors-cli": "^6.19.0",
"eslint": "^6.8.0",
"ts-node": "^8.10.2",
"typescript": "^4.0.2",
"eslint-config-prettier": "^6.15.0",
"eslint-plugin-prettier": "^3.1.4",
"husky": "^4.3.0",
"prettier": "^2.2.1",
"ts-node": "^9.0.0",
"typescript": "^4.1.2",
"yamljs": "^0.3.0"
}
}

View File

@@ -6,15 +6,19 @@ function path(...segments: string[]) {
}
const README = fs.readFileSync(path('README.md'), { encoding: 'utf8' }),
{ contributors } = JSON.parse(fs.readFileSync(path('.all-contributorsrc'), { encoding: 'utf8' }))
{ contributors } = JSON.parse(
fs.readFileSync(path('.all-contributorsrc'), { encoding: 'utf8' })
)
if (!(contributors instanceof Array)) throw new Error('Invalid config file')
const updatedREADME = README
.split('\n')
.map(line =>
line.startsWith('[![All Contributors](https://img.shields.io/badge/all_contributors-')
const updatedREADME = README.split('\n')
.map((line) =>
line.startsWith(
'[![All Contributors](https://img.shields.io/badge/all_contributors-'
)
? `[![All Contributors](https://img.shields.io/badge/all_contributors-${contributors.length}-orange.svg?style=flat)](#contributors-)`
: line
).join('\n')
)
.join('\n')
fs.writeFileSync(path('README.md'), updatedREADME)

View File

@@ -2,7 +2,7 @@ import fs from 'fs'
import path from 'path'
const currentVersion = require('../package.json').version
if (!currentVersion) throw new Error('Cant\'t detect library version.')
if (!currentVersion) throw new Error("Cant't detect library version.")
const changelogPath = path.resolve(__dirname, '../CHANGELOG.md')
const changelog = fs.readFileSync(changelogPath, { encoding: 'utf-8' })
@@ -12,7 +12,8 @@ let futureChangelog = ''
// Add version section
let arr = changelog.split('## [Unreleased]')
arr[1] = `
arr[1] =
`
## [${currentVersion}] - ${new Date().toISOString().slice(0, 10)}
### Removed:
@@ -28,13 +29,15 @@ futureChangelog = arr.join('## [Unreleased]')
// Update footer
arr = futureChangelog
.split('\n')
.map(line => line.startsWith('[Unreleased]')
? `[Unreleased]: https://github.com/EndBug/add-and-commit/compare/v${currentVersion}...HEAD`
: line)
.map((line) =>
line.startsWith('[Unreleased]')
? `[Unreleased]: https://github.com/EndBug/add-and-commit/compare/v${currentVersion}...HEAD`
: line
)
// eslint-disable-next-line no-useless-escape
const lastVersion = ([...arr].reverse()[1]?.match(/\[([^\][]*)]/) || [])[0].replace(/[\[\]']+/g, '')
if (!lastVersion) throw new Error('Can\'t find last version in changelog.')
const lastVersion = ([...arr].reverse()[1]?.match(/\[([^\][]*)]/) ||
[])[0].replace(/[\[\]']+/g, '') // eslint-disable-line no-useless-escape
if (!lastVersion) throw new Error("Can't find last version in changelog.")
const lastLine = `[${currentVersion}]: https://github.com/EndBug/add-and-commit/compare/v${lastVersion}...v${currentVersion}`
if (arr[arr.length - 1] === '') arr[arr.length - 1] = lastLine

View File

@@ -1,11 +0,0 @@
import YAML from 'yamljs'
import fs from 'fs'
const actionManifest = YAML.load('action.yml'),
inputs = Object.keys(actionManifest?.inputs || {})
fs.writeFileSync('src/inputs.ts', `
// WARNING: this file is auto-generated by scripts/inputs.ts (npm run inputs), any manual edit will be overwritten.
export type Input = ${inputs.map(s => `'${s}'`).join(' | ')}
`.trimLeft())

View File

@@ -1,3 +0,0 @@
// WARNING: this file is auto-generated by scripts/inputs.ts (npm run inputs), any manual edit will be overwritten.
export type Input = 'add' | 'author_name' | 'author_email' | 'branch' | 'cwd' | 'message' | 'remove' | 'signoff' | 'tag'

View File

@@ -1,15 +1,20 @@
import { info, setFailed, getInput as getInputCore, warning, debug, startGroup, endGroup, error } from '@actions/core'
import {
info,
setFailed,
warning,
debug,
startGroup,
endGroup
} from '@actions/core'
import axios from 'axios'
import path from 'path'
import simpleGit, { Response } from 'simple-git'
import { Input } from './inputs'
import { getInput, Input, log, outputs, parseBool, setOutput } from './util'
const baseDir = path.join(process.cwd(), getInput('cwd') || '')
const git = simpleGit({ baseDir })
console.log(`Running in ${baseDir}`);
(async () => {
console.log(`Running in ${baseDir}`)
;(async () => {
await checkInputs().catch(setFailed)
startGroup('Internal logs')
@@ -33,7 +38,10 @@ console.log(`Running in ${baseDir}`);
await git
.addConfig('user.email', getInput('author_email'), undefined, log)
.addConfig('user.name', getInput('author_name'), undefined, log)
debug('> Current git config\n' + JSON.stringify((await git.listConfig()).all, null, 2))
debug(
'> Current git config\n' +
JSON.stringify((await git.listConfig()).all, null, 2)
)
await git.fetch(['--tags', '--force'], log)
@@ -43,42 +51,88 @@ console.log(`Running in ${baseDir}`);
.catch(() => git.checkoutLocalBranch(getInput('branch'), log))
info('> Pulling from remote...')
await git
.fetch(undefined, log)
.pull(undefined, undefined, undefined, log)
await git.fetch(undefined, log).pull(
undefined,
undefined,
{
[getInput('pull_strategy')]: null
},
log
)
info('> Re-staging files...')
if (getInput('add')) await add({ ignoreErrors: true })
if (getInput('remove')) await remove({ ignoreErrors: true })
info('> Creating commit...')
await git.commit(getInput('message'), undefined, {
'--author': `"${getInput('author_name')} <${getInput('author_email')}>"`,
...(getInput('signoff') ? {
'--signoff': null
} : {})
}, log)
await git.commit(
getInput('message'),
undefined,
{
'--author': `"${getInput('author_name')} <${getInput(
'author_email'
)}>"`,
...(getInput('signoff')
? {
'--signoff': null
}
: {})
},
(err, data?) => {
if (data) setOutput('committed', 'true')
return log(err, data)
}
)
if (getInput('tag')) {
info('> Tagging commit...')
await git.tag(getInput('tag').split(' '), log)
await git
.tag(getInput('tag').split(' '), (err, data?) => {
if (data) setOutput('tagged', 'true')
return log(err, data)
})
.then((data) => {
setOutput('tagged', 'true')
return log(null, data)
})
.catch((err) => setFailed(err))
} else info('> No tag info provided.')
info('> Pushing commit to repo...')
await git.push('origin', getInput('branch'), { '--set-upstream': null }, log)
if (getInput('push')) {
info('> Pushing commit to repo...')
await git.push(
'origin',
getInput('branch'),
{ '--set-upstream': null },
(err, data?) => {
if (data) setOutput('pushed', 'true')
return log(err, data)
}
)
if (getInput('tag')) {
info('> Pushing tags to repo...')
await git.pushTags('origin', (e, d?) => log(undefined, e || d)).catch(() => {
info('> Tag push failed: deleting remote tag and re-pushing...')
return git.push(undefined, undefined, {
'--delete': null,
'origin': null,
[getInput('tag').split(' ').filter(w => !w.startsWith('-'))[0]]: null
}, log)
.pushTags('origin', log)
})
} else info('> No tags to push.')
if (getInput('tag')) {
info('> Pushing tags to repo...')
await git
.pushTags('origin', (e, d?) => log(undefined, e || d))
.catch(() => {
info('> Tag push failed: deleting remote tag and re-pushing...')
return git
.push(
undefined,
undefined,
{
'--delete': null,
origin: null,
[getInput('tag')
.split(' ')
.filter((w) => !w.startsWith('-'))[0]]: null
},
log
)
.pushTags('origin', log)
})
} else info('> No tags to push.')
} else info('> Not pushing anything.')
endGroup()
info('> Task completed.')
@@ -86,14 +140,17 @@ console.log(`Running in ${baseDir}`);
endGroup()
info('> Working tree clean. Nothing to commit.')
}
})().catch(e => {
endGroup()
setFailed(e)
})
})()
.then(logOutputs)
.catch((e) => {
endGroup()
logOutputs()
setFailed(e)
})
async function checkInputs() {
function setInput(input: Input, value: string | undefined) {
if (value) return process.env[`INPUT_${input.toUpperCase()}`] = value
if (value) return (process.env[`INPUT_${input.toUpperCase()}`] = value)
else return delete process.env[`INPUT_${input.toUpperCase()}`]
}
function setDefault(input: Input, value: string) {
@@ -107,34 +164,45 @@ async function checkInputs() {
isPR = process.env.GITHUB_EVENT_NAME?.includes('pull_request'),
sha = (event?.pull_request?.head?.sha || process.env.GITHUB_SHA) as string,
defaultBranch = isPR
? event?.pull_request?.head?.ref as string
? (event?.pull_request?.head?.ref as string)
: process.env.GITHUB_REF?.substring(11)
// #region GITHUB_TOKEN
if (!token) warning('The GITHUB_TOKEN env variable is missing: the action may not work as expected.')
if (!token)
warning(
'The GITHUB_TOKEN env variable is missing: the action may not work as expected.'
)
// #endregion
// #region add, remove
if (!getInput('add') && !getInput('remove'))
throw new Error('Both \'add\' and \'remove\' are empty, the action has nothing to do.')
throw new Error(
"Both 'add' and 'remove' are empty, the action has nothing to do."
)
// #endregion
// #region author_name, author_email
let author = event?.head_commit?.author
if (sha && !author) {
info('> Unable to get commit from workflow event: trying with the GitHub API...')
info(
'> Unable to get commit from workflow event: trying with the GitHub API...'
)
// https://docs.github.com/en/rest/reference/repos#get-a-commit--code-samples
const url = `https://api.github.com/repos/${process.env.GITHUB_REPOSITORY}/commits/${sha}`,
headers = token ? {
Authorization: `Bearer ${token}`
} : undefined,
commit = (await axios.get(url, { headers }).catch(err => {
startGroup('Request error:')
info(`> Request URL: ${url}\b${err}`)
endGroup()
return undefined
}))?.data
headers = token
? {
Authorization: `Bearer ${token}`
}
: undefined,
commit = (
await axios.get(url, { headers }).catch((err) => {
startGroup('Request error:')
info(`> Request URL: ${url}\b${err}`)
endGroup()
return undefined
})
)?.data
author = commit?.commit?.author
}
@@ -148,22 +216,29 @@ async function checkInputs() {
const reason = !eventPath
? 'event path'
: isPR
? sha
? 'fetch commit'
: 'find commit sha'
: !event?.head_commit
? 'find commit'
: 'find commit author'
? sha
? 'fetch commit'
: 'find commit sha'
: !event?.head_commit
? 'find commit'
: 'find commit author'
warning(`Unable to fetch author info: couldn't ${reason}.`)
setDefault('author_name', 'Add & Commit Action')
setDefault('author_email', 'actions@github.com')
}
info(`> Using '${getInput('author_name')} <${getInput('author_email')}>' as author.`)
info(
`> Using '${getInput('author_name')} <${getInput(
'author_email'
)}>' as author.`
)
// #endregion
// #region message
setDefault('message', `Commit from GitHub Actions (${process.env.GITHUB_WORKFLOW})`)
setDefault(
'message',
`Commit from GitHub Actions (${process.env.GITHUB_WORKFLOW})`
)
info(`> Using "${getInput('message')}" as commit message.`)
// #endregion
@@ -173,42 +248,92 @@ async function checkInputs() {
// #endregion
// #region signoff
if (getInput('signoff')) try {
const parsed = JSON.parse(getInput('signoff'))
if (typeof parsed == 'boolean' && !parsed)
setInput('signoff', undefined)
debug(`Current signoff option: ${getInput('signoff')} (${typeof getInput('signoff')})`)
} catch {
throw new Error(`"${getInput('signoff')}" is not a valid value for the 'signoff' input: only "true" and "false" are allowed.`)
if (getInput('signoff')) {
const parsed = parseBool(getInput('signoff'))
if (parsed === undefined)
throw new Error(
`"${getInput(
'signoff'
)}" is not a valid value for the 'signoff' input: only "true" and "false" are allowed.`
)
if (!parsed) setInput('signoff', undefined)
debug(
`Current signoff option: ${getInput('signoff')} (${typeof getInput(
'signoff'
)})`
)
}
// #endregion
// #region push
setDefault('push', 'true')
if (getInput('push')) {
// It's just to scope the parsed constant
const parsed = parseBool(getInput('push'))
if (parsed === undefined)
throw new Error(
`"${getInput(
'push'
)}" is not a valid value for the 'push' input: only "true" and "false" are allowed.`
)
if (!parsed) setInput('push', undefined)
debug(
`Current push option: ${getInput('push')} (${typeof getInput('push')})`
)
}
// #endregion
}
function getInput(name: Input) {
return getInputCore(name)
}
function log(err: any | Error, data?: any) {
if (data) console.log(data)
if (err) error(err)
}
function add({ logWarning = true, ignoreErrors = false } = {}): Promise<void | Response<void>> | void {
function add({
logWarning = true,
ignoreErrors = false
} = {}): Promise<void | Response<void>> | void {
if (getInput('add'))
return git.add(getInput('add').split(' '), (e: any, d?: any) => log(ignoreErrors ? null : e, d)).catch((e: Error) => {
if (ignoreErrors) return
if (e.message.includes('fatal: pathspec') && e.message.includes('did not match any files'))
logWarning && warning('Add command did not match any file.')
else throw e
})
return git
.add(getInput('add').split(' '), (e: any, d?: any) =>
log(ignoreErrors ? null : e, d)
)
.catch((e: Error) => {
if (ignoreErrors) return
if (
e.message.includes('fatal: pathspec') &&
e.message.includes('did not match any files')
)
logWarning && warning('Add command did not match any file.')
else throw e
})
}
function remove({ logWarning = true, ignoreErrors = false } = {}): Promise<void | Response<void>> | void {
function remove({
logWarning = true,
ignoreErrors = false
} = {}): Promise<void | Response<void>> | void {
if (getInput('remove'))
return git.rm(getInput('remove').split(' '), (e: any, d?: any) => log(ignoreErrors ? null : e, d)).catch((e: Error) => {
if (ignoreErrors) return
if (e.message.includes('fatal: pathspec') && e.message.includes('did not match any files'))
logWarning && warning('Remove command did not match any file.')
else throw e
})
return git
.rm(getInput('remove').split(' '), (e: any, d?: any) =>
log(ignoreErrors ? null : e, d)
)
.catch((e: Error) => {
if (ignoreErrors) return
if (
e.message.includes('fatal: pathspec') &&
e.message.includes('did not match any files')
)
logWarning && warning('Remove command did not match any file.')
else throw e
})
}
function logOutputs() {
startGroup('Outputs')
for (const key in outputs) {
info(`${key}: ${outputs[key]}`)
}
endGroup()
}

44
src/util.ts Normal file
View File

@@ -0,0 +1,44 @@
import * as core from '@actions/core'
export type Input =
| 'add'
| 'author_name'
| 'author_email'
| 'branch'
| 'cwd'
| 'message'
| 'pull_strategy'
| 'push'
| 'remove'
| 'signoff'
| 'tag'
export const outputs = {
committed: 'false',
pushed: 'false',
tagged: 'false'
}
export type Output = keyof typeof outputs
export function getInput(name: Input) {
return core.getInput(name)
}
export function log(err: any | Error, data?: any) {
if (data) console.log(data)
if (err) core.error(err)
}
export function parseBool(value: any) {
try {
const parsed = JSON.parse(value)
if (typeof parsed == 'boolean') return parsed
} catch {}
}
export function setOutput(name: Output, value: 'true' | 'false') {
core.debug(`Setting output: ${name}=${value}`)
outputs[name] = value
return core.setOutput(name, value)
}
for (const key in outputs) setOutput(key as Output, outputs[key])