feat: add tag_push input and tag_pushed output (#374)

This commit is contained in:
Federico Grandi
2022-03-11 19:01:06 +01:00
committed by GitHub
parent d67ae5f689
commit 0e4f5f6417
4 changed files with 16 additions and 22 deletions

View File

@@ -52,6 +52,9 @@ inputs:
tag:
description: Arguments for the git tag command (the tag name always needs to be the first word not preceded by a hyphen)
required: false
tag_push:
description: Arguments for the git push --tags command (any additional argument will be added after --tags)
required: false
# Input not required from the user
github_token:
@@ -70,6 +73,8 @@ outputs:
description: Whether the action has pushed to the remote.
tagged:
description: Whether the action has created a tag.
tag_pushed:
description: Whether the action has pushed a tag.
runs:
using: node12

4
lib/index.js generated

File diff suppressed because one or more lines are too long

View File

@@ -17,6 +17,7 @@ interface InputTypes {
push: string
remove: string | undefined
tag: string | undefined
tag_push: string | undefined
github_token: string | undefined
}
@@ -28,6 +29,7 @@ interface OutputTypes {
commit_sha: string | undefined
pushed: 'true' | 'false'
tagged: 'true' | 'false'
tag_pushed: 'true' | 'false'
}
export type output = keyof OutputTypes
@@ -36,7 +38,8 @@ export const outputs: OutputTypes = {
commit_long_sha: undefined,
commit_sha: undefined,
pushed: 'false',
tagged: 'false'
tagged: 'false',
tag_pushed: 'false'
}
// Setup default output values
Object.entries(outputs).forEach(([name, value]) => core.setOutput(name, value))

View File

@@ -149,26 +149,12 @@ core.info(`Running in ${baseDir}`)
if (getInput('tag')) {
core.info('> Pushing tags to repo...')
await git
.pushTags('origin', undefined, (e, d?) => log(undefined, e || d))
.catch(() => {
core.info(
'> Tag push failed: deleting remote tag and re-pushing...'
)
return git
.push(
undefined,
undefined,
{
'--delete': null,
origin: null,
[matchGitArgs(getInput('tag') || '').filter(
(w) => !w.startsWith('-')
)[0]]: null
},
log
)
.pushTags('origin', undefined, log)
.pushTags('origin', matchGitArgs(getInput('tag_push') || ''))
.then((data) => {
setOutput('tag_pushed', 'true')
return log(null, data)
})
.catch((err) => core.setFailed(err))
} else core.info('> No tags to push.')
} else core.info('> Not pushing anything.')