Skip to content

Commit f998002

Browse files
committed
Add pretty table flag
1 parent d689a6d commit f998002

5 files changed

Lines changed: 131 additions & 863 deletions

File tree

bin/nc.js

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ program
2525
.option("-h, --id <type>", "Id")
2626
.option("-m, --image <type>,", "Image")
2727
.option("-n, --instance <type>,", "Instance")
28+
.option("-pr, --pretty,", "Display JSON output in a 'pretty' table structure")
2829
.parse(process.argv);
2930

3031
Services(program, spinner);

lib/helper.js

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,58 @@ const fs = require("fs");
33
const figlet = require("figlet");
44
const chalk = require("chalk");
55
const path = "./.nc.config.js";
6+
const Table = require("cli-table");
7+
8+
/**
9+
* Display logger output as table (--pretty)
10+
* @param {*} data
11+
*/
12+
let createTable = data => {
13+
let tableStyle = {
14+
chars: {
15+
top: "═",
16+
"top-mid": "╤",
17+
"top-left": "╔",
18+
"top-right": "╗",
19+
bottom: "═",
20+
"bottom-mid": "╧",
21+
"bottom-left": "╚",
22+
"bottom-right": "╝",
23+
left: "║",
24+
"left-mid": "╟",
25+
mid: "─",
26+
"mid-mid": "┼",
27+
right: "║",
28+
"right-mid": "╢",
29+
middle: "│"
30+
}
31+
};
32+
33+
try {
34+
let table = new Table(tableStyle);
35+
let header = [];
36+
let body = [];
37+
38+
// Creates header
39+
for (column in data) {
40+
header.push(column);
41+
}
42+
table.push(header);
43+
44+
// Creates body
45+
for (const [key, value] of Object.entries(data)) {
46+
body.push(value);
47+
}
48+
table.push(body);
49+
50+
return table.toString();
51+
} catch {
52+
throw new Error(
53+
"This data cannot be displayed in a pretty table format:",
54+
data
55+
);
56+
}
57+
};
658

