refator: use error-first-handler

This commit is contained in:
Stephan Bönnemann 2015-02-03 18:54:17 +01:00
parent 19fd15c1dc
commit 019aeeabe1
8 changed files with 51 additions and 55 deletions

View File

@ -5,6 +5,8 @@ var abbrev = require('abbrev')
var confirm = require('confirm-simple')
var minimist = require('minimist')
var efh = require('../lib/error').standard
var argv = minimist(process.argv.slice(2), {
alias: {
d: 'debug',
@ -21,8 +23,6 @@ var npmArgv = process.env.npm_config_argv ?
{_: []}
if (~argv._.indexOf('pre')) {
var publish = false
// see src/restart.js
if (npmArgv['semantic-release-rerun']) process.exit(0)
// the `prepublish` hook is also executed when the package is installed
@ -30,47 +30,35 @@ if (~argv._.indexOf('pre')) {
if (isAbbrev(npmArgv, 'install')) process.exit(0)
return confirmCI(function () {
if (isAbbrev(npmArgv, 'publish')) publish = true
console.log('Determining new version')
require('../src/pre')(argv, function (err, result) {
if (err) {
console.log('Something went wrong.')
throw err
}
var publish = false
if (isAbbrev(npmArgv, 'publish')) publish = true
require('../src/pre')(argv, efh(function (result) {
if (!result) {
console.log('Nothing changed. Not publishing.')
process.exit(1)
}
console.log('Publishing v' + result)
if (publish) require('../src/restart')(function (err) {
if (err) {
console.log('Something went wrong.')
throw err
}
if (!publish) process.exit(0)
require('../src/restart')(efh(function () {
process.exit(1)
})
})
}))
}))
})
}
if (~argv._.indexOf('post')) {
return confirmCI(function () {
require('../src/post')(argv, function (err) {
if (err) {
console.log('Something went wrong.')
throw err
}
require('../src/post')(argv, efh(function () {
// see src/restart.js
if (npmArgv['semantic-release-rerun']) {
console.log('Everything is alright :) npm will now print an error message that you can safely ignore.')
}
})
}))
})
}

14
lib/error.js Normal file
View File

@ -0,0 +1,14 @@
'use strict'
var efh = require('error-first-handler')
module.exports = {
efh: efh,
standard: efh(function(err) {
console.log('Something went wrong:')
if (typeof err === 'string') return console.log(err)
if (err instanceof Error) return console.log(err.message)
if (err.message) return console.log(err.message)
console.log(err)
})
}

View File

@ -2,13 +2,12 @@
var git = require('conventional-changelog/lib/git')
module.exports = function (cb) {
git.latestTag(function (err, from) {
if (err) return cb(err)
var efh = require('../error').efh
git.getCommits({from: from}, function (err, commits) {
if (err) return cb(err)
module.exports = function (cb) {
git.latestTag(efh(cb)(function (from) {
git.getCommits({from: from}, efh(cb)(function (commits) {
cb(null, commits)
})
})
}))
}))
}

View File

@ -1,12 +1,11 @@
'use strict'
var commits = require('./commits')
var analyze = require('./analyze')
var commits = require('./commits')
var efh = require('../error').efh
module.exports = function (cb) {
commits(function (err, commits) {
if (err) return cb(err)
commits(efh(cb)(function (commits) {
cb(null, analyze(commits))
})
}))
}

View File

@ -4,7 +4,7 @@ var exec = require('child_process').exec
var unlink = require('fs').unlinkSync
module.exports = function (pkg, cb) {
if (!pkg.name) return cb('Package must have a name')
if (!pkg.name) return cb(new Error('Package must have a name'))
exec('npm show ' + pkg.name + ' version', function(err, stdout, stderr) {
if (err) unlink('./npm-debug.log')

View File

@ -11,6 +11,7 @@
"abbrev": "^1.0.5",
"confirm-simple": "^1.0.3",
"conventional-changelog": "0.0.11",
"error-first-handler": "^1.0.1",
"github": "^0.2.3",
"github-url-from-git": "^1.4.0",
"minimist": "^1.1.0",

View File

@ -8,6 +8,8 @@ var GitHubApi = require('github')
var parseSlug = require('parse-github-repo-url')
var parseUrl = require('github-url-from-git')
var efh = require('../lib/error').efh
var github = new GitHubApi({
version: '3.0.0'
})
@ -16,18 +18,14 @@ module.exports = function (options, cb) {
var pkg = JSON.parse(readFile('./package.json'))
var repository = pkg.repository ? pkg.repository.url : null
if (!repository) return cb('Package must have a repository')
if (!repository) return cb(new Error('Package must have a repository'))
changelog({
version: pkg.version,
repository: parseUrl(repository),
file: false
}, function(err, log) {
if (err) return cb(err)
exec('git rev-parse HEAD', function(err, hash) {
if (err) return cb(err)
}, efh(cb)(function (log) {
exec('git rev-parse HEAD', efh(cb)(function (hash) {
var ghRepo = parseSlug(repository)
var release = {
owner: ghRepo[0],
@ -43,10 +41,9 @@ module.exports = function (options, cb) {
token: options.token
})
github.releases.createRelease(release, function(err) {
if (err) return cb(err)
github.releases.createRelease(release, efh(cb)(function () {
cb(null, true)
})
})
})
}))
}))
}))
}

View File

@ -6,21 +6,19 @@ var semver = require('semver')
var type = require('../lib/type')
var version = require('../lib/version')
var efh = require('../lib/error').efh
module.exports = function (options, cb) {
type(function (err, type) {
if (err) return cb(err)
type(efh(cb)(function (type) {
if (!type) return cb(null, null)
var path = './package.json'
var pkg = JSON.parse(fs.readFileSync(path))
version(pkg, function (err, version, unpublished) {
if (err) return cb(err)
version(pkg, efh(cb)(function (version, unpublished) {
pkg.version = unpublished ? '1.0.0' : semver.inc(version, type)
if (!options.debug) fs.writeFileSync(path, JSON.stringify(pkg, null, 2))
cb(null, pkg.version)
})
})
}))
}))
}