Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/npm/cli.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/repo.js')
-rw-r--r--lib/repo.js46
1 files changed, 11 insertions, 35 deletions
diff --git a/lib/repo.js b/lib/repo.js
index 1b0454773..b6c1b2833 100644
--- a/lib/repo.js
+++ b/lib/repo.js
@@ -1,18 +1,14 @@
-
module.exports = repo
repo.usage = "npm repo <pkgname>"
var npm = require("./npm.js")
, opener = require("opener")
- , github = require("github-url-from-git")
- , githubUserRepo = require("github-url-from-username-repo")
- , path = require("path")
- , readJson = require("read-package-json")
- , fs = require("fs")
+ , hostedGitInfo = require("hosted-git-info")
, url_ = require("url")
+ , fetchPackageMetadata = require("./fetch-package-metadata.js")
, mapToRegistry = require("./utils/map-to-registry.js")
- , npa = require("npm-package-arg")
+ , registry = npm.registry
repo.completion = function (opts, cb) {
// FIXME: there used to be registry completion here, but it stopped making
@@ -21,15 +17,10 @@ repo.completion = function (opts, cb) {
}
function repo (args, cb) {
- var n = args.length && npa(args[0]).name || "."
- fs.stat(n, function (er, s) {
- if (er && er.code === "ENOENT") return callRegistry(n, cb)
- else if (er) return cb(er)
- if (!s.isDirectory()) return callRegistry(n, cb)
- readJson(path.resolve(n, "package.json"), function (er, d) {
- if (er) return cb(er)
- getUrlAndOpen(d, cb)
- })
+ var n = args.length ? args[0] : "."
+ fetchPackageMetadata(n, ".", function (er, d) {
+ if (er) return cb(er)
+ getUrlAndOpen(d, cb)
})
}
@@ -38,30 +29,15 @@ function getUrlAndOpen (d, cb) {
if (!r) return cb(new Error("no repository"))
// XXX remove this when npm@v1.3.10 from node 0.10 is deprecated
// from https://github.com/npm/npm-www/issues/418
- if (githubUserRepo(r.url))
- r.url = githubUserRepo(r.url)
+ var info = hostedGitInfo.fromUrl(r.url)
+ url = info ? info.browse() : unknownHostedUrl(r.url)
- var url = (r.url && ~r.url.indexOf("github"))
- ? github(r.url)
- : nonGithubUrl(r.url)
+ if (!url) return cb(new Error("no repository: could not get url"))
- if (!url)
- return cb(new Error("no repository: could not get url"))
opener(url, { command: npm.config.get("browser") }, cb)
}
-function callRegistry (n, cb) {
- mapToRegistry(n, npm.config, function (er, uri) {
- if (er) return cb(er)
-
- npm.registry.get(uri + "/latest", { timeout : 3600 }, function (er, d) {
- if (er) return cb(er)
- getUrlAndOpen(d, cb)
- })
- })
-}
-
-function nonGithubUrl (url) {
+function unknownHostedUrl (url) {
try {
var idx = url.indexOf("@")
if (idx !== -1) {