759
/**
860
* Display text as CLI logo
@@ -35,11 +87,16 @@ let logofied = text => {
3587
* @param {*} data
3688
* @param {*} error
3789
*/
38-
let logger = (data, error) => {
90+
let logger = (data, error, prettyEnabled) => {
91+
let parsedData = JSON.parse(JSON.stringify(data));
92+
let output = prettyEnabled
93+
? createTable(parsedData)
94+
: JSON.stringify(parsedData);
95+
3996
if (error) {
40-
console.log(chalk.red(`${JSON.stringify(data, null, 2)}`));
97+
console.log(chalk.red(output));
4198
} else {
42-
console.log(chalk.green(`${JSON.stringify(data, null, 2)}`));
99+
console.log(chalk.green(output));
43100
}
44101
};
45102

lib/services.js

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -46,18 +46,18 @@ function Services(program, spinner) {
4646
},
4747
(error, data) => {
4848
if (error) {
49-
logger(error, true);
49+
logger(error, true, program.pretty);
5050
}
51-
logger(data, null);
51+
logger(data, null, program.pretty);
5252
}
5353
);
5454
break;
5555
case "list":
5656
compute.listInstances({}, (error, data) => {
5757
if (error) {
58-
logger(error, true);
58+
logger(error, true, program.pretty);
5959
}
60-
logger(data, null);
60+
logger(data, null, program.pretty);
6161
});
6262
break;
6363
case "stop":
@@ -67,9 +67,9 @@ function Services(program, spinner) {
6767
},
6868
(error, data) => {
6969
if (error) {
70-
logger(error, true);
70+
logger(error, true, program.pretty);
7171
}
72-
logger(data, null);
72+
logger(data, null, program.pretty);
7373
}
7474
);
7575
break;
@@ -80,9 +80,9 @@ function Services(program, spinner) {
8080
},
8181
(error, data) => {
8282
if (error) {
83-
logger(error, true);
83+
logger(error, true, program.pretty);
8484
}
85-
logger(data, null);
85+
logger(data, null, program.pretty);
8686
}
8787
);
8888
break;
@@ -93,9 +93,9 @@ function Services(program, spinner) {
9393
},
9494
(error, data) => {
9595
if (error) {
96-
logger(error, true);
96+
logger(error, true, program.pretty);
9797
}
98-
logger(data, null);
98+
logger(data, null, program.pretty);
9999
}
100100
);
101101
break;
@@ -106,9 +106,9 @@ function Services(program, spinner) {
106106
},
107107
(error, data) => {
108108
if (error) {
109-
logger(error, true);
109+
logger(error, true, program.pretty);
110110
}
111-
logger(data, null);
111+
logger(data, null, program.pretty);
112112
}
113113
);
114114
break;
@@ -129,24 +129,24 @@ function Services(program, spinner) {
129129
ACL: "public-read"
130130
},
131131
(error, data) => {
132-
logger(data, null);
132+
logger(data, null, program.pretty);
133133
}
134134
);
135135
break;
136136
case "list":
137137
storage.listStorage({}, (error, data) => {
138138
if (error) {
139-
logger(error, true);
139+
logger(error, true, program.pretty);
140140
}
141-
logger(data, null);
141+
logger(data, null, program.pretty);
142142
});
143143
break;
144144
case "upload":
145145
storage.uploadToStorage({}, (error, data) => {
146146
if (error) {
147-
logger(error, true);
147+
logger(error, true, program.pretty);
148148
}
149-
logger(data, null);
149+
logger(data, null, program.pretty);
150150
});
151151
break;
152152
case "delete":
@@ -156,9 +156,9 @@ function Services(program, spinner) {
156156
},
157157
(error, data) => {
158158
if (error) {
159-
logger(error, true);
159+
logger(error, true, program.pretty);
160160
}
161-
logger(data, null);
161+
logger(data, null, program.pretty);
162162
}
163163
);
164164
break;
@@ -175,33 +175,33 @@ function Services(program, spinner) {
175175
case "create":
176176
database.createNewItem(option, (error, data) => {
177177
if (error) {
178-
logger(error, true);
178+
logger(error, true, program.pretty);
179179
}
180-
logger(data, null);
180+
logger(data, null, program.pretty);
181181
});
182182
break;
183183
case "query":
184184
database.query(option, (error, data) => {
185185
if (error) {
186-
logger(error, true);
186+
logger(error, true, program.pretty);
187187
}
188-
logger(data, null);
188+
logger(data, null, program.pretty);
189189
});
190190
break;
191191
case "delete":
192192
database.delete(option, (error, data) => {
193193
if (error) {
194-
logger(error, true);
194+
logger(error, true, program.pretty);
195195
}
196-
logger(data, null);
196+
logger(data, null, program.pretty);
197197
});
198198
break;
199199
case "update":
200200
database.updateItem(option, (error, data) => {
201201
if (error) {
202-
logger(error, true);
202+
logger(error, true, program.pretty);
203203
}
204-
logger(data, null);
204+
logger(data, null, program.pretty);
205205
});
206206
break;
207207

@@ -221,9 +221,9 @@ function Services(program, spinner) {
221221
},
222222
(error, data) => {
223223
if (error) {
224-
logger(error, true);
224+
logger(error, true, program.pretty);
225225
}
226-
logger(data, null);
226+
logger(data, null, program.pretty);
227227
}
228228
);
229229
break;
@@ -234,9 +234,9 @@ function Services(program, spinner) {
234234
},
235235
(error, data) => {
236236
if (error) {
237-
logger(error, true);
237+
logger(error, true, program.pretty);
238238
}
239-
logger(data, null);
239+
logger(data, null, program.pretty);
240240
}
241241
);
242242
break;
@@ -248,9 +248,9 @@ function Services(program, spinner) {
248248
},
249249
(error, data) => {
250250
if (error) {
251-
logger(error, true);
251+
logger(error, true, program.pretty);
252252
}
253-
logger(data, null);
253+
logger(data, null, program.pretty);
254254
}
255255
);
256256
break;
@@ -262,9 +262,9 @@ function Services(program, spinner) {
262262
},
263263
(error, data) => {
264264
if (error) {
265-
logger(error, true);
265+
logger(error, true, program.pretty);
266266
}
267-
logger(data, null);
267+
logger(data, null, program.pretty);
268268
}
269269
);
270270
break;
@@ -294,18 +294,18 @@ function Services(program, spinner) {
294294
},
295295
(error, data) => {
296296
if (error) {
297-
logger(error, true);
297+
logger(error, true, program.pretty);
298298
}
299-
logger(data, null);
299+
logger(data, null, program.pretty);
300300
}
301301
);
302302
break;
303303
case "list":
304304
network.list({}, (error, data) => {
305305
if (error) {
306-
logger(error, true);
306+
logger(error, true, program.pretty);
307307
}
308-
logger(data, null);
308+
logger(data, null, program.pretty);
309309
});
310310
break;
311311
case "delete":
@@ -315,9 +315,9 @@ function Services(program, spinner) {
315315
},
316316
(error, data) => {
317317
if (error) {
318-
logger(error, true);
318+
logger(error, true, program.pretty);
319319
}
320-
logger(data, null);
320+
logger(data, null, program.pretty);
321321
}
322322
);
323323
break;
@@ -334,9 +334,9 @@ function Services(program, spinner) {
334334
},
335335
(error, data) => {
336336
if (error) {
337-
logger(error, true);
337+
logger(error, true, program.pretty);
338338
}
339-
logger(data, null);
339+
logger(data, null, program.pretty);
340340
}
341341
);
342342
break;
@@ -352,9 +352,9 @@ function Services(program, spinner) {
352352
},
353353
(error, data) => {
354354
if (error) {
355-
logger(error, true);
355+
logger(error, true, program.pretty);
356356
}
357-
logger(data, null);
357+
logger(data, null, program.pretty);
358358
}
359359
);
360360
break;
@@ -363,37 +363,37 @@ function Services(program, spinner) {
363363
{ CallerReference: program.cr, Name: program.name },
364364
(error, data) => {
365365
if (error) {
366-
logger(error, true);
366+
logger(error, true, program.pretty);
367367
}
368-
logger(data, null);
368+
logger(data, null, program.pretty);
369369
}
370370
);
371371
break;
372372
case "listz":
373373
network.listZones({}, (error, data) => {
374374
if (error) {
375-
logger(error, true);
375+
logger(error, true, program.pretty);
376376
}
377-
logger(data, null);
377+
logger(data, null, program.pretty);
378378
});
379379
break;
380380
case "deletez":
381381
network.deleteZone(
382382
{ Id: `/hostedzone/${program.id}` },
383383
(error, data) => {
384384
if (error) {
385-
logger(error, true);
385+
logger(error, true, program.pretty);
386386
}
387-
logger(data, null);
387+
logger(data, null, program.pretty);
388388
}
389389
);
390390
break;
391391
case "record":
392392
network.changeRecordSets({}, (error, data) => {
393393
if (error) {
394-
logger(error, true);
394+
logger(error, true, program.pretty);
395395
}
396-
logger(data, null);
396+
logger(data, null, program.pretty);
397397
});
398398
break;
399399
default:

0 commit comments

Comments
 (0)