node-power-user 0.0.30 → 0.0.31

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/npu CHANGED
@@ -1,6 +1,7 @@
1
1
  #!/usr/bin/env node
2
- let Main = new (require('../dist/index.js'))(process.argv);
2
+ const argv = require('yargs').argv;
3
+ const Main = new (require('../dist/index.js'))(argv);
3
4
  (async function() {
4
5
  'use strict';
5
- await Main.process(process.argv);
6
+ await Main.process(argv);
6
7
  }());
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ const { isEqual } = require('lodash');
17
17
  const semverIsEqual = require('semver/functions/eq')
18
18
  const semverCoerce = require('semver/functions/coerce')
19
19
  const table = require('table').table;
20
+ const ProgressBar = require('cli-progress');
20
21
  const Npm = require('npm-api');
21
22
  const os = require('os');
22
23
 
@@ -26,11 +27,11 @@ function Main() {
26
27
 
27
28
  }
28
29
 
29
- Main.prototype.process = async function (args) {
30
- const self = this;
31
- args = args || process.argv
32
- self.options = {};
33
- self.argv = argv;
30
+ Main.prototype.process = async function (options) {
31
+ const self = this;
32
+ self.options = options || {};
33
+
34
+ // console.log('--process.env', process.env);
34
35
 
35
36
  try {
36
37
  self.npu_packageJSON = require('../package.json');
@@ -42,6 +43,8 @@ const self = this;
42
43
  self.proj_path = process.cwd();
43
44
  self.proj_packageJSONPath = path.resolve(self.proj_path, './package.json');
44
45
  self.proj_packageJSON = require(self.proj_packageJSONPath);
46
+ self.proj_packageJSON.allDependencies = _.merge({}, self.proj_packageJSON.peerDependencies, self.proj_packageJSON.devDependencies, self.proj_packageJSON.dependencies);
47
+ self.proj_packageJSON.allDependenciesKeys = Object.keys(self.proj_packageJSON.allDependencies);
45
48
  } catch (e) {
46
49
  self.proj_packageJSON = {
47
50
  name: 'Unknown Name',
@@ -49,43 +52,50 @@ const self = this;
49
52
  dependencies: {},
50
53
  devDependencies: {},
51
54
  peerDependencies: {},
55
+ allDependencies: {},
52
56
  }
53
57
  console.error(chalk.red(`This project does not contain a valid package.json file!: \n${e}`));
54
58
  }
55
59
 
56
- if (Array.isArray(args)) {
57
- for (var i = 0; i < args.length; i++) {
58
- self.options[args[i]] = true;
59
- }
60
- } else {
61
- Object.keys(args)
62
- .forEach((arg, i) => {
63
- self.options[arg] = args[arg];
64
- });
65
- }
60
+ // console.log('---args', args);
61
+ // if (Array.isArray(args)) {
62
+ // for (var i = 0; i < args.length; i++) {
63
+ // self.options[args[i]] = true;
64
+ // }
65
+ // } else {
66
+ // Object.keys(args)
67
+ // .forEach((arg, i) => {
68
+ // self.options[arg] = args[arg];
69
+ // });
70
+ // }
71
+ Object.keys(argv)
72
+ .forEach(arg => {
73
+ self.options[arg] = argv[arg]
74
+ });
66
75
 
67
- if (self.options.d || self.options.debug || self.options['-d'] || self.options['--debug']) {
68
- console.log('options:', self.options);
76
+ if (self.options.d || self.options.debug || process.env.NPU_LOG === 'true') {
77
+ console.log('argv', argv);
78
+ console.log('options', self.options);
69
79
  }
70
80
 
71
- if (self.options['wait'] || self.options['--wait']) {
72
- const time = parseInt(self.options['wait'] || self.options['--wait'] || 1000);
81
+ if (self.options.wait) {
82
+ const time = parseInt(typeof self.options.wait === 'number' ? self.options.wait : 1000);
73
83
  self.log(chalk.blue(`Waiting ${time}...`));
74
84
  await powertools.wait(time);
75
85
  self.log(chalk.green(`Done waiting`));
76
86
  }
77
87
 
78
- if (self.options.v || self.options.version || self.options['-v'] || self.options['--version']) {
88
+ if (self.options.v || self.options.version) {
79
89
  self.log(chalk.blue(`Node Power User is v${chalk.bold(self.npu_packageJSON.version)}`));
80
90
  return self.npu_packageJSON.version;
81
91
  }
82
92
 
83
- if (self.options.pv || self.options['project-version'] || self.options.project) {
93
+ if (self.options.pv || self.options.project || self.options['project-version']) {
84
94
  self.log(chalk.blue(`The current project (${chalk.bold(self.proj_packageJSON.name)}) is v${chalk.bold(self.proj_packageJSON.version)}`));
85
95
  return self.proj_packageJSON.version;
86
96
  }
87
97
 
88
- if (self.options.lp || self.options.listpackages || self.options['-lp'] || self.options['--listpackages']) {
98
+ if (self.options.lp || self.options.listpackages || self.options['list-packages']) {
89
99
  self.log(chalk.blue.bold(`Dependencies:`));
90
100
 
91
101
  Object.keys(self.proj_packageJSON.dependencies || {})
@@ -112,7 +122,7 @@ const self = this;
112
122
  };
113
123
  }
114
124
 
115
- if (self.options.out || self.options.outdated || self.options.match || self.options['-o'] || self.options['--outdated'] || self.options['--match']) {
125
+ if (self.options.out || self.options.outdated || self.options.match) {
116
126
  // self.log(chalk.blue.bold(`Outdated:`));
117
127
  // self.log(chalk.green(`name: package = installed`));
118
128
 
@@ -122,23 +132,24 @@ const self = this;
122
132
 
123
133
  const config = {
124
134
  columnDefault: {
125
- width: 10,
135
+ // width: 10,
126
136
  },
127
137
  header: {
128
138
  alignment: 'center',
129
139
  content: 'Outdated and mismatched packages',
130
140
  },
131
- }
141
+ }
142
+ const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
143
+ progress.start(self.proj_packageJSON.allDependenciesKeys.length, 0);
132
144
 
133
145
  const response = {};
134
146
 
135
- const depKeys = Object.keys(self.proj_packageJSON.dependencies || {});
136
-
137
147
  let bumpCommand = '';
138
-
139
- for (var i = 0; i < depKeys.length; i++) {
140
- const dep = depKeys[i];
141
- const packageVersion = _coerce(self.proj_packageJSON.dependencies[dep]);
148
+
149
+ for (var i = 0; i < self.proj_packageJSON.allDependenciesKeys.length; i++) {
150
+ progress.update(i);
151
+ const dep = self.proj_packageJSON.allDependenciesKeys[i];
152
+ const packageVersion = _coerce(self.proj_packageJSON.allDependencies[dep]);
142
153
  const installedVersion = _coerce(
143
154
  _getVersion(
144
155
  (await asyncCommand(`npm list ${dep} --depth=0 | grep ${dep}`))
@@ -190,6 +201,8 @@ const self = this;
190
201
  // .forEach((dep, i) => {
191
202
  // self.log(chalk.blue(`${dep} @ ${self.proj_packageJSON.devDependencies[dep]}`));
192
203
  // });
204
+
205
+ progress.stop();
193
206
 
194
207
  console.log(table(data, config));
195
208
 
@@ -214,7 +227,7 @@ const self = this;
214
227
  return response;
215
228
  }
216
229
 
217
- if (self.options.global || self.options['-g'] || self.options['--global']) {
230
+ if (self.options.global || self.options.g) {
218
231
  const parentPath = `/Users/${os.userInfo().username}/.nvm/versions/node`;
219
232
  const versions = jetpack.list(parentPath);
220
233
  const currentNode = process.versions.node;
@@ -236,17 +249,21 @@ const self = this;
236
249
 
237
250
  const config = {
238
251
  columnDefault: {
239
- width: 10,
252
+ // width: 10,
240
253
  },
241
254
  header: {
242
255
  alignment: 'center',
243
256
  content: `Global packages for v${parsed.version}`,
244
257
  },
245
- }
258
+ }
259
+ const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
260
+ progress.start(modules.length, 0);
246
261
 
247
262
  response[parsed.version] = {};
248
263
 
249
264
  for (var j = 0; j < modules.length; j++) {
265
+ progress.update(i, 0);
266
+
250
267
  const mod = modules[j];
251
268
  const packagePath = path.resolve(lib, mod, 'package.json');
252
269
  try {
@@ -274,6 +291,8 @@ const self = this;
274
291
  }
275
292
  }
276
293
 
294
+ progress.stop();
295
+
277
296
  console.log(table(data, config));
278
297
 
279
298
  } catch (e) {
@@ -285,11 +304,11 @@ const self = this;
285
304
  }
286
305
 
287
306
  if (self.options.clean) {
288
- const NPM_INSTALL_FLAG = self.options['--no-optional'] || self.options['-no-optional'] || self.options['no-optional'] ? '--no-optional' : ''
307
+ const NPM_INSTALL_FLAG = self.options['no-optional'] || self.options['nooptional'] ? '--no-optional' : ''
289
308
  const NPM_CLEAN = `rm -fr node_modules && rm -fr package-lock.json && npm cache clean --force && npm install ${NPM_INSTALL_FLAG} && npm rb`;
290
309
 
291
310
  self.log(chalk.blue(`Running: ${NPM_CLEAN}...`));
292
-
311
+
293
312
  return await asyncCommand(NPM_CLEAN)
294
313
  .then(r => {
295
314
  self.log(chalk.green(`Finished cleaning`));
@@ -308,7 +327,7 @@ const self = this;
308
327
  Main.prototype.log = function () {
309
328
  const self = this;
310
329
 
311
- if (self.options.lo !== false) {
330
+ if (self.options.log !== false) {
312
331
  console.log(...arguments);
313
332
  }
314
333
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "node-power-user",
3
- "version": "0.0.30",
3
+ "version": "0.0.31",
4
4
  "description": "Easy tools for every Node.js developer!",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -10,7 +10,8 @@
10
10
  },
11
11
  "scripts": {
12
12
  "test": "npm run prepare && ./node_modules/mocha/bin/mocha test/ --recursive --timeout=10000",
13
- "start": "npm run prepare && node -e 'new (require(`./dist/index.js`))().process()'",
13
+ "start": "npm run prepare && ./bin/npu",
14
+ "help": "echo 'npm start -- -v'",
14
15
  "prepare": "node -e 'require(`prepare-package`)()'"
15
16
  },
16
17
  "repository": {
@@ -30,6 +31,7 @@
30
31
  "homepage": "https://itwcreativeworks.com",
31
32
  "dependencies": {
32
33
  "chalk": "^4.1.2",
34
+ "cli-progress": "^3.11.2",
33
35
  "fs-jetpack": "^4.3.1",
34
36
  "inquirer": "^8.2.4",
35
37
  "json5": "^2.2.1",
@@ -49,4 +51,4 @@
49
51
  "mocha": "^8.4.0",
50
52
  "prepare-package": "^0.0.16"
51
53
  }
52
- }
54
+ }
package/src/index.js CHANGED
@@ -17,6 +17,7 @@ const { isEqual } = require('lodash');
17
17
  const semverIsEqual = require('semver/functions/eq')
18
18
  const semverCoerce = require('semver/functions/coerce')
19
19
  const table = require('table').table;
20
+ const ProgressBar = require('cli-progress');
20
21
  const Npm = require('npm-api');
21
22
  const os = require('os');
22
23
 
@@ -26,11 +27,11 @@ function Main() {
26
27
 
27
28
  }
28
29
 
29
- Main.prototype.process = async function (args) {
30
- const self = this;
31
- args = args || process.argv
32
- self.options = {};
33
- self.argv = argv;
30
+ Main.prototype.process = async function (options) {
31
+ const self = this;
32
+ self.options = options || {};
33
+
34
+ // console.log('--process.env', process.env);
34
35
 
35
36
  try {
36
37
  self.npu_packageJSON = require('../package.json');
@@ -42,6 +43,8 @@ const self = this;
42
43
  self.proj_path = process.cwd();
43
44
  self.proj_packageJSONPath = path.resolve(self.proj_path, './package.json');
44
45
  self.proj_packageJSON = require(self.proj_packageJSONPath);
46
+ self.proj_packageJSON.allDependencies = _.merge({}, self.proj_packageJSON.peerDependencies, self.proj_packageJSON.devDependencies, self.proj_packageJSON.dependencies);
47
+ self.proj_packageJSON.allDependenciesKeys = Object.keys(self.proj_packageJSON.allDependencies);
45
48
  } catch (e) {
46
49
  self.proj_packageJSON = {
47
50
  name: 'Unknown Name',
@@ -49,43 +52,50 @@ const self = this;
49
52
  dependencies: {},
50
53
  devDependencies: {},
51
54
  peerDependencies: {},
55
+ allDependencies: {},
52
56
  }
53
57
  console.error(chalk.red(`This project does not contain a valid package.json file!: \n${e}`));
54
58
  }
55
59
 
56
- if (Array.isArray(args)) {
57
- for (var i = 0; i < args.length; i++) {
58
- self.options[args[i]] = true;
59
- }
60
- } else {
61
- Object.keys(args)
62
- .forEach((arg, i) => {
63
- self.options[arg] = args[arg];
64
- });
65
- }
60
+ // console.log('---args', args);
61
+ // if (Array.isArray(args)) {
62
+ // for (var i = 0; i < args.length; i++) {
63
+ // self.options[args[i]] = true;
64
+ // }
65
+ // } else {
66
+ // Object.keys(args)
67
+ // .forEach((arg, i) => {
68
+ // self.options[arg] = args[arg];
69
+ // });
70
+ // }
71
+ Object.keys(argv)
72
+ .forEach(arg => {
73
+ self.options[arg] = argv[arg]
74
+ });
66
75
 
67
- if (self.options.d || self.options.debug || self.options['-d'] || self.options['--debug']) {
68
- console.log('options:', self.options);
76
+ if (self.options.d || self.options.debug || process.env.NPU_LOG === 'true') {
77
+ console.log('argv', argv);
78
+ console.log('options', self.options);
69
79
  }
70
80
 
71
- if (self.options['wait'] || self.options['--wait']) {
72
- const time = parseInt(self.options['wait'] || self.options['--wait'] || 1000);
81
+ if (self.options.wait) {
82
+ const time = parseInt(typeof self.options.wait === 'number' ? self.options.wait : 1000);
73
83
  self.log(chalk.blue(`Waiting ${time}...`));
74
84
  await powertools.wait(time);
75
85
  self.log(chalk.green(`Done waiting`));
76
86
  }
77
87
 
78
- if (self.options.v || self.options.version || self.options['-v'] || self.options['--version']) {
88
+ if (self.options.v || self.options.version) {
79
89
  self.log(chalk.blue(`Node Power User is v${chalk.bold(self.npu_packageJSON.version)}`));
80
90
  return self.npu_packageJSON.version;
81
91
  }
82
92
 
83
- if (self.options.pv || self.options['project-version'] || self.options.project) {
93
+ if (self.options.pv || self.options.project || self.options['project-version']) {
84
94
  self.log(chalk.blue(`The current project (${chalk.bold(self.proj_packageJSON.name)}) is v${chalk.bold(self.proj_packageJSON.version)}`));
85
95
  return self.proj_packageJSON.version;
86
96
  }
87
97
 
88
- if (self.options.lp || self.options.listpackages || self.options['-lp'] || self.options['--listpackages']) {
98
+ if (self.options.lp || self.options.listpackages || self.options['list-packages']) {
89
99
  self.log(chalk.blue.bold(`Dependencies:`));
90
100
 
91
101
  Object.keys(self.proj_packageJSON.dependencies || {})
@@ -112,7 +122,7 @@ const self = this;
112
122
  };
113
123
  }
114
124
 
115
- if (self.options.out || self.options.outdated || self.options.match || self.options['-o'] || self.options['--outdated'] || self.options['--match']) {
125
+ if (self.options.out || self.options.outdated || self.options.match) {
116
126
  // self.log(chalk.blue.bold(`Outdated:`));
117
127
  // self.log(chalk.green(`name: package = installed`));
118
128
 
@@ -122,23 +132,24 @@ const self = this;
122
132
 
123
133
  const config = {
124
134
  columnDefault: {
125
- width: 10,
135
+ // width: 10,
126
136
  },
127
137
  header: {
128
138
  alignment: 'center',
129
139
  content: 'Outdated and mismatched packages',
130
140
  },
131
- }
141
+ }
142
+ const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
143
+ progress.start(self.proj_packageJSON.allDependenciesKeys.length, 0);
132
144
 
133
145
  const response = {};
134
146
 
135
- const depKeys = Object.keys(self.proj_packageJSON.dependencies || {});
136
-
137
147
  let bumpCommand = '';
138
-
139
- for (var i = 0; i < depKeys.length; i++) {
140
- const dep = depKeys[i];
141
- const packageVersion = _coerce(self.proj_packageJSON.dependencies[dep]);
148
+
149
+ for (var i = 0; i < self.proj_packageJSON.allDependenciesKeys.length; i++) {
150
+ progress.update(i);
151
+ const dep = self.proj_packageJSON.allDependenciesKeys[i];
152
+ const packageVersion = _coerce(self.proj_packageJSON.allDependencies[dep]);
142
153
  const installedVersion = _coerce(
143
154
  _getVersion(
144
155
  (await asyncCommand(`npm list ${dep} --depth=0 | grep ${dep}`))
@@ -190,6 +201,8 @@ const self = this;
190
201
  // .forEach((dep, i) => {
191
202
  // self.log(chalk.blue(`${dep} @ ${self.proj_packageJSON.devDependencies[dep]}`));
192
203
  // });
204
+
205
+ progress.stop();
193
206
 
194
207
  console.log(table(data, config));
195
208
 
@@ -214,7 +227,7 @@ const self = this;
214
227
  return response;
215
228
  }
216
229
 
217
- if (self.options.global || self.options['-g'] || self.options['--global']) {
230
+ if (self.options.global || self.options.g) {
218
231
  const parentPath = `/Users/${os.userInfo().username}/.nvm/versions/node`;
219
232
  const versions = jetpack.list(parentPath);
220
233
  const currentNode = process.versions.node;
@@ -236,17 +249,21 @@ const self = this;
236
249
 
237
250
  const config = {
238
251
  columnDefault: {
239
- width: 10,
252
+ // width: 10,
240
253
  },
241
254
  header: {
242
255
  alignment: 'center',
243
256
  content: `Global packages for v${parsed.version}`,
244
257
  },
245
- }
258
+ }
259
+ const progress = new ProgressBar.SingleBar({}, ProgressBar.Presets.shades_classic);
260
+ progress.start(modules.length, 0);
246
261
 
247
262
  response[parsed.version] = {};
248
263
 
249
264
  for (var j = 0; j < modules.length; j++) {
265
+ progress.update(i, 0);
266
+
250
267
  const mod = modules[j];
251
268
  const packagePath = path.resolve(lib, mod, 'package.json');
252
269
  try {
@@ -274,6 +291,8 @@ const self = this;
274
291
  }
275
292
  }
276
293
 
294
+ progress.stop();
295
+
277
296
  console.log(table(data, config));
278
297
 
279
298
  } catch (e) {
@@ -285,11 +304,11 @@ const self = this;
285
304
  }
286
305
 
287
306
  if (self.options.clean) {
288
- const NPM_INSTALL_FLAG = self.options['--no-optional'] || self.options['-no-optional'] || self.options['no-optional'] ? '--no-optional' : ''
307
+ const NPM_INSTALL_FLAG = self.options['no-optional'] || self.options['nooptional'] ? '--no-optional' : ''
289
308
  const NPM_CLEAN = `rm -fr node_modules && rm -fr package-lock.json && npm cache clean --force && npm install ${NPM_INSTALL_FLAG} && npm rb`;
290
309
 
291
310
  self.log(chalk.blue(`Running: ${NPM_CLEAN}...`));
292
-
311
+
293
312
  return await asyncCommand(NPM_CLEAN)
294
313
  .then(r => {
295
314
  self.log(chalk.green(`Finished cleaning`));
@@ -308,7 +327,7 @@ const self = this;
308
327
  Main.prototype.log = function () {
309
328
  const self = this;
310
329
 
311
- if (self.options.lo !== false) {
330
+ if (self.options.log !== false) {
312
331
  console.log(...arguments);
313
332
  }
314
333
  };