From 528898be33e37b87c5295d802440873eda171fa3 Mon Sep 17 00:00:00 2001 From: isaacs Date: Mon, 10 May 2010 12:39:40 -0700 Subject: Move install-docs.js into the scripts folder so that it's not so confusing. --- scripts/install-docs.js | 63 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 scripts/install-docs.js (limited to 'scripts') diff --git a/scripts/install-docs.js b/scripts/install-docs.js new file mode 100644 index 000000000..869f6c558 --- /dev/null +++ b/scripts/install-docs.js @@ -0,0 +1,63 @@ + +// a helper install script to install the documentation along with the program +// this runs whenever npm is activated or deactivated, so that the docs always +// reflect the current command. + +var event = process.env.npm_lifecycle_event + , exec = require("./lib/utils/exec") + , log = require("./lib/utils/log") + , fs = require("fs") + , path = require("path") + , rm = require("./lib/utils/rm-rf") + , mkdir = require("./lib/utils/mkdir-p") + , manTarget = path.join(process.installPrefix, "share/man/man1") + , exec = require("./lib/utils/exec") + +log(event, "docs") + +exec("man", ["-w"], function (er, code, stdout, stderr) { + if (er) throw er + var manpath = stdout.trim().split(":") + if (manpath.indexOf(path.dirname(manTarget)) === -1) { + log("It seems " + manTarget + " is not visible to man", "!") + log("For greater justice, please add it to your man path", "!") + log("See: man man", "!") + } + mkdir(manTarget, function (er) { + if (er) throw er + installDocs() + }) +}) +function installDocs () { + fs.readdir(path.join(process.cwd(), "man"), function (er, docs) { + log(path.join(process.cwd(), "man"), "docs") + log(manTarget, "docs") + if (er) return + ;(function R (doc) { + if (!doc) return log("done", "docs") + if (doc === "." || doc === "..") return R(docs.pop()) + var target = path.join(manTarget, "npm-"+doc) + target = target.replace(/npm-npm\.1$/, "npm.1") + switch (event) { + case "activate": + rm( target + , function () { + fs.symlink + ( path.join(process.cwd(), "man", doc) + , target + , function (er, ok) { + if (er) throw er + R(docs.pop()) + } + ) + } + ) + break + case "deactivate": + rm( target, function (er) { R(docs.pop()) }) + break + default: throw new Error("invalid state"); break + } + })(docs.pop()) + }) +} -- cgit v1.2.3