chore: allow es6 in src, wile keeping every commit addressable

This commit is contained in:
Stephan Bönnemann 2015-06-10 12:13:55 -07:00
parent 1db531b511
commit 1f3c5e885e
3 changed files with 97 additions and 76 deletions

View File

@ -1,13 +1,9 @@
#!/usr/bin/env node #!/usr/bin/env node
'use strict'
var readFile = require('fs').readFileSync var readFile = require('fs').readFileSync
var abbrev = require('abbrev')
var minimist = require('minimist') var minimist = require('minimist')
var efh = require('../lib/error').standard
var argv = minimist(process.argv.slice(2), { var argv = minimist(process.argv.slice(2), {
alias: { alias: {
d: 'debug', d: 'debug',
@ -23,72 +19,25 @@ var argv = minimist(process.argv.slice(2), {
} }
}) })
var plugins = JSON.parse(readFile('./package.json')).release || {}
var npmArgv = process.env.npm_config_argv ? var npmArgv = process.env.npm_config_argv ?
minimist(JSON.parse(process.env.npm_config_argv).cooked) : minimist(JSON.parse(process.env.npm_config_argv).cooked) :
{_: []} {_: []}
var plugins = JSON.parse(readFile('./package.json')).release || {}
var main
try {
main = require('../dist/main')
} catch (e) {
require('babel/register')
main = require('../src/main')
}
if (~argv._.indexOf('pre')) { if (~argv._.indexOf('pre')) {
// see src/restart.js main.pre(argv, npmArgv, plugins)
if (npmArgv['semantic-release-rerun']) { } else if (~argv._.indexOf('post')) {
if (!/semantically-released/.test(process.env.npm_package_version)) process.exit(0) main.post(argv, npmArgv, plugins)
} else if (~argv._.indexOf('setup')) {
console.log('There is something wrong with your setup, as a placeholder version is about to be released.') main.setup(argv, npmArgv, plugins)
console.log('Please verify that your setup is correct.')
console.log('If you think this is a problem with semantic-release please open an issue.')
process.exit(1)
}
// the `prepublish` hook is also executed when the package is installed
// in this case we abort the command and do nothing.
if (
isAbbrev(npmArgv, 'install') ||
isAbbrev(npmArgv, 'link') ||
isAbbrev(npmArgv, 'pack')
) process.exit(0)
if (argv.debug) console.log('This is a dry run')
console.log('Determining new version')
var publish = false
if (isAbbrev(npmArgv, 'publish')) publish = true
// require a correct setup during publish
if (publish && !argv.debug && !require('../src/verify')(argv)) process.exit(1)
require('../src/pre')(argv, plugins, efh(function (result) {
if (!result) {
console.log('Nothing changed. Not publishing.')
process.exit(1)
}
console.log('Publishing v' + result)
if (!publish) process.exit(0)
if (argv.debug) process.exit(1)
require('../src/restart')(efh(function () {
process.exit(1)
}))
}))
}
if (~argv._.indexOf('post')) {
require('../src/post')(argv, plugins, 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.')
}
}))
}
if (~argv._.indexOf('setup')) {
require('../src/setup')()
console.log('"package.json" is set up properly. Now configure your CI server.')
console.log('https://github.com/boennemann/semantic-release#ci-server')
}
function isAbbrev (argv, command) {
return argv._.some(Object.prototype.hasOwnProperty.bind(abbrev(command)))
} }

View File

@ -43,16 +43,22 @@
"keywords": [ "keywords": [
"author", "author",
"automation", "automation",
"release", "changelog",
"publish",
"module", "module",
"package", "package",
"publish",
"release",
"semver", "semver",
"version", "version"
"changelog"
], ],
"license": "MIT", "license": "MIT",
"main": "index.js", "main": "index.js",
"optionalDependencies": {
"babel": "^5.5.6"
},
"release": {
"verification": "cracks"
},
"repository": { "repository": {
"type": "git", "type": "git",
"url": "https://github.com/boennemann/semantic-release.git" "url": "https://github.com/boennemann/semantic-release.git"
@ -60,11 +66,8 @@
"scripts": { "scripts": {
"postpublish": "./bin/semantic-release.js post", "postpublish": "./bin/semantic-release.js post",
"prepublish": "./bin/semantic-release.js pre", "prepublish": "./bin/semantic-release.js pre",
"test:style": "standard", "test": "./bin/test",
"test:integration": "node tests | tap-spec", "test:integration": "node tests | tap-spec",
"test": "./bin/test" "test:style": "standard"
},
"release": {
"verification": "cracks"
} }
} }

69
src/main.js Normal file
View File

@ -0,0 +1,69 @@
'use strict'
var abbrev = require('abbrev')
var efh = require('../lib/error').standard
exports.pre = function (argv, npmArgv, plugins) {
// see src/restart.js
if (npmArgv['semantic-release-rerun']) {
if (!/semantically-released/.test(process.env.npm_package_version)) process.exit(0)
console.log('There is something wrong with your setup, as a placeholder version is about to be released.')
console.log('Please verify that your setup is correct.')
console.log('If you think this is a problem with semantic-release please open an issue.')
process.exit(1)
}
// the `prepublish` hook is also executed when the package is installed
// in this case we abort the command and do nothing.
if (
isAbbrev(npmArgv, 'install') ||
isAbbrev(npmArgv, 'link') ||
isAbbrev(npmArgv, 'pack')
) process.exit(0)
if (argv.debug) console.log('This is a dry run')
console.log('Determining new version')
var publish = false
if (isAbbrev(npmArgv, 'publish')) publish = true
// require a correct setup during publish
if (publish && !argv.debug && !require('./verify')(argv)) process.exit(1)
require('./pre')(argv, plugins, efh(function (result) {
if (!result) {
console.log('Nothing changed. Not publishing.')
process.exit(1)
}
console.log('Publishing v' + result)
if (!publish) process.exit(0)
if (argv.debug) process.exit(1)
require('./restart')(efh(function () {
process.exit(1)
}))
}))
}
exports.post = function (argv, npmArgv, plugins) {
require('./post')(argv, plugins, 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.')
}
}))
}
exports.setup = function () {
require('./setup')()
console.log('"package.json" is set up properly. Now configure your CI server.')
console.log('https://github.com/boennemann/semantic-release#ci-server')
}
function isAbbrev (argv, command) {
return argv._.some(Object.prototype.hasOwnProperty.bind(abbrev(command)))
}