diff --git a/bin/nc.js b/bin/nc.js old mode 100644 new mode 100755 index 39d21f3..2b043d0 --- a/bin/nc.js +++ b/bin/nc.js @@ -20,6 +20,7 @@ program .option("-r, --cr ", "Caller Reference") .option("-z, --name ", "Name") .option("-p, --port ", "Port") + .option("--pretty", "Prettify JSON output for arrays") .option("-y, --key ", "Key") .option("-u, --value ", "Value") .option("-h, --id ", "Id") diff --git a/lib/helper.js b/lib/helper.js index 4269c36..02e9324 100644 --- a/lib/helper.js +++ b/lib/helper.js @@ -3,6 +3,7 @@ const fs = require("fs"); const figlet = require("figlet"); const chalk = require("chalk"); const path = "./.nc.config.js"; +const Table = require("cli-table3"); /** * Display text as CLI logo @@ -35,11 +36,22 @@ let logofied = text => { * @param {*} data * @param {*} error */ -let logger = (data, error) => { +let logger = (data, error, pretty) => { + let table; + if (pretty && Array.isArray(data)) { + table = new Table(); + table.push(...data); + } if (error) { - console.log(chalk.red(`${JSON.stringify(data, null, 2)}`)); + console.log( + chalk.red(`${pretty ? table.toString() : JSON.stringify(data, null, 2)}`) + ); } else { - console.log(chalk.green(`${JSON.stringify(data, null, 2)}`)); + console.log( + chalk.green( + `${pretty ? table.toString() : JSON.stringify(data, null, 2)}` + ) + ); } }; diff --git a/lib/services.js b/lib/services.js index 499f371..b9174dd 100644 --- a/lib/services.js +++ b/lib/services.js @@ -17,9 +17,8 @@ const options = { }; function Services(program, spinner) { - if (program.about) { - logofied("NodeCloud CLI"); - } + const pretty = !!program.pretty; + if (program.init) { let Initialize = new Init(program, spinner); Initialize.selectProvider(); @@ -46,18 +45,18 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; case "list": compute.listInstances({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "stop": @@ -67,9 +66,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -80,9 +79,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -93,9 +92,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -106,9 +105,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -129,24 +128,24 @@ function Services(program, spinner) { ACL: "public-read" }, (error, data) => { - logger(data, null); + logger(data, null, pretty); } ); break; case "list": storage.listStorage({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "upload": storage.uploadToStorage({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "delete": @@ -156,9 +155,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -175,33 +174,33 @@ function Services(program, spinner) { case "create": database.createNewItem(option, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "query": database.query(option, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "delete": database.delete(option, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "update": database.updateItem(option, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; @@ -221,9 +220,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -234,9 +233,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -248,9 +247,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -262,9 +261,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -294,18 +293,18 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; case "list": network.list({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "delete": @@ -315,9 +314,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -334,9 +333,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -352,9 +351,9 @@ function Services(program, spinner) { }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; @@ -363,18 +362,18 @@ function Services(program, spinner) { { CallerReference: program.cr, Name: program.name }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; case "listz": network.listZones({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; case "deletez": @@ -382,18 +381,18 @@ function Services(program, spinner) { { Id: `/hostedzone/${program.id}` }, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); } ); break; case "record": network.changeRecordSets({}, (error, data) => { if (error) { - logger(error, true); + logger(error, true, pretty); } - logger(data, null); + logger(data, null, pretty); }); break; default: diff --git a/package.json b/package.json index 3644bfd..be99bd5 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "private": false, "dependencies": { "chalk": "^2.4.2", + "cli-table3": "^0.5.1", "commander": "^2.20.0", "detect-installed": "^2.0.4", "figlet": "^1.2.3", diff --git a/yarn.lock b/yarn.lock index 208346a..6871f11 100644 --- a/yarn.lock +++ b/yarn.lock @@ -745,6 +745,16 @@ cli-spinners@^2.0.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== +cli-table3@^0.5.1: + version "0.5.1" + resolved "https://registry.npm.taobao.org/cli-table3/download/cli-table3-0.5.1.tgz#0252372d94dfc40dbd8df06005f48f31f656f202" + integrity sha1-AlI3LZTfxA29jfBgBfSPMfZW8gI= + dependencies: + object-assign "^4.1.0" + string-width "^2.1.1" + optionalDependencies: + colors "^1.1.2" + cli-width@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.0.tgz#ff19ede8a9a5e579324147b0c11f0fbcbabed639" @@ -790,6 +800,11 @@ color-name@1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" +colors@^1.1.2: + version "1.4.0" + resolved "https://registry.npm.taobao.org/colors/download/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha1-xQSRR51MG9rtLJztMs98fcI2D3g= + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"