]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/lib/dist-tag.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / lib / dist-tag.js
1 module.exports = distTag
2
3 var log = require("npmlog")
4 var npa = require("npm-package-arg")
5 var semver = require("semver")
6
7 var npm = require("./npm.js")
8 var mapToRegistry = require("./utils/map-to-registry.js")
9 var readLocalPkg = require("./utils/read-local-package.js")
10
11 distTag.usage = "npm dist-tag add <pkg>@<version> [<tag>]"
12               + "\nnpm dist-tag rm <pkg> <tag>"
13               + "\nnpm dist-tag ls [<pkg>]"
14
15 distTag.completion = function (opts, cb) {
16   var argv = opts.conf.argv.remain
17   if (argv.length === 2) {
18     return cb(null, ["add", "rm", "ls"])
19   }
20
21   switch (argv[2]) {
22     default:
23       return cb()
24   }
25 }
26
27 function distTag (args, cb) {
28   var cmd = args.shift()
29   switch (cmd) {
30     case "add": case "a": case "set": case "s":
31       return add(args[0], args[1], cb)
32     case "rm":  case "r": case "del": case "d": case "remove":
33       return remove(args[1], args[0], cb)
34     case "ls":  case "l": case "sl": case "list":
35       return list(args[0], cb)
36     default:
37       return cb("Usage:\n"+distTag.usage)
38   }
39 }
40
41 function add (spec, tag, cb) {
42   var thing = npa(spec || "")
43   var pkg = thing.name
44   var version = thing.rawSpec
45   var t = (tag || npm.config.get("tag")).trim()
46
47   log.verbose("dist-tag add", t, "to", pkg+"@"+version)
48
49   if (!pkg || !version || !t) return cb("Usage:\n"+distTag.usage)
50
51   if (semver.validRange(t)) {
52     var er = new Error("Tag name must not be a valid SemVer range: " + t)
53     return cb(er)
54   }
55
56   fetchTags(pkg, function (er, tags) {
57     if (er) return cb(er)
58
59     if (tags[t] === version) {
60       log.warn("dist-tag add", t, "is already set to version", version)
61       return cb()
62     }
63     tags[t] = version
64
65     mapToRegistry(pkg, npm.config, function (er, uri, auth, base) {
66       var params = {
67         package : pkg,
68         distTag : t,
69         version : version,
70         auth : auth
71       }
72
73       npm.registry.distTags.add(base, params, function (er) {
74         if (er) return cb(er)
75
76         console.log("+"+t+": "+pkg+"@"+version)
77         cb()
78       })
79     })
80   })
81 }
82
83 function remove (tag, pkg, cb) {
84   log.verbose("dist-tag del", tag, "from", pkg)
85
86   fetchTags(pkg, function (er, tags) {
87     if (er) return cb(er)
88
89     if (!tags[tag]) {
90       log.info("dist-tag del", tag, "is not a dist-tag on", pkg)
91       return cb(new Error(tag+" is not a dist-tag on "+pkg))
92     }
93
94     var version = tags[tag]
95     delete tags[tag]
96
97     mapToRegistry(pkg, npm.config, function (er, uri, auth, base) {
98       var params = {
99         package : pkg,
100         distTag : tag,
101         auth : auth
102       }
103
104       npm.registry.distTags.rm(base, params, function (er) {
105         if (er) return cb(er)
106
107         console.log("-"+tag+": "+pkg+"@"+version)
108         cb()
109       })
110     })
111   })
112 }
113
114 function list (pkg, cb) {
115   if (!pkg) return readLocalPkg(function (er, pkg) {
116     if (er) return cb(er)
117     if (!pkg) return cb(distTag.usage)
118     list(pkg, cb)
119   })
120
121   fetchTags(pkg, function (er, tags) {
122     if (er) {
123       log.error("dist-tag ls", "Couldn't get dist-tag data for", pkg)
124       return cb(er)
125     }
126     var msg = Object.keys(tags).map(function (k) {
127       return k+": "+tags[k]
128     }).sort().join("\n")
129     console.log(msg)
130     cb(er, tags)
131   })
132 }
133
134 function fetchTags (pkg, cb) {
135   mapToRegistry(pkg, npm.config, function (er, uri, auth, base) {
136     if (er) return cb(er)
137
138     var params = {
139       package : pkg,
140       auth : auth
141     }
142     npm.registry.distTags.fetch(base, params, function (er, tags) {
143       if (er) return cb(er)
144       if (!tags || !Object.keys(tags).length) {
145         return cb(new Error("No dist-tags found for " + pkg))
146       }
147
148       cb(null, tags)
149     })
150   })
151 }