CommandBox : CLI, Package Manager, REPL & More
6.2.0
6.2.0
  • Introduction
  • About This Book
  • Authors
  • Overview
  • Release History
    • 6.x Versions
      • What's New in 6.0.0
      • What's New in 6.1.0
      • What's New in 6.2.0
    • 5.x Versions
      • What's New in 5.9.1
      • What's New in 5.9.0
      • What's New in 5.8.0
      • What's New in 5.7.0
      • What's New in 5.6.0
      • What's New in 5.5.2
      • What's New in 5.5.1
      • What's New in 5.4.2
      • What's New in 5.4.1
      • What's New in 5.4.0
      • What's New in 5.3.1
      • What's New in 5.3.0
      • What's New in 5.2.1
      • What's New in 5.2.0
      • What's New in 5.1.1
      • What's New in 5.1.0
      • What's New in 5.0.0
    • 4.x Versions
      • What's new in 4.8.0
      • What's New in 4.7.0
      • What's New in 4.6.0
      • What's New in 4.5.0
      • What's New in 4.4.0
      • What's New in 4.3.0
      • What's New in 4.2.0
      • What's New in 4.1.0
      • What's New in 4.0.0
    • 3.x Versions
      • What's New in 3.9.0
      • What's New in 3.8.0
      • What's New in 3.7.0
      • What's New in 3.6.0
      • What's New in 3.5.0
      • What's New in 3.4.0
      • What's New in 3.3.0
      • What's New in 3.2.0
      • What's New in 3.1.1
      • What's New in 3.0.1
      • What's New in 3.0.0
    • 2.x Versions
      • What's New in 2.2.0
      • What's New in 2.1.1
      • What's New in 2.1.0
      • What's New in 2.0.0
    • 1.x Versions
      • What's in 1.0.0
  • Getting Started Guide
  • Setup
    • Requirements
    • Download
    • Installation
    • Light and Thin Binaries
    • Non-Oracle JREs
    • Upgrading
    • Common Errors
  • Usage
    • Execution
      • Recipes
      • CFML Files
        • Using a DB in CFML scripts
      • OS Binaries
      • CFML Functions
      • Exit Codes
    • Commands
    • Parameters
      • Escaping Special Characters
      • File Paths
      • Globbing Patterns
      • Piping into Commands
      • Expressions
    • Command Help
    • Environment Variables
    • System Settings
    • System Setting Expansion Namespaces
    • Ad-hoc Command Aliases
    • Default Command Parameters
    • REPL
    • Tab Completion
    • Interactive Shell Features
    • forEach Command
    • watch Command
    • jq Command
    • printTable Command
    • sql Command
    • Auto Update Checks
    • Bullet Train Prompt
    • 256 Color Support
    • A Little Fun
  • IDE Integrations
    • Sublime Text
    • Visual Studio Code
  • Config Settings
    • Module Settings
    • Proxy Settings
    • Endpoint Settings
    • Server Settings
    • JSON Settings
    • Misc Settings
    • Task Runner Settings
    • Setting Sync
    • Env Var Overrides
  • Embedded Server
    • Multi-Site Support
      • Defining Sites
      • Configuring Sites
      • Servlet Pass Predicate
      • Bindings
      • Multi-Site Examples
      • Pretty Diagrams
    • Multi-Engine Support
    • ModCFML Support
    • Server Versions
    • Start HTML Server
    • Offline Server Starts
    • Debugging Server Starts
    • Server Processes
    • Manage Servers
    • FusionReactor
    • Server Logs
    • Server Scripts
    • Configuring Your Server
      • Security
        • Basic Authentication
        • Client Cert Authentication
      • Server Profiles
      • Server Rules
        • Baked in Rules
        • Allowed Static Files
        • Rule Language
        • Rewrites Map
        • Custom Predicates/Handlers
        • Rule Examples
        • Debugging Server Rules
      • Bindings
        • Open Browser URL
        • Legacy Port & Host syntax
        • Legacy SSL Server Cert syntax
        • Legacy SSL Client Cert syntax
      • Proxy IP
      • HTTPS Redirect/HSTS
      • SSL Client Certs
      • URL Rewrites
      • Aliases
      • Custom Error Pages
      • MIME Types
      • Welcome Files
      • Custom Java Version
      • Adding Custom Libs
      • GZip Compression
      • REST Servlet
      • Performance Tuning
      • Undertow Options
      • Custom Tray Menus
      • JVM Args
      • Case Sensitivity of Web Server
      • Ad-hoc Env Vars
      • Ad-Hoc Java System Properties
      • server.json Env Var overrides
      • Server Home
      • web.xml Overrides
      • Console Log Layout
      • Resource Manager
      • Adobe CF Features
      • Warmup URLs
      • Experimental Features
    • External Web Server
    • Starting as a Service
    • Single Server Mode
    • Server.json
      • Working with server.json
      • Packaging Your Server
      • Using Multiple server.json Files
    • Install Lucee core/lex files
    • WebSocket Support
  • Package Management
    • Installing Packages
      • Installation Path
      • Installation Options
      • Advanced Installation
      • Debug Installation
    • Private Packages
    • System Modules
    • Code Endpoints
      • ForgeBox
      • HTTP(S)
      • File
      • Folder
      • Git
      • Java
      • S3
      • CFLib
      • Jar (via HTTP)
      • Lex (via HTTP or File)
      • Gist
    • Package Scripts
    • Dependencies
    • Semantic Versioning
    • Updating Packages
    • Creating Packages
      • Editing Package Properties
      • Publishing Lucee Extensions to ForgeBox
    • Artifacts
    • Box.json
      • Basic Package Data
      • Extended Package Data
      • Package URLs
      • Installation
      • Embedded Server
      • Dependencies
      • TestBox
    • Managing Version
  • Task Runners
    • Task Anatomy
    • BaseTask Super Class
    • Task Target Dependencies
    • Passing Parameters
    • Using Parameters
    • Task Output
      • Printing tables
      • Printing Columns
      • Printing Tree
    • Lifecycle Events
    • Threading/Async
    • Task Interactivity
    • Shell Integration
    • Downloading Files
    • Running Other Commands
    • Error Handling
    • Hitting Your Database
    • Sending E-mail
    • Interactive Jobs
    • Watchers
    • Property Files
    • Running other Tasks
    • Loading Ad hoc Jars
    • Loading Ad-hoc Modules
    • Cancel Long Tasks
    • Progress Bar
    • Installing Lucee Extensions
    • Caching Task Runners
  • Helpful Commands
    • Token Replacements
    • Checksums
    • Code Quality Tools
    • ask and confirm
  • Deploying CommandBox
    • Github Actions
    • Docker
    • Heroku
    • Amazon Lightsail
  • TestBox Integration
    • Test Runner
    • Test Watcher
  • Developing For CommandBox
    • Modules
      • Installation and Locations
      • Configuration
        • Public Properties
        • Configure() Method
        • Lifecycle Methods
      • Conventions
      • User Settings
      • Linking Modules
    • Commands
      • Aliases
      • Using Parameters
        • Using File Globs
        • Dynamic Parameters
      • Command Output
      • Tab Completion & Help
      • Interactivity
      • Watchers
      • Shell integration
      • Running Other Commands
      • Error handling
      • Watchers
      • Loading Ad hoc Jars
    • Interceptors
      • Core Interception Points
        • CLI Lifecycle
        • Command Execution Lifecycle
        • Module Lifecycle
        • Server Lifecycle
        • Error Handling
        • Package Lifecycle
      • Custom Interception Points
    • Injection DSL
    • Example Project
    • FusionReactor for the CLI
  • ForgeBox Enterprise
    • Introduction
    • Storage
    • Commands
      • List
      • Register
      • Login
      • Set Default
      • Remove
    • Usage
