mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
34 lines
902 B
34 lines
902 B
// turns out tagging isn't very complicated
|
|
// all the smarts are in the couch.
|
|
module.exports = tag
|
|
tag.usage = "npm tag <project>@<version> [<tag>]"
|
|
|
|
tag.completion = require("./unpublish.js").completion
|
|
|
|
var npm = require("./npm.js")
|
|
, registry = npm.registry
|
|
, mapToRegistry = require("./utils/map-to-registry.js")
|
|
, npa = require("npm-package-arg")
|
|
, semver = require("semver")
|
|
|
|
function tag (args, cb) {
|
|
var thing = npa(args.shift() || "")
|
|
, project = thing.name
|
|
, version = thing.rawSpec
|
|
, t = args.shift() || npm.config.get("tag")
|
|
|
|
t = t.trim()
|
|
|
|
if (!project || !version || !t) return cb("Usage:\n"+tag.usage)
|
|
|
|
if (semver.validRange(t)) {
|
|
var er = new Error("Tag name must not be a valid SemVer range: " + t)
|
|
return cb(er)
|
|
}
|
|
|
|
mapToRegistry(project, npm.config, function (er, uri) {
|
|
if (er) return cb(er)
|
|
|
|
registry.tag(uri, version, t, cb)
|
|
})
|
|
}
|
|
|