From 7a39bb778193df1ffebc553260c7ae7619b05bfd Mon Sep 17 00:00:00 2001 From: Mikeal Rogers Date: Thu, 23 May 2019 18:43:01 +0000 Subject: [PATCH] feat: get full diff between releases --- merge-release-run.js | 59 ++++++++++++++++++++++++++++++++------------ package.json | 2 ++ 2 files changed, 45 insertions(+), 16 deletions(-) diff --git a/merge-release-run.js b/merge-release-run.js index 02c38d4..da7e23a 100644 --- a/merge-release-run.js +++ b/merge-release-run.js @@ -1,27 +1,54 @@ #!/usr/bin/env node const fs = require('fs') const path = require('path') +const bent = require('bent') +const git = require('simple-git')() const { execSync } = require('child_process') +const { promisify } = require('util') + +const getlog = promisify(git.log.bind(git)) + +const get = bent('json', 'https://registry.npmjs.org/') const event = JSON.parse(fs.readFileSync('/github/workflow/event.json').toString()) -let messages = event.commits.map(commit => commit.message) - -let version = 'patch' -if (messages.map(message => message.includes('BREAKING CHANGE')).includes(true)) { - version = 'major' -} else if (messages.map(message => message.toLowerCase().startsWith('feat')).includes(true)) { - version = 'minor' -} - let pkg = require(path.join(process.cwd(), 'package.json')) -pkg.gitsha = process.env.GITHUB_SHA +const run = async () => { + let latest + try { + latest = await get(pkg.name + '/latest') + } catch (e) { + // unpublished + } -fs.writeFileSync(path.join(process.cwd(), 'package.json'), Buffer.from(JSON.stringify(pkg))) + let messages -let current = execSync(`npm view ${pkg.name} version`).toString() -process.stdout.write(execSync(`npm version --allow-same-version=true --git-tag-version=false ${current} `)) -let newVersion = execSync(`npm version --git-tag-version=false ${version}`).toString() -console.log(newVersion) -process.stdout.write(execSync(`npm publish --access=public`)) + if (latest) { + if (latest.gitHead === process.env.GITHUB_SHA) return console.log('SHA matches latest release, skipping.') + if (latest.gitHead) { + let logs = await getlog({ from: latest.gitHead, to: process.env.GITHUB_SHA }) + messages = logs.all.map(r => r.message + '\n' + r.body) + // g.log({from: 'f0002b6c9710f818b9385aafeb1bde994fe3b370', to: '53a92ca2d1ea3c55977f44d93e48e31e37d0bc69'}, (err, l) => console.log(l.all.map(r => r.message + '\n' + r.body))) + } else { + latest = null + } + } + if (!latest) { + messages = event.commits.map(commit => commit.message + '\n' + commit.body) + } + + let version = 'patch' + if (messages.map(message => message.includes('BREAKING CHANGE')).includes(true)) { + version = 'major' + } else if (messages.map(message => message.toLowerCase().startsWith('feat')).includes(true)) { + version = 'minor' + } + + let current = execSync(`npm view ${pkg.name} version`).toString() + process.stdout.write(execSync(`npm version --allow-same-version=true --git-tag-version=false ${current} `)) + let newVersion = execSync(`npm version --git-tag-version=false ${version}`).toString() + console.log(newVersion) + process.stdout.write(execSync(`npm publish --access=public`)) +} +run() diff --git a/package.json b/package.json index 22c1495..daec242 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,8 @@ }, "homepage": "https://github.com/mikeal/auto-release#readme", "dependencies": { + "bent": "^1.5.13", + "simple-git": "^1.113.0", "yargs": "^12.0.5" }, "devDependencies": {