Skip to content

Commit 2b76766

Browse files
authored
feat: expose data as output
1 parent bb64c16 commit 2b76766

File tree

2 files changed

+113
-17
lines changed

2 files changed

+113
-17
lines changed

action.yml

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,50 @@ author: "Romain Lespinasse"
55
branding:
66
icon: "settings"
77
color: "gray-dark"
8+
inputs:
9+
publish-env:
10+
description: "Publish slugs as environment variables"
11+
default: "true"
12+
required: true
13+
outputs:
14+
sha:
15+
description: "commit hash"
16+
value: ${{ steps.commit-data.outputs.sha }}
17+
short-sha:
18+
description: "abbreviated commit hash"
19+
value: ${{ steps.commit-data.outputs.short-sha }}
20+
author:
21+
description: "Author name <author@email.tld>"
22+
value: ${{ steps.commit-data.outputs.author }}
23+
author-name:
24+
description: "Author name"
25+
value: ${{ steps.commit-data.outputs.author-name }}
26+
author-email:
27+
description: "author@email.tld"
28+
value: ${{ steps.commit-data.outputs.author-email }}
29+
committer:
30+
description: "Committer name <committer@email.tld>"
31+
value: ${{ steps.commit-data.outputs.committer }}
32+
committer-name:
33+
description: "Committer name"
34+
value: ${{ steps.commit-data.outputs.committer-name }}
35+
committer-email:
36+
description: "committer@email.tld"
37+
value: ${{ steps.commit-data.outputs.committer-email }}
38+
message-subject:
39+
description: "The first line of the commit message"
40+
value: ${{ steps.commit-data.outputs.message-subject }}
41+
message-subject-sanitized:
42+
description: "the-first-line-of-the-commit-message-in-sanitized-way"
43+
value: ${{ steps.commit-data.outputs.message-subject-sanitized }}
44+
message-body:
45+
description: "The body of the commit message"
46+
value: ${{ steps.commit-data.outputs.message-body }}
847
runs:
948
using: "composite"
1049
steps:
11-
- run: $GITHUB_ACTION_PATH/git-commit-data.sh
50+
- id: commit-data
51+
run: $GITHUB_ACTION_PATH/git-commit-data.sh
1252
shell: bash
53+
env:
54+
INPUT_PUBLISH_ENV: ${{ inputs.publish-env }}

git-commit-data.sh

Lines changed: 70 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,76 @@ git_log_format() {
2121
git log -1 --pretty=format:"$pattern" "$reference"
2222
}
2323

24-
echo "+ GIT_COMMIT_* environment variables"
25-
{
26-
echo "GIT_COMMIT_SHA=$(git_log_format "${TEMPLATE_SHA_FORMAT}" "HEAD")"
27-
echo "GIT_COMMIT_SHORT_SHA=$(git_log_format "${TEMPLATE_SHORT_SHA_FORMAT}" "HEAD")"
24+
COMMIT_SHA=$(git_log_format "${TEMPLATE_SHA_FORMAT}" "HEAD")
25+
COMMIT_SHORT_SHA=$(git_log_format "${TEMPLATE_SHORT_SHA_FORMAT}" "HEAD")
26+
COMMIT_AUTHOR=$(git_log_format "${TEMPLATE_AUTHOR_FORMAT}" "HEAD")
27+
COMMIT_AUTHOR_NAME=$(git_log_format "${TEMPLATE_AUTHOR_NAME_FORMAT}" "HEAD")
28+
COMMIT_AUTHOR_EMAIL=$(git_log_format "${TEMPLATE_AUTHOR_EMAIL_FORMAT}" "HEAD")
29+
COMMIT_COMMITTER=$(git_log_format "${TEMPLATE_COMMITTER_FORMAT}" "HEAD")
30+
COMMIT_COMMITTER_NAME=$(git_log_format "${TEMPLATE_COMMITTER_NAME_FORMAT}" "HEAD")
31+
COMMIT_COMMITTER_EMAIL=$(git_log_format "${TEMPLATE_COMMITTER_EMAIL_FORMAT}" "HEAD")
32+
COMMIT_MESSAGE_SUBJECT=$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_SUBJECT_FORMAT}" "HEAD")
33+
COMMIT_MESSAGE_SUBJECT_SANITIZED=$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_SUBJECT_SANITIZED_FORMAT}" "HEAD")
34+
COMMIT_MESSAGE_BODY=$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_BODY_FORMAT}" "HEAD")
2835

