Merge pull request #7 from oomathias/fix-owner

Fix owner
This commit is contained in:
Corey Butler 2019-12-29 13:26:39 -06:00 committed by GitHub
commit f6cca049ba
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 85 additions and 55 deletions

View File

@ -8,8 +8,8 @@ inputs:
package_root:
description: Autotag will look for the package.json file in in this location.
required: false
default: "./"
tag_prefx:
default: './'
tag_prefix:
description: By default, package.json uses semantic versioning, such as "1.0.0". A prefix can be used to add text before the tag name. For example, if tag_prefx is set to "v", then the tag would be labeled as "v1.0.0".
required: false
tag_suffix:

View File

@ -1,4 +1,3 @@
// import * as core from '@actions/core';
const github = require('@actions/github')
const core = require('@actions/core')
const fs = require('fs')
@ -6,33 +5,62 @@ const path = require('path')
async function run() {
try {
core.debug(` Available environment variables:\n -> ${Object.keys(process.env).map(i => i + ' :: ' + process.env[i]).join('\n -> ')}`)
const { repo } = github.context
let version = ""
core.debug(
` Available environment variables:\n -> ${Object.keys(process.env)
.map(i => i + ' :: ' + process.env[i])
.join('\n -> ')}`
)
if (!process.env.hasOwnProperty('INPUT_VERSION') || process.env.INPUT_VERSION.trim().length === 0) {
let dir = fs.readdirSync(path.resolve(process.env.GITHUB_WORKSPACE), { withFileTypes: true }).map(entry => {
const dir = fs
.readdirSync(path.resolve(process.env.GITHUB_WORKSPACE), { withFileTypes: true })
.map(entry => {
return `${entry.isDirectory() ? '> ' : ' - '}${entry.name}`
}).join('\n')
})
.join('\n')
core.debug(` Working Directory: ${process.env.GITHUB_WORKSPACE}:\n${dir}`)
core.debug(` Working Directory: ${process.env.GITHUB_WORKSPACE}:\n${dir}`)
const pkg_root = core.getInput('package_root', { required: false })
let pkgfile = path.join(process.env.GITHUB_WORKSPACE, pkg_root, 'package.json')
if (!fs.existsSync(pkgfile)) {
core.setFailed('package.json does not exist.')
return
}
let pkg = require(pkgfile)
version = pkg.version
} else {
version = process.env.INPUT_VERSION.trim()
const pkg_root = core.getInput('package_root', { required: false })
const pkgfile = path.join(process.env.GITHUB_WORKSPACE, pkg_root, 'package.json')
if (!fs.existsSync(pkgfile)) {
core.setFailed('package.json does not exist.')
return
}
core.setOutput('version', version)
core.debug(` Detected version ${version}`)
const pkg = require(pkgfile)
core.setOutput('version', pkg.version)
core.debug(` Detected version ${pkg.version}`)
// core.debug(` Available environment variables:\n -> ${Object.keys(process.env).map(i => i + ' :: ' + process.env[i]).join('\n -> ')}`)
// let version = ""
// if (!process.env.hasOwnProperty('INPUT_VERSION') || process.env.INPUT_VERSION.trim().length === 0) {
// let dir = fs.readdirSync(path.resolve(process.env.GITHUB_WORKSPACE), { withFileTypes: true }).map(entry => {
// return `${entry.isDirectory() ? '> ' : ' - '}${entry.name}`
// }).join('\n')
// core.debug(` Working Directory: ${process.env.GITHUB_WORKSPACE}:\n${dir}`)
// const pkg_root = core.getInput('package_root', { required: false })
// let pkgfile = path.join(process.env.GITHUB_WORKSPACE, pkg_root, 'package.json')
// if (!fs.existsSync(pkgfile)) {
// core.setFailed('package.json does not exist.')
// return
// }
// let pkg = require(pkgfile)
// version = pkg.version
// } else {
// version = process.env.INPUT_VERSION.trim()
// }
// core.setOutput('version', version)
// core.debug(` Detected version ${version}`)
if (!process.env.hasOwnProperty('INPUT_GITHUB_TOKEN') || process.env.INPUT_GITHUB_TOKEN.trim().length === 0) {
core.setFailed('Invalid or missing GITHUB_TOKEN.')
@ -41,25 +69,28 @@ async function run() {
// Check for existing tag
const git = new github.GitHub(process.env.INPUT_GITHUB_TOKEN)
const owner = process.env.GITHUB_ACTOR
const repo = process.env.GITHUB_REPOSITORY.split('/').pop()
let tags
try {
tags = await git.repos.listTags({
owner,
repo,
per_page: 100
...repo,
per_page: 100,
})
} catch (e) {
tags = {
data: []
data: [],
}
}
const getTagName = version => {
const tagPrefix = core.getInput('tag_prefix', { required: false })
const tagSuffix = core.getInput('tag_suffix', { required: false })
return `${tagPrefix}${version}${tagSuffix}`
}
// Check for existance of tag and abort (short circuit) if it already exists.
for (let tag of tags.data) {
if (tag.name.trim().toLowerCase() === version.trim().toLowerCase()) {
if (tag.name === getTagName(pkg.version)) {
core.warning(`"${tag.name.trim()}" tag already exists.`)
core.setOutput('tagname', '')
return
@ -67,45 +98,47 @@ async function run() {
}
// Create the new tag name
let tagName = version
const tagPrefix = core.getInput('tag_prefix', { required: false })
const tagSuffix = core.getInput('tag_suffix', { required: false })
const tagName = getTagName(pkg.version)
let tagMsg = core.getInput('tag_message', { required: false }).trim()
tagName = `${tagPrefix}${tagName}${tagSuffix}`
if (tagMsg.length === 0 && tags.data.length > 0) {
try {
latestTag = tags.data.shift()
let changelog = await git.repos.compareCommits({
owner,
repo,
...repo,
base: latestTag.name,
head: 'master'
head: 'master',
})
tagMsg = changelog.data.commits.map(commit => `**1) ${commit.commit.message}**${commit.hasOwnProperty('author') ? (commit.author.hasOwnProperty('login') ? ' (' + commit.author.login + ')' : '') : ''}\n(SHA: ${commit.sha})\n`).join('\n')
tagMsg = changelog.data.commits
.map(
commit =>
`**1) ${commit.commit.message}**${
commit.hasOwnProperty('author')
? commit.author.hasOwnProperty('login')
? ' (' + commit.author.login + ')'
: ''
: ''
}\n(SHA: ${commit.sha})\n`
)
.join('\n')
} catch (e) {
core.warning('Failed to generate changelog from commits: ' + e.message)
tagMsg = `${tagPrefix}${tagName}${tagSuffix}`
tagMsg = tagName
}
}
let newTag
try {
tagMsg = tagMsg.trim().length > 0
? tagMsg
: `Version ${version}`
tagMsg = tagMsg.trim().length > 0 ? tagMsg : `Version ${pkg.version}`
newTag = await git.git.createTag({
owner,
repo,
...repo,
tag: tagName,
message: tagMsg,
object: process.env.GITHUB_SHA,
type: 'commit'
type: 'commit',
})
core.warning(`Created new tag: ${newTag.data.tag}`)
@ -115,22 +148,19 @@ async function run() {
}
let newReference
try {
newReference = await git.git.createRef({
owner,
repo,
...repo,
ref: `refs/tags/${newTag.data.tag}`,
sha: newTag.data.sha
sha: newTag.data.sha,
})
core.warning(`Reference ${newReference.data.ref} available at ${newReference.data.url}`)
} catch (e) {
core.warning({
owner,
repo,
...repo,
ref: `refs/tags/${newTag.data.tag}`,
sha: newTag.data.sha
sha: newTag.data.sha,
})
core.setFailed(e.message)