Powered by GitBook
On this page
  • UNC Network path support
  • Task Runner Improvements
  • "package link" and "package unlink" for module development
  • Everything Else (mostly)

Was this helpful?

Edit on GitHub
Export as PDF
  1. Release History
  2. 3.x Versions

What's New in 3.9.0

UNC Network path support

This has been pretty big for Windows users who access files on their servers over a UNC network path like \\server-name\foo\bar. You can now cd into paths starting with \\, perform file operations like cat against those paths, etc. Note backslashes need escaped in the CommandBox shell.

CommandBox> cd \\\\server-name/share
CommandBox> cd \\\\192.168.123.105/share

This was pretty straightforward since Java already supports this, but I had to change a lot of core path handling to make sure the correct slashes were preserved. This needs a fair amount of testing to make sure we nailed it down for good. If your network share requires permissions, you'll need to have saved those in Windows Explorer already or execute a "net use" OS command from the shell.

Task Runner Improvements

When running a task from the CLI, the user will be automatically prompted if they don't supply all the required args. This is just like commands work now.

CommandBox> task run myTask
Please enter required field "Foo": _

We also fixed several bugs with passing positional parameters and flag to task runners.

# positional
CommandBox> task run taskFileName targetName value1 value2 true
# named
CommandBox> task run taskFile=taskFileName target=targetName :param1=value1 :param2=value2 :param3=true
# Use a Flag
CommandBox> task run taskFileName targetName value1 value2 --:param3
CommandBox> task run taskFile=taskFileName target=targetName :param1=value1 :param2=value2 --:param3

"package link" and "package unlink" for module development

This has been a long time coming, but if you want to work on a CommandBox module now, you don't have to keep copying files over to your CommandBox installation just to test. Instead, just run this from the root of your module's repo:

CommandBox> package link

This will symlink (works on Windows and *nix) your module into the core CLI's modules folder and reload the shell so you can immediately start testing. When you're done, just run package unlink. If you'd like to use this same feature, but to link a ColdBox module's repo over to a test application so you can test it without making a copy, you can pass in the path to the remote modules folder you'd like to link to.

CommandBox> package link /path/to/test/app/modules

This is a little easier than using your OS's native symlink commands and can be used in recipes that will work across operating systems!

