Skip to content

Commit

Permalink
Use async/await instead of promises
Browse files Browse the repository at this point in the history
  • Loading branch information
cookpete committed Sep 26, 2017
1 parent 78a1cb8 commit dff4653
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 38 deletions.
9 changes: 5 additions & 4 deletions src/commits.js
Original file line number Diff line number Diff line change
Expand Up @@ -17,18 +17,19 @@ export function parseCommits (string) {
const [message, stats] = tail.split(MESSAGE_SEPARATOR)
return {
hash,
tag: refs ? tagFromRefs(refs) : null,
author,
email,
date,
tag: getTag(refs),
subject: getSubject(message),
message: message.trim(),
...parseStats(stats.trim())
...getStats(stats.trim())
}
})
}

function tagFromRefs (refs) {
function getTag (refs) {
if (!refs) return null
for (let ref of refs.split(', ')) {
if (ref.indexOf(TAG_PREFIX) === 0) {
return ref.replace(TAG_PREFIX, '')
Expand All @@ -37,7 +38,7 @@ function tagFromRefs (refs) {
return null
}

function parseStats (stats) {
function getStats (stats) {
if (!stats) return {}
const [, files, insertions, deletions] = stats.match(MATCH_STATS)
return {
Expand Down
67 changes: 33 additions & 34 deletions src/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,17 +21,17 @@ commander
.version(version)
.parse(process.argv)

function getCommits () {
return cmd(`git log --shortstat --pretty=format:${LOG_FORMAT}`).then(parseCommits)
async function getCommits () {
const log = await cmd(`git log --shortstat --pretty=format:${LOG_FORMAT}`)
return parseCommits(log)
}

function parseOrigin () {
return cmd('git config --get remote.origin.url').then(origin => {
if (!origin) {
throw new Error('Must have a git remote called origin')
}
return parseRepoURL(origin)
})
async function getOrigin () {
const origin = await cmd('git config --get remote.origin.url')
if (!origin) {
throw new Error('Must have a git remote called origin')
}
return parseRepoURL(origin)
}

function getPackageVersion () {
Expand All @@ -46,33 +46,32 @@ function getPackageVersion () {
return Promise.resolve(null)
}

function generateLog ([ commits, origin, packageVersion ]) {
const Template = templates[commander.template]
if (!Template) {
throw new Error(`Template '${commander.template}' was not found`)
}

const releases = parseReleases(commits, packageVersion)
const log = new Template(origin).render(releases)

return new Promise((resolve, reject) => {
writeFile(commander.output, log, err => {
if (err) reject(err)
resolve(log)
})
function writeLog (log) {
writeFile(commander.output, log, err => {
if (err) throw err
const bytes = Buffer.byteLength(log, 'utf8')
console.log(`${bytes} bytes written to ${commander.output}`)
process.exit(0)
})
}

function success (log) {
const bytes = Buffer.byteLength(log, 'utf8')
console.log(`${bytes} bytes written to ${commander.output}`)
process.exit(0)
}

function error (error) {
console.error(error.message)
async function generateLog () {
try {
const Template = templates[commander.template]
if (!Template) {
throw new Error(`Template '${commander.template}' was not found`)
}
const [ commits, origin, packageVersion ] = [
await getCommits(),
await getOrigin(),
await getPackageVersion()
]
const releases = parseReleases(commits, packageVersion)
const log = new Template(origin).render(releases)
writeLog(log)
} catch (e) {
console.error(e)
}
}

const promises = [ getCommits(), parseOrigin(), getPackageVersion() ]

Promise.all(promises).then(generateLog).then(success).catch(error)
generateLog()

0 comments on commit dff4653

Please sign in to comment.