All pages
Powered by GitBook
1 of 1

Loading...

What's New in 5.3.1

Updated bundled Java libraries

  • JLine - 3.19.0

  • jGit - 5.11.0.202103091610-r

  • Launch4j - 3.14

  • JANSI - 2.3.2

Recursive jar scanning libDirs

When you configure libDirs for a server, CommandBox used to only load jar files found in the root. Now it will include sub directories which gives you more flexibility around how to install your jars.

New printTable Command

In the previous release, we introduced a new helper for printing ASCII Art tables in your custom commands and task runners. We've taken this a step further and wrapped the table printer utiilty in a new command so you can use it from the CLI directly. We've also expanded its functionality to accept ANY data in as JSON and it will marshall 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.

New sql command for on-the-fly manipulation of data

As if the previous command isn't cool enough, we've also added a new "sql" command which will also accept any sort of data as JSON, marshall it into a query object and allow you to alias, filter, order, and limit the rows on the fly using CFML's query of queries!

The sql command works very nicely with the new tablePrinter command, and truly makes JSON a first class citizen of the CommandBox CLI.

Small change to print.table() helper

We've made a small adjustment to the print.table() helper that was introduced in CommandBox 5.3.1 as follows. The old method signature is

And the new method signature is:

The parameters to the new printTable command matches the NEW method signature of the print.table() helper as well.

Format XML in REPL

When working with XML in the REPL, formatting is now applied when the XML is printed out to the console, making it easier to read (same as JSON)

Release Notes

Bug

Server stop doesn't message user when it fails

Stop loading cfusion/lib in system class loader

5.3.0 errors with commandbox-dotenv 1.x versions due to WireBox change

When building Lucee war from local jars, seeded web.xml file is ignored

Table printer error with no rows

update '{slug}' fails as it is trying to print the package version and its dependencies.

Relative Web Alias Behavior (regression)

jq doesn't resolve file paths to current working directory

CFEngine adobe - Could not initialize class coldfusion.vfs.VFile when using s3 protocol

Improvement

Improve performance of piping large strings to "cfml" command

Format XML in REPL

Change default CLI JSON representation of query to array of structs

Allow upgrade command to pull stable versions when CLI is a prerelease version

Update bundled java libraries

app.libDirs does not load jars/classes recursively from sub folders

Allow for relative URLs when defining trayoption elements

Add Libraries To Runwar Necessary For URLRewrite Proxy

New Feature

New "printTable" command to add CLI usage of table printer

New "sql" command to filter tabular data with SQL

Add --verbose to 'server stop' to see raw output

Add printTable command that proxies to print.table() helper

COMMANDBOX-1320
COMMANDBOX-1319
COMMANDBOX-1318
COMMANDBOX-1314
COMMANDBOX-1311
COMMANDBOX-1310
COMMANDBOX-1308
COMMANDBOX-1307
COMMANDBOX-1303
COMMANDBOX-1328
COMMANDBOX-1317
COMMANDBOX-1316
COMMANDBOX-1306
COMMANDBOX-1305
COMMANDBOX-1302
COMMANDBOX-1210
COMMANDBOX-1194
COMMANDBOX-1324
COMMANDBOX-1323
COMMANDBOX-1321
COMMANDBOX-1309
# Jar installs to lib/jline-3.0.0.M1/jline-3.0.0.M1.jar
install "jar:https://search.maven.org/remotecontent?filepath=jline/jline/3.0.0.M1/jline-3.0.0.M1.jar"

# Load up the jar when the server starts
server set app.libDirs=lib
# array of structs
printTable [{a:1,b:2},{a:3,b:4},{a:5,b:6}]

╔═══╀═══╗
β•‘ a β”‚ b β•‘
╠═══β•ͺ═══╣
β•‘ 1 β”‚ 2 β•‘
β•Ÿβ”€β”€β”€β”Όβ”€β”€β”€β•’
β•‘ 3 β”‚ 4 β•‘
β•Ÿβ”€β”€β”€β”Όβ”€β”€β”€β•’
β•‘ 5 β”‚ 6 β•‘
β•šβ•β•β•β•§β•β•β•β•

# array of arrays
printTable data=[[1,2],[3,4],[5,6]] headerNames=foo,bar

╔═════╀═════╗
β•‘ foo β”‚ bar β•‘
╠═════β•ͺ═════╣
β•‘ 1   β”‚ 2   β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β•’
β•‘ 3   β”‚ 4   β•‘
β•Ÿβ”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β•’
β•‘ 5   β”‚ 6   β•‘
β•šβ•β•β•β•β•β•§β•β•β•β•β•β•

# Query object
#extensionlist | printTable name,version

╔═════════════════════════════════════════╀═══════════════════╗
β•‘ name                                    β”‚ version           β•‘
╠═════════════════════════════════════════β•ͺ═══════════════════╣
β•‘ MySQL                                   β”‚ 8.0.19            β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ Microsoft SQL Server (Vendor Microsoft) β”‚ 6.5.4             β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ PostgreSQL                              β”‚ 9.4.1212          β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ Ajax Extension                          β”‚ 1.0.0.3           β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•

# JSON list of all servers
server list --json | printTable name,host,port,status

╔══════════════════════════════╀═════════════════════════════╀═══════╀═════════╗
β•‘ name                         β”‚ host                        β”‚ port  β”‚ status  β•‘
╠══════════════════════════════β•ͺ═════════════════════════════β•ͺ═══════β•ͺ═════════╣
β•‘ servicetest                  β”‚ 127.0.0.1                   β”‚ 54427 β”‚ stopped β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ servicetest2                 β”‚ 127.0.0.1                   β”‚ 52919 β”‚ stopped β•‘
β•Ÿβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β•’
β•‘ FRDemos                      β”‚ 127.0.0.1                   β”‚ 50458 β”‚ stopped β•‘
β•šβ•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•§β•β•β•β•β•β•β•β•β•β•
# filter, sort, limit, and select extensions installed into the CLI (output as table)
#extensionlist  | sql select=id,name where="name like '%sql%'" orderby=name limit=3 | printTable

# order and select JSON data from a file (output as JSON)
cat myfile.json | sql select=col1,col2 orderby=col2

# limit JSON (output as table)
sql data=[{a:1,b:2},{a:3,b:4},{a:5,b:6}] where="a > 1" | printTable
public string function print(
	required any headers,
	array data=[],
	string includeHeaders        
) {
public string function print(
	required any data=[],
	any includedHeaders="",
	any headerNames="",
	boolean debug=false
) {
❯ repl "XMLParse( '<root><brad>wood</brad></root>' )"

<?xml version="1.0" encoding="utf-8"?><root>
  <brad>wood</brad>
</root>