Everything Else (mostly)

  • box install returns failing exit code if a package install fails. This helps builds fail correctly if things go wrong

  • When prompted to type in something like a missing parameter, your answer is no longer added to the command history

  • The --debug flag works correctly when starting a server from your OS shell like $> box server start --debug

  • box.json dependencies are stored with forward slashes so Mac and Windows devs stop fighting over which file to commit

  • config set no longer prints out the value to avoid leaking secrets in build script output.

  • Updating a package now uninstalls the previous version first to ensure a fresh start since the new version may have removed files.

  • If you're setting CommandBox behind an AJP proxy, we exposed the flag and ports for that as first class citizens of server.json.

  • Visual markers for private packages in the forgebox search command.

  • The package init command creates a valid slug for private packages in the @user/slug format.

  • New --local flag to server list to show all servers that have been started in the current working directory

  • If for some reason you want to supply some ad-hoc JVM args to the actual CLI process, you can create a new environment var called BOX_JAVA_PROPS="foo=bar;brad=wood"

  • You can now touch files in a non-existent directory and it will create the directory instead of erroring.

  • Viewing a ForgeBox package via package show with a markdown based description, now has basic formatting in the CLI

  • The default URL rewrite file doesn't try to rewrite requests to /favicon.ico even when it doesn't exist.

  • At John Farrar's request, several URLs in output messages have had space put before and after them so capable shells will auto-link them correctly.

  • Improved the Java networking error messages on server start if the host name wasn't correct in your host file and you were letting CommandBox pick a random port for you.

  • Prevented unnecessary saves to box.json when installing to keep file updated dates from being touched.

  • Added friendly check for Java 9 since it's not supported yet and the error that displayed made zero sense.

  • Commands like forgebox show and forgebox list now can provide their data in JSON format. ex: forgebox show coldbox --json

Bug

New Feature

Improvement

Previous3.x VersionsNextWhat's New in 3.8.0

Was this helpful?

The rest of the changes don't really need a dedicated section but they're worth mentioning, so I've put them in this tidy list :) If you'd like the ticket numbers, you can get them out of this full list of tickets in JIRA:

work on all the aliases for a command now.

Our CF11 servers no longer have secure profile enabled. That was causing issues due to some of the settings like returning 200 on error. If you were making use of that default, please use to set what you need.

[] - --debug flag is eaten when running CommandBox from native OS

[] - Ensure clean install/update of packages

[] - Touching file in nonexistent directory errors instead of creating directory

[] - CommandDSL that errors out doesn't reset CWD

[] - positional task args don't work

[] - cp command doesn't work for folders

[] - CommandBox Modules customInterceptionPoints can't accept an array

[] - CommandBox has no `processState` method on the InterceptorService

[] - Flags aren't passed correctly to task runners

[] - CFML functions don't handle incoming JSON with pound signs

[] - Expose Runwar AJP listener settings

[] - Update server list and server info to be able to show all the servers on a particular directory

[] - New package link and package unlink commands

[] - Add ad-hoc JVM props via an environment variable

[] - Don't store text entered to "ask()" command in history

[] - Handle minor version updating a bit better

[] - Always store dependency install paths with forward slashes

[] - Have a setting to not show secrets when printing out the config

[] - Support UNC file paths on Windows

[] - JSON format for forgebox endpoints

[] - Ask user for required params to task runners

[] - Visually show if a package is private when listing or showing

[] - make package init create correct slug for private package

[] - Make default command parms work on aliases

[] - Box install failures to produce non-zero exit codes so build fails instead of continuing installation.

[] - Provide ANSI formatting for markdown package descriptions

[] - box.json template isn't proper JSON

[] - Remove background color from CommandBox ASCII art

[] - Default rewrite rules to ignore favicon.ico

[] - Disable Secure Profile on CFEngine WARs

[] - Leave space around URLs so some consoles will be clickable

[] - Improve performance of package install ignores

[] - Improve error message in ServerService.getRandomPort()

[] - Prevent unnecessary writes to box.json file when installing dependencies

[] - Improve formatting when asking for required param that has no hint

[] - Add Java 9 check to CommandBox until its supported

https://ortussolutions.atlassian.net/secure/ReleaseNote.jspa?projectId=11000&version=20400
Command parameters defaults
CFConfig
COMMANDBOX-579
COMMANDBOX-640
COMMANDBOX-681
COMMANDBOX-682
COMMANDBOX-684
COMMANDBOX-686
COMMANDBOX-689
COMMANDBOX-690
COMMANDBOX-691
COMMANDBOX-701
COMMANDBOX-653
COMMANDBOX-663
COMMANDBOX-668
COMMANDBOX-680
COMMANDBOX-178
COMMANDBOX-565
COMMANDBOX-607
COMMANDBOX-609
COMMANDBOX-624
COMMANDBOX-639
COMMANDBOX-659
COMMANDBOX-660
COMMANDBOX-661
COMMANDBOX-662
COMMANDBOX-670
COMMANDBOX-683
COMMANDBOX-685
COMMANDBOX-687
COMMANDBOX-688
COMMANDBOX-694
COMMANDBOX-696
COMMANDBOX-697
COMMANDBOX-700
COMMANDBOX-707
COMMANDBOX-708
COMMANDBOX-712