29-
echo "GIT_COMMIT_AUTHOR=$(git_log_format "${TEMPLATE_AUTHOR_FORMAT}" "HEAD")"
30-
echo "GIT_COMMIT_AUTHOR_NAME=$(git_log_format "${TEMPLATE_AUTHOR_NAME_FORMAT}" "HEAD")"
31-
echo "GIT_COMMIT_AUTHOR_EMAIL=$(git_log_format "${TEMPLATE_AUTHOR_EMAIL_FORMAT}" "HEAD")"
32-
33-
echo "GIT_COMMIT_COMMITTER=$(git_log_format "${TEMPLATE_COMMITTER_FORMAT}" "HEAD")"
34-
echo "GIT_COMMIT_COMMITTER_NAME=$(git_log_format "${TEMPLATE_COMMITTER_NAME_FORMAT}" "HEAD")"
35-
echo "GIT_COMMIT_COMMITTER_EMAIL=$(git_log_format "${TEMPLATE_COMMITTER_EMAIL_FORMAT}" "HEAD")"
36-
37-
echo "GIT_COMMIT_MESSAGE_SUBJECT=$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_SUBJECT_FORMAT}" "HEAD")"
38-
echo "GIT_COMMIT_MESSAGE_SUBJECT_SANITIZED=$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_SUBJECT_SANITIZED_FORMAT}" "HEAD")"
36+
echo "GIT_COMMIT_SHA=${COMMIT_SHA}"
37+
echo "GIT_COMMIT_SHORT_SHA=${COMMIT_SHORT_SHA}"
38+
echo "GIT_COMMIT_AUTHOR=${COMMIT_AUTHOR}"
39+
echo "GIT_COMMIT_AUTHOR_NAME=${COMMIT_AUTHOR_NAME}"
40+
echo "GIT_COMMIT_AUTHOR_EMAIL=${COMMIT_AUTHOR_EMAIL}"
41+
echo "GIT_COMMIT_COMMITTER=${COMMIT_COMMITTER}"
42+
echo "GIT_COMMIT_COMMITTER_NAME=${COMMIT_COMMITTER_NAME}"
43+
echo "GIT_COMMIT_COMMITTER_EMAIL=${COMMIT_COMMITTER_EMAIL}"
44+
echo "GIT_COMMIT_MESSAGE_SUBJECT=${COMMIT_MESSAGE_SUBJECT}"
45+
echo "GIT_COMMIT_MESSAGE_SUBJECT_SANITIZED=${COMMIT_MESSAGE_SUBJECT_SANITIZED}"
3946
echo 'GIT_COMMIT_MESSAGE_BODY<<GIT_COMMIT_MESSAGE_BODY_EOF'
40-
echo "$(git_log_format "${TEMPLATE_COMMIT_MESSAGE_BODY_FORMAT}" "HEAD")"
47+
echo "${COMMIT_MESSAGE_BODY}"
4148
echo 'GIT_COMMIT_MESSAGE_BODY_EOF'
42-
} | tee "$GITHUB_ENV"
49+
50+
51+
if [ -f "$GITHUB_OUTPUT" ]; then
52+
{
53+
echo "sha=${COMMIT_SHA}"
54+
echo "short-sha=${COMMIT_SHORT_SHA}"
55+
echo "author=${COMMIT_AUTHOR}"
56+
echo "author-name=${COMMIT_AUTHOR_NAME}"
57+
echo "author-email=${COMMIT_AUTHOR_EMAIL}"
58+
echo "committer=${COMMIT_COMMITTER}"
59+
echo "committer_NAME=${COMMIT_COMMITTER_NAME}"
60+
echo "committer_EMAIL=${COMMIT_COMMITTER_EMAIL}"
61+
echo "message-subject=${COMMIT_MESSAGE_SUBJECT}"
62+
echo "message-subject-sanitized=${COMMIT_MESSAGE_SUBJECT_SANITIZED}"
63+
echo 'message-body<<GIT_COMMIT_MESSAGE_BODY_EOF'
64+
echo "${COMMIT_MESSAGE_BODY}"
65+
echo 'GIT_COMMIT_MESSAGE_BODY_EOF'
66+
} >> "$GITHUB_OUTPUT"
67+
else
68+
echo "::set-output name=sha::${COMMIT_SHA}"
69+
echo "::set-output name=short-sha::${COMMIT_SHORT_SHA}"
70+
echo "::set-output name=author::${COMMIT_AUTHOR}"
71+
echo "::set-output name=author-name::${COMMIT_AUTHOR_NAME}"
72+
echo "::set-output name=author-email::${COMMIT_AUTHOR_EMAIL}"
73+
echo "::set-output name=committer::${COMMIT_COMMITTER}"
74+
echo "::set-output name=committer_NAME::${COMMIT_COMMITTER_NAME}"
75+
echo "::set-output name=committer_EMAIL::${COMMIT_COMMITTER_EMAIL}"
76+
echo "::set-output name=message-subject::${COMMIT_MESSAGE_SUBJECT}"
77+
echo "::set-output name=message-subject-sanitized::${COMMIT_MESSAGE_SUBJECT_SANITIZED}"
78+
fi
79+
80+
if [ "${INPUT_PUBLISH_ENV}" == "true" ]; then
81+
{
82+
echo "GIT_COMMIT_SHA=${COMMIT_SHA}"
83+
echo "GIT_COMMIT_SHORT_SHA=${COMMIT_SHORT_SHA}"
84+
echo "GIT_COMMIT_AUTHOR=${COMMIT_AUTHOR}"
85+
echo "GIT_COMMIT_AUTHOR_NAME=${COMMIT_AUTHOR_NAME}"
86+
echo "GIT_COMMIT_AUTHOR_EMAIL=${COMMIT_AUTHOR_EMAIL}"
87+
echo "GIT_COMMIT_COMMITTER=${COMMIT_COMMITTER}"
88+
echo "GIT_COMMIT_COMMITTER_NAME=${COMMIT_COMMITTER_NAME}"
89+
echo "GIT_COMMIT_COMMITTER_EMAIL=${COMMIT_COMMITTER_EMAIL}"
90+
echo "GIT_COMMIT_MESSAGE_SUBJECT=${COMMIT_MESSAGE_SUBJECT}"
91+
echo "GIT_COMMIT_MESSAGE_SUBJECT_SANITIZED=${COMMIT_MESSAGE_SUBJECT_SANITIZED}"
92+
echo 'GIT_COMMIT_MESSAGE_BODY<<GIT_COMMIT_MESSAGE_BODY_EOF'
93+
echo "${COMMIT_MESSAGE_BODY}"
94+
echo 'GIT_COMMIT_MESSAGE_BODY_EOF'
95+
} >>"$GITHUB_ENV"
96+
fi

0 commit comments

Comments
 (0)