-
Notifications
You must be signed in to change notification settings - Fork 1
/
action.yml
112 lines (99 loc) · 3.83 KB
/
action.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# https://docs.github.com/en/actions/creating-actions/metadata-syntax-for-github-actions
---
name: Bot Details
description: 🤖 Get bot details (name, email, author/committer) in a proper format for the subsequence steps like git, PR, and more.
author: Dariusz Porowski
branding:
icon: user # https://feathericons.com/
color: gray-dark
inputs:
bot-slug-name:
description: Bot slug name (GitHub App name)
required: false
default: github-actions
set-env:
description: "Save action's output also as environment variables"
type: bool
default: true
env-prefix:
description: Prefix for environment variables
required: false
github-token:
description: GitHub token to use for API authentication
required: false
default: ${{ github.token }}
outputs:
id:
description: Bot id
value: ${{ steps.bot-details.outputs.id }}
slug:
description: Bot slug name
value: ${{ steps.bot-details.outputs.slug }}
name:
description: Bot name
value: ${{ steps.bot-details.outputs.name }}
email:
description: Bot email
value: ${{ steps.bot-details.outputs.email }}
name-email:
description: Bot name and email
value: ${{ steps.bot-details.outputs.name_email }}
html-url:
description: Bot html url
value: ${{ steps.bot-details.outputs.html_url }}
api-url:
description: Bot api url
value: ${{ steps.bot-details.outputs.api_url }}
runs:
using: composite
steps:
- name: Get bot details
uses: actions/github-script@v7
id: bot-details
with:
github-token: ${{ inputs.github-token || github.token }}
script: |
const botSlugName = core.getInput('bot_slug_name', {required: false}) || 'github-actions'
const botName = `${botSlugName}[bot]`
let envPrefix = core.getInput('env_prefix', { required: false })
let setEnv = core.getBooleanInput('set_env') || false
if (setEnv) {
if (envPrefix) {
envPrefix = envPrefix.replace(/[^a-z0-9]/gi, '').toUpperCase()
envPrefix = `${envPrefix}__`
}
core.debug(`envPrefix: ${envPrefix}`)
}
const { data } = await github.rest.users.getByUsername({
username: botName
})
const botId = data.id
const botEmail = `${botId}+${botName}@users.noreply.github.com`
const botNameEmail = `${botName} <${botEmail}>`
const botHtmlUrl = data.html_url
const botApiUrl = data.url
core.debug(`botId: ${botId}`)
core.setOutput('id', botId)
setEnv && core.exportVariable(`${envPrefix}BOT_ID`, botId)
core.debug(`botSlugName: ${botSlugName}`)
core.setOutput('slug', botSlugName)
setEnv && core.exportVariable(`${envPrefix}BOT_SLUG`, botSlugName)
core.debug(`botName: ${botName}`)
core.setOutput('name', `${botName}`)
setEnv && core.exportVariable(`${envPrefix}BOT_NAME`, botName)
core.debug(`botEmail: ${botEmail}`)
core.setOutput('email', `${botEmail}`)
setEnv && core.exportVariable(`${envPrefix}BOT_EMAIL`, botEmail)
core.debug(`botNameEmail: ${botNameEmail}`)
core.setOutput('name_email', `${botNameEmail}`)
setEnv && core.exportVariable(`${envPrefix}BOT_NAME_EMAIL`, botNameEmail)
core.debug(`botHtmlUrl: ${botHtmlUrl}`)
core.setOutput('html_url', `${botHtmlUrl}`)
setEnv && core.exportVariable(`${envPrefix}BOT_HTML_URL`, botHtmlUrl)
core.debug(`botApiUrl: ${botApiUrl}`)
core.setOutput('api_url', `${botApiUrl}`)
setEnv && core.exportVariable(`${envPrefix}BOT_API_URL`, botApiUrl)
env:
INPUT_BOT_SLUG_NAME: ${{ inputs.bot-slug-name }}
INPUT_SET_ENV: ${{ inputs.set-env }}
INPUT_ENV_PREFIX: ${{ inputs.env-prefix }}