-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.js
More file actions
114 lines (97 loc) · 3.41 KB
/
index.js
File metadata and controls
114 lines (97 loc) · 3.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#!/usr/bin/env node
var q = require("q");
var inquirer = require("inquirer");
var program = require('commander');
var exec = require('child-process-promise').exec;
var utils = require('./lib/utils');
program.version('0.1.0');
program
.option('-r --replace', 'Replace with original packages (npm install)')
.option('-a --all', 'Unlink all linked packages');
program
.command('list')
.description('Show all linked packages in your project')
.action(function () {
let linkedModules = utils.findSymLinks('./node_modules');
if (linkedModules === null) {
console.log(`It looks like it's not a valid npm package - couldn't find node_modules directory here`);
return;
}
console.log('Currently linked packages to this one\n');
console.log(' ' + linkedModules.join('\n '));
});
program
.command('link')
.description('Link chosen packages from available ones')
.action(function () {
utils.getGloballyLinkedPackages().then(function (globalLinkedModules) {
inquirer.prompt({
message: 'Which package you want to link?',
type: 'checkbox',
name: 'packages',
choices: globalLinkedModules
}, function (answer) {
if (answer.packages.length == 0) {
return;
}
q.all(answer.packages.map(function (module) {
return exec('npm link ' + module);
})).then(function () {
console.log('Successfully linked all packages');
}).catch(function (err) {
console.log('Error', err);
});
});
});
});
program
.command('unlink')
.description('Unlink chosen packages from already linked ones')
.action(function () {
utils.getLocallyLinkedPackages()
.then(function (linkedPackages) {
if (program.all) {
return q.resolve(linkedPackages);
} else {
return askForPackagesToUnlink(linkedPackages);
}
})
.then(function (packages) {
if (packages.length == 0) {
return;
}
return q.all(packages.map(function (module) {
return exec('npm unlink ' + module);
})).then(function () {
return packages;
});
})
.then(function (packages) {
if (!program.replace) {
return;
}
return q.all(packages.map(function (module) {
return exec('npm install ' + module);
}));
console.log('ddd', packages);
})
});
program
.command('reset')
.description('Unlink all linked packages and replace with original ones (npm install)')
.action(function () {
return exec('dh unlink --all --replace');
});
program.parse(process.argv);
function askForPackagesToUnlink(linkedPackages) {
var deferred = q.defer();
inquirer.prompt({
message: 'Which package you want to unlink?',
type: 'checkbox',
name: 'packages',
choices: linkedPackages
}, function (answer) {
return deferred.resolve(answer.packages);
});
return deferred.promise;
}