Compare commits

...

32 Commits

Author SHA1 Message Date
Federico Grandi
d1cfc165c7 [auto] Update compiled version 2020-04-19 17:48:30 +00:00
Federico Grandi
5f12f937cb Fix error hadling
Ref #25
2020-04-19 19:47:38 +02:00
Federico Grandi
2d77fa2c79 Bump version 2020-03-20 16:49:50 +01:00
Federico Grandi
f6b13bc7e9 [auto] Update compiled version 2020-03-20 15:37:19 +00:00
Federico Grandi
116c918fd3 Warn only if one of the params is missing 2020-03-20 16:36:34 +01:00
Federico Grandi
fbbcae9aa5 [auto] Update compiled version 2020-03-20 14:12:28 +00:00
Federico Grandi
7bd2b1ca10 Fix: allow action to work without head_commit
Ref: Issue #22
2020-03-20 15:11:47 +01:00
Federico Grandi
61d14d1bee Merge pull request #24 from EndBug/ncc
Use @zeit/ncc for builds
2020-03-20 14:54:36 +01:00
Federico Grandi
6a75638ec3 Update lib file name 2020-03-20 14:51:31 +01:00
Federico Grandi
ff38b6c4a6 [auto] Update compiled version 2020-03-20 13:48:59 +00:00
Federico Grandi
e67ce7f439 Use @zeit/ncc for builds 2020-03-20 14:48:20 +01:00
Federico Grandi
a83118880c Use child_process instead of shelljs 2020-03-20 14:47:36 +01:00
Federico Grandi
a28158a63f Fix CVE-2020-7598 2020-03-20 13:03:43 +01:00
dependabot[bot]
30030e85c0 Bump acorn from 7.1.0 to 7.1.1 (#21)
Bumps [acorn](https://github.com/acornjs/acorn) from 7.1.0 to 7.1.1.
- [Release notes](https://github.com/acornjs/acorn/releases)
- [Commits](https://github.com/acornjs/acorn/compare/7.1.0...7.1.1)

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

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-03-14 15:21:39 +01:00
Federico Grandi
79fa1f9f98 Use add-and-commit@v4.0.0 2020-03-03 19:42:01 +01:00
Federico Grandi
06fd39b8b7 Fix typo 2020-03-03 19:31:46 +01:00
Federico Grandi
f278ec6d47 Trigger workflow run 2020-03-03 19:30:13 +01:00
Federico Grandi
5a3f4c1c24 Update build workflow 2020-03-03 19:29:21 +01:00
Federico Grandi
602bf4ea71 Final adjustments for v4 2020-03-03 19:28:06 +01:00
Federico Grandi
5148cf0f38 Use set -u instead of -eu 2020-03-03 19:04:22 +01:00
Federico Grandi
12febc42d8 Use git add 2020-03-03 18:36:41 +01:00
Federico Grandi
de8a121ebd Rm (#20)
* Add remove option

* [auto] Update compiled version

* Add fixes

* [auto] Update compiled version

* Update docs
2020-02-21 16:48:19 +01:00
Federico Grandi
a2b49385e8 [auto] Update compiled version 2020-02-11 20:31:49 +00:00
Federico Grandi
ea7cddff4f Better usage docs 2020-02-03 17:12:00 +01:00
Federico Grandi
9acdb7d7f4 Small refactor 2020-02-03 16:54:41 +01:00
Federico Grandi
6d08b4f153 Add setDefault function 2020-02-03 16:53:01 +01:00
Federico Grandi
925751a406 Update versioning.yml 2020-01-24 10:52:35 +01:00
Federico Grandi
d3ccc660f4 Fix typos 2020-01-22 21:31:06 +01:00
Federico Grandi
4d5fbad9c9 Add pull command 2020-01-22 21:18:55 +01:00
Federico Grandi
aa1a8cef82 Add cwd option (#15)
* Add cwd option

* Commit dist files

* Debugging

* Remove modules

* Update docs

* Remove debugging command

* Minor formatting change
2019-12-29 20:19:06 +01:00
Federico Grandi
df80e1746f Update build.yml 2019-12-24 10:52:12 +01:00
Federico Grandi
e6702dc457 Update build.yml 2019-12-24 10:51:16 +01:00
11 changed files with 529 additions and 1106 deletions

View File

@@ -3,6 +3,9 @@ on:
push:
branches-ignore:
- dist
paths:
- src/**
- .github/workflows/build.yml
jobs:
build:
@@ -10,12 +13,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@master
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@master
uses: actions/setup-node@v1
with:
node-version: 12.0.0
node-version: 12.x
- name: Install dependencies
run: npm install
@@ -24,11 +27,10 @@ jobs:
run: npm run build
- name: Commit changes
uses: EndBug/add-and-commit@v2.3.0
uses: EndBug/add-and-commit@v4.0.0
with:
force: true
message: "[auto] Update compiled version"
path: lib
pattern: "*.js"
add: lib
force: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -2,7 +2,7 @@ name: Keep the versions up-to-date
on:
release:
types: [published]
types: [published, edited]
jobs:
actions-tagger:

110
README.md
View File

@@ -10,55 +10,59 @@ This action lets you choose the path that you want to use when adding & committi
Add a step like this to your workflow:
```yaml
- name: Commit changes # This is the step name that will be displayed in your runs
uses: EndBug/add-and-commit@v2 # You can change this to use a specific version
with: # See more info about inputs below
- uses: EndBug/add-and-commit@v4 # You can change this to use a specific version
with:
# The arguments for the git add command (see the paragraph below for more info)
# Default: '.'
add: 'src'
# The name of the user that will be displayed as the author of the commit
# Default: author of the commit that triggered the run
author_name: Your Name
# The The email of the user that will be displayed as the author of the commit
# Default: author of the commit that triggered the run
author_email: mail@example.com
message: "Your commit message"
path: "."
pattern: "*.js"
force: false
# The local path to the directory where your repository is located. You should use actions/checkout first to set it up
# Default: '.'
cwd: './path/to/the/repo'
# Whether to use the --force option on git add, in order to bypass eventual gitignores
# Default: false
force: true
# The message for the commit
# Default: 'Commit from GitHub Actions'
message: 'Your commit message'
# The arguments for the git rm command (see the paragraph below for more info)
# Default: ''
remove: "./dir/old_file.js"
env:
# This is necessary in order to push a commit to the repo
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Leave this line unchanged
```
### Inputs:
- `author_name` : the name of the user that will be displayed as the author of the commit, defaults to the author of the commit that triggered the run
- `author_email` : the email of the user that will be displayed as the author of the commit, defaults to the author of the commit that triggered the run
- `message` : the message for the commit
- `path` : the path(s) to stage files from
- `pattern` : the pattern that matches file names
- `force` : whether to use the force option on git add, in order to bypass eventual gitignores
### Environment variables:
The only `env` variable required is the token for the action to run: GitHub generates one automatically, but you need to pass it through `env` to make it available to actions. You can find more about `GITHUB_TOKEN` [here](https://help.github.com/en/articles/virtual-environments-for-github-actions#github_token-secret).
With that said, you can just copy the example line and don't worry about it. If you do want to use a different token you can pass that in, but I wouldn't see any possible advantage in doing so.
### Adding files:
The action adds files using a regular `git add` command, so you can put every kind of argument in the `add` option. For example, if you don't want it to use a recursive behavior: `$(find . -maxdepth 1 -name *.js)`.
The script will not stop if one the git commands fails. E.g.: if your command shows a "fatal: pathspec 'yourFile' did not match any files" error the action will go on.
### Deleting files:
This action only **adds** files so in order to commit a file deletion you need to stage that separately: for that, you can run `git rm` in a previous step. Here's a quick example:
You can delete files with the `remove` option: that runs a `git rm` command that will stage the files in the given path for removal.
The script will not stop if one the git commands fails. E.g.: if your command shows a "fatal: pathspec 'yourFile' did not match any files" error the action will go on.
```yaml
- run: git rm delete_me.txt
### Examples:
- uses: EndBug/add-and-commit@v2
with:
author_name: Your Name
author_email: mail@example.com
message: "Remove file"
path: "."
pattern: "*.js" # The path is not important, the file will get removed anyway: that means you can still use the action as usual
force: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
### Example:
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:
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:
```yaml
name: Lint source code
@@ -70,7 +74,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout repo
uses: actions/checkout@v1
uses: actions/checkout@v2
- name: Set up Node.js
uses: actions/setup-node@v1
@@ -84,17 +88,47 @@ jobs:
run: eslint "src/**" --fix
- name: Commit changes
uses: EndBug/add-and-commit@v2
uses: EndBug/add-and-commit@v4
with:
author_name: Your Name
author_email: mail@example.com
message: "Your commit message"
path: "."
pattern: "*.js"
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.
```yaml
name: Use a different repository directory
on: push
jobs:
run:
name: Add a text file
runs-on: ubuntu-latest
steps:
# If you need to, you can checkout your repo to a different location
- uses: actions/checkout@v2
with:
path: "./pathToRepo/"
# You can make whatever type of change to the repo...
- run: echo "123" > ./pathToRepo/file.txt
# ...and then use the action as you would normally do, but providing the path to the repo
- uses: EndBug/add-and-commit@v4
with:
message: "Add the very useful text file"
add: "*.txt"
cwd: "./pathToRepo/"
force: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
## License
This action is distributed under the MIT license, check the [license](LICENSE) for more info.

View File

@@ -2,12 +2,20 @@ name: Add & Commit
description: Add & commit files from a path directly from GitHub Actions
inputs:
add:
description: Arguments for the git add command
required: false
default: "."
author_name:
description: The name of the user that will be displayed as the author of the commit
required: false
author_email:
description: The email of the user that will be displayed as the author of the commit
required: false
cwd:
description: The directory where your repository is located. You should use actions/checkout first to set it up
required: false
default: "."
force:
description: Whether to use the force option on git add, in order to bypass eventual gitignores
required: false
@@ -16,18 +24,14 @@ inputs:
description: The message for the commit
required: false
default: Commit from GitHub Actions
path:
description: The path to stage files from
remove:
description: Arguments for the git rm command
required: false
default: "."
pattern:
description: The pattern that mathces file names
required: false
default: "*.*"
default: ""
runs:
using: node12
main: lib/main.js
main: lib/index.js
branding:
icon: git-commit

73
lib/entrypoint.sh Executable file
View File

@@ -0,0 +1,73 @@
#!/bin/bash
set -u
cd $INPUT_CWD
echo "Running in $PWD."
# Set up .netrc file with GitHub credentials
git_setup() {
cat <<-EOF >$HOME/.netrc
machine github.com
login $GITHUB_ACTOR
password $GITHUB_TOKEN
machine api.github.com
login $GITHUB_ACTOR
password $GITHUB_TOKEN
EOF
chmod 600 $HOME/.netrc
git config --global user.email "$INPUT_AUTHOR_EMAIL"
git config --global user.name "$INPUT_AUTHOR_NAME"
}
add() {
if $INPUT_FORCE; then f=-f; else f=; fi
git add $INPUT_ADD $f
}
remove() {
if [ -n "$INPUT_REMOVE" ]; then git rm $INPUT_REMOVE; fi
}
# This is needed to make the check work for untracked files
echo "Staging files..."
add
remove
echo "Checking for uncommitted changes in the git working tree..."
# This section only runs if there have been file changes
if ! git diff --cached --exit-code; then
git_setup
git fetch
# Verify if the branch needs to be created
if ! git rev-parse --verify --quiet "${GITHUB_REF:11}"; then
echo "Creating branch..."
git branch "${GITHUB_REF:11}"
fi
# Switch to branch from current workflow run
echo "Switching branch..."
git checkout "${GITHUB_REF:11}"
echo "Pulling from remote..."
git fetch && git pull
echo "Resetting files..."
git reset
echo "Adding files..."
add
echo "Removing files..."
remove
echo "Creating commit..."
git commit -m "$INPUT_MESSAGE" --author="$INPUT_AUTHOR_NAME <$INPUT_AUTHOR_EMAIL>"
echo "Pushing to repo..."
git push --set-upstream origin "${GITHUB_REF:11}"
else
echo "Working tree clean. Nothing to commit."
fi

1
lib/index.js Normal file
View File

@@ -0,0 +1 @@
module.exports=function(e,t){"use strict";var r={};function __webpack_require__(t){if(r[t]){return r[t].exports}var n=r[t]={i:t,l:false,exports:{}};e[t].call(n.exports,n,n.exports,__webpack_require__);n.l=true;return n.exports}__webpack_require__.ab=__dirname+"/";function startup(){return __webpack_require__(131)}return startup()}({87:function(e){e.exports=require("os")},129:function(e){e.exports=require("child_process")},131:function(e,t,r){"use strict";Object.defineProperty(t,"__esModule",{value:true});const n=r(470);const o=r(622);const s=r(129);try{checkInputs();s.execFileSync(r.ab+"entrypoint.sh")}catch(e){console.error(e);n.setFailed(e instanceof Error?e.message:e)}function checkInputs(){var e,t,r;const o=process.env.GITHUB_EVENT_PATH;const s=o&&((t=(e=require(o))===null||e===void 0?void 0:e.head_commit)===null||t===void 0?void 0:t.author);if(s){setDefault("author_name",s.name);setDefault("author_email",s.email)}else{if(!n.getInput("author_name")||!n.getInput("author_email"))n.warning(`Unable to fetch author info: couldn't find ${!o?"event path":!((r=require(o))===null||r===void 0?void 0:r.head_commit)?"commit":"commit author"}.`);setDefault("author_name","Add & Commit Action");setDefault("author_email","actions@github.com")}n.info(`Using '${n.getInput("author_name")} <${n.getInput("author_email")}>' as author.`)}function setDefault(e,t){const r="INPUT_"+e.toUpperCase();if(!process.env[r])process.env[r]=t}},431:function(e,t,r){"use strict";var n=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(Object.hasOwnProperty.call(e,r))t[r]=e[r];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const o=n(r(87));function issueCommand(e,t,r){const n=new Command(e,t,r);process.stdout.write(n.toString()+o.EOL)}t.issueCommand=issueCommand;function issue(e,t=""){issueCommand(e,{},t)}t.issue=issue;const s="::";class Command{constructor(e,t,r){if(!e){e="missing.command"}this.command=e;this.properties=t;this.message=r}toString(){let e=s+this.command;if(this.properties&&Object.keys(this.properties).length>0){e+=" ";let t=true;for(const r in this.properties){if(this.properties.hasOwnProperty(r)){const n=this.properties[r];if(n){if(t){t=false}else{e+=","}e+=`${r}=${escapeProperty(n)}`}}}}e+=`${s}${escapeData(this.message)}`;return e}}function escapeData(e){return(e||"").replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A")}function escapeProperty(e){return(e||"").replace(/%/g,"%25").replace(/\r/g,"%0D").replace(/\n/g,"%0A").replace(/:/g,"%3A").replace(/,/g,"%2C")}},470:function(e,t,r){"use strict";var n=this&&this.__awaiter||function(e,t,r,n){function adopt(e){return e instanceof r?e:new r(function(t){t(e)})}return new(r||(r=Promise))(function(r,o){function fulfilled(e){try{step(n.next(e))}catch(e){o(e)}}function rejected(e){try{step(n["throw"](e))}catch(e){o(e)}}function step(e){e.done?r(e.value):adopt(e.value).then(fulfilled,rejected)}step((n=n.apply(e,t||[])).next())})};var o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r in e)if(Object.hasOwnProperty.call(e,r))t[r]=e[r];t["default"]=e;return t};Object.defineProperty(t,"__esModule",{value:true});const s=r(431);const i=o(r(87));const u=o(r(622));var a;(function(e){e[e["Success"]=0]="Success";e[e["Failure"]=1]="Failure"})(a=t.ExitCode||(t.ExitCode={}));function exportVariable(e,t){process.env[e]=t;s.issueCommand("set-env",{name:e},t)}t.exportVariable=exportVariable;function setSecret(e){s.issueCommand("add-mask",{},e)}t.setSecret=setSecret;function addPath(e){s.issueCommand("add-path",{},e);process.env["PATH"]=`${e}${u.delimiter}${process.env["PATH"]}`}t.addPath=addPath;function getInput(e,t){const r=process.env[`INPUT_${e.replace(/ /g,"_").toUpperCase()}`]||"";if(t&&t.required&&!r){throw new Error(`Input required and not supplied: ${e}`)}return r.trim()}t.getInput=getInput;function setOutput(e,t){s.issueCommand("set-output",{name:e},t)}t.setOutput=setOutput;function setFailed(e){process.exitCode=a.Failure;error(e)}t.setFailed=setFailed;function isDebug(){return process.env["RUNNER_DEBUG"]==="1"}t.isDebug=isDebug;function debug(e){s.issueCommand("debug",{},e)}t.debug=debug;function error(e){s.issue("error",e)}t.error=error;function warning(e){s.issue("warning",e)}t.warning=warning;function info(e){process.stdout.write(e+i.EOL)}t.info=info;function startGroup(e){s.issue("group",e)}t.startGroup=startGroup;function endGroup(){s.issue("endgroup")}t.endGroup=endGroup;function group(e,t){return n(this,void 0,void 0,function*(){startGroup(e);let r;try{r=yield t()}finally{endGroup()}return r})}t.group=group;function saveState(e,t){s.issueCommand("save-state",{name:e},t)}t.saveState=saveState;function getState(e){return process.env[`STATE_${e}`]||""}t.getState=getState},622:function(e){e.exports=require("path")}});

View File

@@ -1 +0,0 @@
"use strict";var __importStar=this&&this.__importStar||function(a){if(a&&a.__esModule)return a;var b={};if(null!=a)for(var c in a)Object.hasOwnProperty.call(a,c)&&(b[c]=a[c]);return b["default"]=a,b};Object.defineProperty(exports,"__esModule",{value:!0});const core=__importStar(require("@actions/core")),shell=__importStar(require("shelljs")),path=__importStar(require("path"));try{checkInputs(),shell.exec(path.join(__dirname,"../src/entrypoint.sh"))}catch(a){core.setFailed(a)}function checkInputs(){const a=process.env.GITHUB_EVENT_PATH;if(a){const{author:b}=require(a).head_commit;process.env.INPUT_AUTHOR_NAME||(process.env.INPUT_AUTHOR_NAME=b.name),process.env.INPUT_AUTHOR_EMAIL||(process.env.INPUT_AUTHOR_EMAIL=b.email)}else core.warning("No event path available, unable to fetch author info."),process.env.INPUT_AUTHOR_NAME||(process.env.INPUT_AUTHOR_NAME="Add & Commit Action"),process.env.INPUT_AUTHOR_EMAIL||(process.env.INPUT_AUTHOR_EMAIL="actions@github.com");core.info(`Using '${process.env.INPUT_AUTHOR_NAME} <${process.env.INPUT_AUTHOR_EMAIL}>' as author.`)}

1323
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,11 @@
{
"name": "add-and-commit",
"version": "2.3.0",
"version": "4.0.1",
"description": "Add & commit files from a path directly from GitHub Actions",
"main": "lib/main.js",
"main": "lib/index.js",
"scripts": {
"build": "npm run compile && npm run minify && rm build/*.js",
"compile": "tsc",
"minify": "minify build -d lib",
"dist": "echo \"Preparing for distribution...\" && npm i --only=prod && git add -f node_modules && git commit -m \"Commit dist files\"",
"build": "npm i && ncc build src/main.ts --minify --out lib",
"watch": "ncc build src/main.ts --watch --out lib",
"test": "echo \"Error: no test specified\" && exit 1"
},
"repository": {
@@ -28,15 +26,14 @@
},
"homepage": "https://github.com/EndBug/add-and-commit#readme",
"dependencies": {
"@actions/core": "^1.1.3",
"shelljs": "^0.8.3"
"@actions/core": "^1.1.3"
},
"devDependencies": {
"@types/node": "^12.7.12",
"@types/shelljs": "^0.8.6",
"@typescript-eslint/eslint-plugin": "^2.12.0",
"@typescript-eslint/parser": "^2.12.0",
"babel-minify": "^0.5.1",
"@zeit/ncc": "^0.21.1",
"eslint": "^6.8.0",
"typescript": "^3.6.4"
}

View File

@@ -1,9 +1,12 @@
#!/bin/bash
set -eu
set -u
cd $INPUT_CWD
echo "Running in $PWD."
# Set up .netrc file with GitHub credentials
git_setup() {
cat <<- EOF > $HOME/.netrc
cat <<-EOF >$HOME/.netrc
machine github.com
login $GITHUB_ACTOR
password $GITHUB_TOKEN
@@ -13,33 +16,33 @@ git_setup() {
password $GITHUB_TOKEN
EOF
chmod 600 $HOME/.netrc
git config --global user.email "$INPUT_AUTHOR_EMAIL"
git config --global user.name "$INPUT_AUTHOR_NAME"
}
add() {
if $INPUT_FORCE
then find $INPUT_PATH -name "$INPUT_PATTERN" | while read x; do git add -f $x; done
else find $INPUT_PATH -name "$INPUT_PATTERN" | while read x; do git add $x; done
fi
if $INPUT_FORCE; then f=-f; else f=; fi
git add $INPUT_ADD $f
}
remove() {
if [ -n "$INPUT_REMOVE" ]; then git rm $INPUT_REMOVE; fi
}
# This is needed to make the check work for untracked files
echo "Staging files in commit path..."
echo "Staging files..."
add
remove
echo "Checking for uncommitted changes in the git working tree..."
# This section only runs if there have been file changes
if ! git diff --cached --exit-code
then
if ! git diff --cached --exit-code; then
git_setup
git fetch
git fetch
# Verify if the branch needs to be created
if ! git rev-parse --verify --quiet "${GITHUB_REF:11}"
then
if ! git rev-parse --verify --quiet "${GITHUB_REF:11}"; then
echo "Creating branch..."
git branch "${GITHUB_REF:11}"
fi
@@ -48,9 +51,18 @@ then
echo "Switching branch..."
git checkout "${GITHUB_REF:11}"
echo "Pulling from remote..."
git fetch && git pull
echo "Resetting files..."
git reset
echo "Adding files..."
add
echo "Removing files..."
remove
echo "Creating commit..."
git commit -m "$INPUT_MESSAGE" --author="$INPUT_AUTHOR_NAME <$INPUT_AUTHOR_EMAIL>"

View File

@@ -1,24 +1,32 @@
import * as core from '@actions/core'
import * as shell from 'shelljs'
import * as path from 'path'
import { info, setFailed, getInput, warning } from '@actions/core'
import { join as path } from 'path'
import { execFileSync } from 'child_process'
try {
checkInputs()
shell.exec(path.join(__dirname, '../src/entrypoint.sh'))
} catch (e) {
core.setFailed(e)
execFileSync(path(__dirname, 'entrypoint.sh'))
} catch (err) {
console.error(err)
setFailed(err instanceof Error ? err.message : err)
}
function checkInputs() {
const eventPath = process.env.GITHUB_EVENT_PATH
if (eventPath) {
const { author } = require(eventPath).head_commit
if (!process.env.INPUT_AUTHOR_NAME) process.env.INPUT_AUTHOR_NAME = author.name
if (!process.env.INPUT_AUTHOR_EMAIL) process.env.INPUT_AUTHOR_EMAIL = author.email
const author = eventPath && require(eventPath)?.head_commit?.author
if (author) {
setDefault('author_name', author.name)
setDefault('author_email', author.email)
} else {
core.warning('No event path available, unable to fetch author info.')
if (!process.env.INPUT_AUTHOR_NAME) process.env.INPUT_AUTHOR_NAME = 'Add & Commit Action'
if (!process.env.INPUT_AUTHOR_EMAIL) process.env.INPUT_AUTHOR_EMAIL = 'actions@github.com'
if (!getInput('author_name') || !getInput('author_email')) warning(`Unable to fetch author info: couldn't find ${!eventPath ? 'event path' : !require(eventPath)?.head_commit ? 'commit' : 'commit author'}.`)
setDefault('author_name', 'Add & Commit Action')
setDefault('author_email', 'actions@github.com')
}
core.info(`Using '${process.env.INPUT_AUTHOR_NAME} <${process.env.INPUT_AUTHOR_EMAIL}>' as author.`)
info(`Using '${getInput('author_name')} <${getInput('author_email')}>' as author.`)
}
function setDefault(input: string, value: string) {
const key = 'INPUT_' + input.toUpperCase()
if (!process.env[key]) process.env[key] = value
}