1 |
|
2 | const chalk = require('chalk');
|
3 | const cl = require('chalkline');
|
4 | const Table = require('cli-table');
|
5 | const pkgInfo = require('../package.json');
|
6 |
|
7 | const CLI_ICON_FAIL = '✘';
|
8 | const CLI_ICON_PASS = '✓';
|
9 | const CLI_ICON_WARN = '♺';
|
10 | const CLI_ICON_NOTE = '✏︎';
|
11 |
|
12 | const messenger = {
|
13 | version: () => {
|
14 | return pkgInfo.version;
|
15 | },
|
16 | name: () => {
|
17 | return pkgInfo.name;
|
18 | },
|
19 | log: (...params) => {
|
20 | console.log(...params);
|
21 | return params;
|
22 | },
|
23 | info: (...params) => {
|
24 | console.log(chalk.cyan.bold(CLI_ICON_NOTE, ...params));
|
25 | return params;
|
26 | },
|
27 | note: (msg, ...params) => {
|
28 |
|
29 | console.log(msg, ...params);
|
30 | return params;
|
31 | },
|
32 | success: (...params) => {
|
33 | console.log(chalk.green.bold(CLI_ICON_PASS, ...params));
|
34 | return params;
|
35 | },
|
36 | warning: (...params) => {
|
37 | console.log(chalk.yellow.bold(CLI_ICON_WARN, ...params));
|
38 | return params;
|
39 | },
|
40 | error: (...params) => {
|
41 | console.log(chalk.red.bold(CLI_ICON_FAIL, ...params));
|
42 | return params;
|
43 | },
|
44 | table: (data) => {
|
45 | let table;
|
46 | let head = [];
|
47 | if (data.length > 0) {
|
48 | if (Array.isArray(data[0])) {
|
49 | header = data[0];
|
50 | data.splice(0,1);
|
51 | }
|
52 | else {
|
53 | header = Object.keys(data[0]);
|
54 | }
|
55 | header = header.map(function (item){
|
56 | return chalk.cyan.bold(item);
|
57 | });
|
58 | table = new Table({head: header});
|
59 |
|
60 | data.map((item) => {
|
61 | let values = Object.keys(item).map(key => item[key]);
|
62 | table.push(values);
|
63 | });
|
64 | console.log(table.toString());
|
65 | }
|
66 | },
|
67 | line: (color) => {
|
68 | if (color.length > 0) {
|
69 | try {
|
70 | eval(`cl.${color}()`);
|
71 | }
|
72 | catch (e) {
|
73 | console.error(chalk.bgRed.bold(`Invalid Color: ${color}`));
|
74 | }
|
75 | }
|
76 | },
|
77 | dir: (data) => {
|
78 | console.dir(data);
|
79 | return data;
|
80 | }
|
81 | };
|
82 |
|
83 | module.exports = messenger;
|