summaryrefslogtreecommitdiff
path: root/deps/npm/lib/version.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/npm/lib/version.js')
-rw-r--r--deps/npm/lib/version.js72
1 files changed, 32 insertions, 40 deletions
diff --git a/deps/npm/lib/version.js b/deps/npm/lib/version.js
index ec3f93b202..95d5ff2ee2 100644
--- a/deps/npm/lib/version.js
+++ b/deps/npm/lib/version.js
@@ -10,6 +10,7 @@ var exec = require("child_process").execFile
, log = require("npmlog")
, which = require("which")
, npm = require("./npm.js")
+ , git = require("./utils/git.js")
version.usage = "npm version [<newversion> | major | minor | patch | prerelease | preminor | premajor ]\n"
+ "\n(run in package dir)\n"
@@ -37,6 +38,9 @@ function version (args, silent, cb_) {
if (data && data.name && data.version) {
v[data.name] = data.version
}
+ if (npm.config.get("json")) {
+ v = JSON.stringify(v, null, 2)
+ }
console.log(v)
return cb_()
}
@@ -53,9 +57,9 @@ function version (args, silent, cb_) {
return cb_(er)
}
- var newVer = semver.valid(args[0])
- if (!newVer) newVer = semver.inc(data.version, args[0])
- if (!newVer) return cb_(version.usage)
+ var newVer = semver.valid(args[0])
+ if (!newVer) newVer = semver.inc(data.version, args[0])
+ if (!newVer) return cb_(version.usage)
if (data.version === newVer) return cb_(new Error("Version not changed"))
data.version = newVer
@@ -74,48 +78,36 @@ function version (args, silent, cb_) {
}
function checkGit (data, cb) {
- var git = npm.config.get("git")
var args = [ "status", "--porcelain" ]
- var env = process.env
+ var options = {env: process.env}
// check for git
- which(git, function (err) {
- if (err) {
- err.code = "ENOGIT"
- return cb(err)
- }
-
- gitFound()
- })
-
- function gitFound () {
- exec(git, args, {env: env}, function (er, stdout, stderr) {
- var lines = stdout.trim().split("\n").filter(function (line) {
- return line.trim() && !line.match(/^\?\? /)
- }).map(function (line) {
- return line.trim()
- })
- if (lines.length) return cb(new Error(
- "Git working directory not clean.\n"+lines.join("\n")))
- write(data, function (er) {
- if (er) return cb(er)
- var message = npm.config.get("message").replace(/%s/g, data.version)
- , sign = npm.config.get("sign-git-tag")
- , flag = sign ? "-sm" : "-am"
- chain
- ( [ [ exec, git, [ "add", "package.json" ], {env: process.env} ]
- , [ exec, git, [ "commit", "-m", message ], {env: process.env} ]
- , sign && function (cb) {
- npm.spinner.stop()
- cb()
- }
+ git.whichAndExec(args, options, function (er, stdout) {
+ var lines = stdout.trim().split("\n").filter(function (line) {
+ return line.trim() && !line.match(/^\?\? /)
+ }).map(function (line) {
+ return line.trim()
+ })
+ if (lines.length) return cb(new Error(
+ "Git working directory not clean.\n"+lines.join("\n")))
+ write(data, function (er) {
+ if (er) return cb(er)
+ var message = npm.config.get("message").replace(/%s/g, data.version)
+ , sign = npm.config.get("sign-git-tag")
+ , flag = sign ? "-sm" : "-am"
+ chain
+ ( [ git.chainableExec([ "add", "package.json" ], {env: process.env})
+ , git.chainableExec([ "commit", "-m", message ], {env: process.env})
+ , sign && function (cb) {
+ npm.spinner.stop()
+ cb()
+ }
- , [ exec, git, [ "tag", "v" + data.version, flag, message ]
- , {env: process.env} ] ]
- , cb )
- })
+ , git.chainableExec([ "tag", "v" + data.version, flag, message ]
+ , {env: process.env}) ]
+ , cb )
})
- }
+ })
}
function write (data, cb) {