1 |
|
2 | (function() {
|
3 | var fs, link, mkdirp, userHome;
|
4 |
|
5 | fs = require('fs-extra');
|
6 |
|
7 | mkdirp = require('mkdirp');
|
8 |
|
9 | userHome = require('user-home');
|
10 |
|
11 | link = function(opts) {
|
12 | var dest, dir;
|
13 | opts = opts || {};
|
14 | if (!opts.collection) {
|
15 | throw new Error("`collection` is required.");
|
16 | } else if (!opts.module) {
|
17 | throw new Error("`module` is required.");
|
18 | } else if (!opts.version) {
|
19 | throw new Error("`version` is required.");
|
20 | } else if (!opts.src) {
|
21 | throw new Error("`src` is required.");
|
22 | }
|
23 | dir = userHome + "/.autocode/module/" + opts.collection + "/" + opts.module;
|
24 | dest = dir + "/" + opts.version;
|
25 | if (fs.existsSync(dest)) {
|
26 | if (opts.force !== true) {
|
27 | throw new Error("Module already installed at: " + dest + ". Use -f to force link, but be careful: this entire directory will be destroyed.");
|
28 | }
|
29 | fs.removeSync(dest);
|
30 | }
|
31 | if (!fs.existsSync(dir)) {
|
32 | mkdirp.sync(dir);
|
33 | }
|
34 | console.log("Linking " + opts.collection + "." + opts.module + "...");
|
35 | console.log("Source: " + opts.src);
|
36 | console.log("Destination: " + dest);
|
37 | fs.symlinkSync(opts.src, dest);
|
38 | return console.log("Done.");
|
39 | };
|
40 |
|
41 | module.exports = link;
|
42 |
|
43 | }).call(this);
|