printTable Command
CommandBox has a helper for printing ASCII Art tables in your custom commands and task runners called print.table(). We've taken this a step further and wrapped the table printer utility in a new command so you can use it from the CLI directly. The printTable command will accept ANY data in as JSON and it will marshal it into a query for you. This means it can be a query, an array of structs, an array or arrays, and more. You can now get quick and easy visualization of any data right from the CLI or in builds.

Parameters

  • data - JSON serialized query, array of structs, or array of arrays to represent in table form
  • includeHeaders - A list of headers to include.
  • headerNames - A list/array of column headers to use instead of the default specifically for array of arrays
  • debug - Only print out the names of the columns and the first row values
When using an array of arrays and not specifying headerNames, the columns will be named col_1, col_2, col_3, etc...

Examples

1
# array of structs
2
printTable [{a:1,b:2},{a:3,b:4},{a:5,b:6}]
3
4
╔═══╤═══╗
5
║ a │ b ║
6
╠═══╪═══╣
7
12
8
╟───┼───╢
9
34
10
╟───┼───╢
11
56
12
╚═══╧═══╝
Copied!
1
# array of arrays
2
printTable data=[[1,2],[3,4],[5,6]] headerNames=foo,bar
3
4
╔═════╤═════╗
5
║ foo │bar ║
6
╠═════╪═════╣
7
1 │2 ║
8
╟─────┼─────╢
9
3 │4 ║
10
╟─────┼─────╢
11
5 │6 ║
12
╚═════╧═════╝
Copied!
1
# Query object
2
#extensionlist | printTable name,version
3
4
╔═════════════════════════════════════════╤═══════════════════╗
5
║ name │ version ║
6
╠═════════════════════════════════════════╪═══════════════════╣
7
║ MySQL │ 8.0.19 ║
8
╟─────────────────────────────────────────┼───────────────────╢
9
║ Microsoft SQL Server │ 6.5.4 ║
10
╟─────────────────────────────────────────┼───────────────────╢
11
║ PostgreSQL │ 9.4.1212 ║
12
╟─────────────────────────────────────────┼───────────────────╢
13
║ Ajax Extension │ 1.0.0.3 ║
14
╚═════════════════════════════════════════╧═══════════════════╝
Copied!
1
# JSON list of all servers
2
server list --json | printTable name,host,port,status
3
4
╔══════════════════════════════╤═════════════════════════════╤═══════╤══════════╗
5
║ name │ host │ port │ status ║
6
╠══════════════════════════════╪═════════════════════════════╪═══════╪══════════╣
7
║ servicetest │ 127.0.0.1 │ 54427 │ stopped ║
8
╟──────────────────────────────┼─────────────────────────────┼───────┼──────────╢
9
║ servicetest2 │ 127.0.0.1 │ 52919 │ stopped ║
10
╟──────────────────────────────┼─────────────────────────────┼───────┼──────────╢
11
║ FRDemos │ 127.0.0.1 │ 50458 │ stopped ║
12
╚══════════════════════════════╧═════════════════════════════╧═══════╧══════════╝
Copied!

Terminal Width

If you are running inside a build server, the terminal width will use a default setting, which may be smaller than you wish. Terminal width can be overridden for entire CLI
1
config set terminalWidth=150
Copied!
or for a specific printTable command
1
#extensionlist | printTable width=150
Copied!
or for a specific print.table() call
1
print.table( data=qry, width=150 )
Copied!
Copy link
Edit on GitHub