]> gerrit.simantics Code Review - simantics/district.git/blob - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/lib/docs.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / lib / docs.js
1 module.exports = docs
2
3 docs.usage  = "npm docs <pkgname>"
4 docs.usage += "\n"
5 docs.usage += "npm docs ."
6
7 var npm = require("./npm.js")
8   , opener = require("opener")
9   , path = require("path")
10   , log = require("npmlog")
11   , mapToRegistry = require("./utils/map-to-registry.js")
12
13 docs.completion = function (opts, cb) {
14   // FIXME: there used to be registry completion here, but it stopped making
15   // sense somewhere around 50,000 packages on the registry
16   cb()
17 }
18
19 function url (json) {
20   return json.homepage ? json.homepage : "https://npmjs.org/package/" + json.name
21 }
22
23 function docs (args, cb) {
24   args = args || []
25   var pending = args.length
26   if (!pending) return getDoc(".", cb)
27   args.forEach(function(proj) {
28     getDoc(proj, function(err) {
29       if (err) {
30         return cb(err)
31       }
32       --pending || cb()
33     })
34   })
35 }
36
37 function getDoc (project, cb) {
38   project = project || "."
39   var package = path.resolve(npm.localPrefix, "package.json")
40
41   if (project === "." || project === "./") {
42     var json
43     try {
44       json = require(package)
45       if (!json.name) throw new Error('package.json does not have a valid "name" property')
46       project = json.name
47     } catch (e) {
48       log.error(e.message)
49       return cb(docs.usage)
50     }
51
52     return opener(url(json), { command: npm.config.get("browser") }, cb)
53   }
54
55   mapToRegistry(project, npm.config, function (er, uri, auth) {
56     if (er) return cb(er)
57
58     npm.registry.get(uri + "/latest", { timeout : 3600, auth : auth }, next)
59   })
60
61   function next (er, json) {
62     var github = "https://github.com/" + project + "#readme"
63
64     if (er) {
65       if (project.split("/").length !== 2) return cb(er)
66       return opener(github, { command: npm.config.get("browser") }, cb)
67     }
68
69     return opener(url(json), { command: npm.config.get("browser") }, cb)
70   }
71 }