Skip to content

Commit

Permalink
feat: Added outputs
Browse files Browse the repository at this point in the history
  • Loading branch information
TriPSs committed May 8, 2020
1 parent 6bfb377 commit 770b36d
Show file tree
Hide file tree
Showing 4 changed files with 60 additions and 7 deletions.
16 changes: 14 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,23 @@ jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Checkout code
uses: actions/checkout@v2

- run: yarn --production
- run: git add node_modules -f

- uses: ./
- name: Generate changelog
id: changelog
uses: ./
with:
github-token: ${{ secrets.github_token }}

- name: Create Release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.github_token }}
with:
tag_name: ${{ steps.changelog.outputs.tag }}
release_name: ${{ steps.changelog.outputs.tag }}
body: ${{ steps.changelog.outputs.changelog }}
8 changes: 8 additions & 0 deletions action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,3 +43,11 @@ inputs:
description: 'The path to the package.json to use'
default: './package.json'
required: false

outputs:
changelog:
description: 'The generated changelog for the new version'
version:
description: 'The new version'
tag:
description: 'The name of the generated tag'
25 changes: 23 additions & 2 deletions src/helpers/generateChangelog.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,32 @@
const fs = require('fs')
const conventionalChangelog = require('conventional-changelog')

module.exports = (tagPrefix, preset, jsonPackage, fileName, releaseCount) => new Promise((resolve) => {
module.exports.generateStringChangelog = (tagPrefix, preset, jsonPackage, releaseCount) => new Promise((resolve, reject) => {
const changelogStream = conventionalChangelog({
preset,
releaseCount: parseInt(releaseCount, 10),
tagPrefix
tagPrefix,
},
{
version: jsonPackage.version,
currentTag: `${tagPrefix}${jsonPackage.version}`,
},
)

let changelog = ''

changelogStream
.on('data', (data) => {
changelog += data.toString()
})
.on('end', () => resolve(changelog))
})

module.exports.generateFileChangelog = (tagPrefix, preset, jsonPackage, fileName, releaseCount) => new Promise((resolve) => {
const changelogStream = conventionalChangelog({
preset,
releaseCount: parseInt(releaseCount, 10),
tagPrefix,
},
{
version: jsonPackage.version,
Expand Down
18 changes: 15 additions & 3 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ const conventionalRecommendedBump = require('conventional-recommended-bump')

const git = require('./helpers/git')
const packageJson = require('./helpers/packageJson')
const generateChangelog = require('./helpers/generateChangelog')
const changelog = require('./helpers/generateChangelog')

async function run() {
try {
Expand Down Expand Up @@ -42,8 +42,15 @@ async function run() {

core.info(`New version: ${jsonPackage.version}`)

// Generate the changelog
await generateChangelog(tagPrefix, preset, jsonPackage, outputFile, releaseCount)
// If output file === 'false' we don't write it to file
if (outputFile !== 'false') {
// Generate the changelog
await changelog.generateFileChangelog(tagPrefix, preset, jsonPackage, outputFile, releaseCount)
}

const stringChangelog = await changelog.generateStringChangelog(tagPrefix, preset, jsonPackage, 1)
core.info('Changelog generated')
core.info(stringChangelog)

core.info('Push all changes')

Expand All @@ -52,6 +59,11 @@ async function run() {
await git.commit(commitMessage.replace('{version}', `${tagPrefix}${jsonPackage.version}`))
await git.createTag(`${tagPrefix}${jsonPackage.version}`)
await git.push()

// Set outputs so other actions (for example actions/create-release) can use it
core.setOutput('changelog', stringChangelog)
core.setOutput('version', jsonPackage.version)
core.setOutput('tag', `${tagPrefix}${jsonPackage.version}`)
}
})

Expand Down

0 comments on commit 770b36d

Please sign in to comment.