diff options
Diffstat (limited to 'deps/npm/lib/utils/link.js')
-rw-r--r-- | deps/npm/lib/utils/link.js | 30 |
1 files changed, 30 insertions, 0 deletions
diff --git a/deps/npm/lib/utils/link.js b/deps/npm/lib/utils/link.js new file mode 100644 index 0000000000..9be1221f0a --- /dev/null +++ b/deps/npm/lib/utils/link.js @@ -0,0 +1,30 @@ + +module.exports = link +link.ifExists = linkIfExists + +var fs = require("graceful-fs") + , chain = require("slide").chain + , mkdir = require("./mkdir-p.js") + , rm = require("rimraf") + , log = require("./log.js") + , path = require("path") + , relativize = require("./relativize.js") + , npm = require("../npm.js") + +function linkIfExists (from, to, gently, cb) { + fs.stat(from, function (er) { + if (er) return cb() + link(from, to, gently, cb) + }) +} + +function link (from, to, gently, cb) { + if (typeof cb !== "function") cb = gently, gently = null + if (npm.config.get("force")) gently = false + chain + ( [ [fs, "stat", from] + , [rm, to, { gently: gently }] + , [mkdir, path.dirname(to)] + , [fs, "symlink", relativize(from, to), to] ] + , cb) +} |