]> gerrit.simantics Code Review - simantics/district.git/blobdiff - org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/lib/unpublish.js
Adding integrated tile server
[simantics/district.git] / org.simantics.maps.server / node / node-v4.8.0-win-x64 / node_modules / npm / lib / unpublish.js
diff --git a/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/lib/unpublish.js b/org.simantics.maps.server/node/node-v4.8.0-win-x64/node_modules/npm/lib/unpublish.js
new file mode 100644 (file)
index 0000000..111f27a
--- /dev/null
@@ -0,0 +1,115 @@
+
+module.exports = unpublish
+
+var log = require("npmlog")
+var npm = require("./npm.js")
+var readJson = require("read-package-json")
+var path = require("path")
+var mapToRegistry = require("./utils/map-to-registry.js")
+var npa = require("npm-package-arg")
+var getPublishConfig = require("./utils/get-publish-config.js")
+
+unpublish.usage = "npm unpublish <project>[@<version>]"
+
+unpublish.completion = function (opts, cb) {
+  if (opts.conf.argv.remain.length >= 3) return cb()
+  npm.commands.whoami([], true, function (er, username) {
+    if (er) return cb()
+
+    var un = encodeURIComponent(username)
+    if (!un) return cb()
+    var byUser = "-/by-user/" + un
+    mapToRegistry(byUser, npm.config, function (er, uri, auth) {
+      if (er) return cb(er)
+
+      npm.registry.get(uri, { auth : auth }, function (er, pkgs) {
+        // do a bit of filtering at this point, so that we don't need
+        // to fetch versions for more than one thing, but also don't
+        // accidentally a whole project.
+        pkgs = pkgs[un]
+        if (!pkgs || !pkgs.length) return cb()
+        var pp = npa(opts.partialWord).name
+        pkgs = pkgs.filter(function (p) {
+          return p.indexOf(pp) === 0
+        })
+        if (pkgs.length > 1) return cb(null, pkgs)
+        mapToRegistry(pkgs[0], npm.config, function (er, uri, auth) {
+          if (er) return cb(er)
+
+          npm.registry.get(uri, { auth : auth }, function (er, d) {
+            if (er) return cb(er)
+            var vers = Object.keys(d.versions)
+            if (!vers.length) return cb(null, pkgs)
+            return cb(null, vers.map(function (v) {
+              return pkgs[0] + "@" + v
+            }))
+          })
+        })
+      })
+    })
+  })
+}
+
+function unpublish (args, cb) {
+  if (args.length > 1) return cb(unpublish.usage)
+
+  var thing = args.length ? npa(args[0]) : {}
+    , project = thing.name
+    , version = thing.rawSpec
+
+  log.silly("unpublish", "args[0]", args[0])
+  log.silly("unpublish", "thing", thing)
+  if (!version && !npm.config.get("force")) {
+    return cb("Refusing to delete entire project.\n"
+             + "Run with --force to do this.\n"
+             + unpublish.usage)
+  }
+
+  if (!project || path.resolve(project) === npm.localPrefix) {
+    // if there's a package.json in the current folder, then
+    // read the package name and version out of that.
+    var cwdJson = path.join(npm.localPrefix, "package.json")
+    return readJson(cwdJson, function (er, data) {
+      if (er && er.code !== "ENOENT" && er.code !== "ENOTDIR") return cb(er)
+      if (er) return cb("Usage:\n" + unpublish.usage)
+      log.verbose('unpublish', data)
+      gotProject(data.name, data.version, data.publishConfig, cb)
+    })
+  }
+  return gotProject(project, version, cb)
+}
+
+function gotProject (project, version, publishConfig, cb_) {
+  if (typeof cb_ !== 'function') {
+    cb_ = publishConfig
+    publishConfig = null
+  }
+
+  function cb (er) {
+    if (er) return cb_(er)
+    console.log("- " + project + (version ? "@" + version : ""))
+    cb_()
+  }
+
+  var mappedConfig = getPublishConfig(publishConfig, npm.config, npm.registry)
+  var config = mappedConfig.config
+  var registry = mappedConfig.client
+
+  // remove from the cache first
+  npm.commands.cache(["clean", project, version], function (er) {
+    if (er) {
+      log.error("unpublish", "Failed to clean cache")
+      return cb(er)
+    }
+
+    mapToRegistry(project, config, function (er, uri, auth) {
+      if (er) return cb(er)
+
+      var params = {
+        version: version,
+        auth: auth
+      }
+      registry.unpublish(uri, params, cb)
+    })
+  })
+}