1 | 'use strict';
|
2 |
|
3 | const inquirer = require('inquirer'),
|
4 | spawn = require('child_process').spawn,
|
5 | T = require('../lib/tools'),
|
6 | LoadingORA = require('../lib/loadProgress').LoadingORA,
|
7 | cliSpinners = require('../lib/loadProgress').cliSpinners,
|
8 | Gupack = require('../lib/config/gupack');
|
9 |
|
10 | function getSourceDir() {
|
11 | let gupack = new Gupack(T.getConfig());
|
12 | return gupack.sourceDir;
|
13 | }
|
14 |
|
15 | function install() {
|
16 | runSwap(getSourceDir(), null, 'Installing npm package......', '√ Installed Done');
|
17 | }
|
18 |
|
19 | function uninstall() {
|
20 | runSwap(getSourceDir(), null, 'Uninstalling npm package......', '√ Uninstalled Done');
|
21 | }
|
22 |
|
23 | function update() {
|
24 | runSwap(getSourceDir(), null, 'Updating npm package......', '√ Updated Done');
|
25 | }
|
26 |
|
27 | function runSwap(cwdir, arg, startText, endText) {
|
28 | cwdir = cwdir || process.cwd();
|
29 |
|
30 | arg = arg || process.argv.slice(2) || [];
|
31 | arg = arg.filter(a => {
|
32 | return !/^-+/.test(a);
|
33 | });
|
34 | arg = arg.concat(
|
35 | process.argv.slice(2).filter(a => {
|
36 | return /^-+/.test(a);
|
37 | })
|
38 | );
|
39 |
|
40 | startText = startText || '→ installing npm packages ......';
|
41 | endText = endText || '√ installed done';
|
42 |
|
43 | let loadPrg = new LoadingORA();
|
44 | loadPrg.start(startText);
|
45 |
|
46 | let cmd = spawn(T.cmdify('npm'), arg, { stdio: 'pipe', cwd: cwdir });
|
47 | cmd.on('close', function() {
|
48 | loadPrg.stop(endText);
|
49 | });
|
50 | cmd.stdout.on('data', (err, data) => {
|
51 | loadPrg.test(data.toString());
|
52 | });
|
53 | }
|
54 |
|
55 | module.exports = {
|
56 | install,
|
57 | uninstall,
|
58 | update,
|
59 | runSwap
|
60 | };
|