I'm excited to be teaching one of our workshops for Into The Box 2017 this year for our CommandBox Deep Dive.  We'll be covering all sorts of advanced topics, especially managing servers and extending the CommandBox core with modules to add your own behaviors and write CLI tools in CFML.

Here's the list of prerequisites:

  • A working knowledge of CommandBox’s shell and basic commands
  • Have the latest stable version installed already
  • A GitHub account and Git CLI installed (if you want to follow along with publishing packages)

We will focus on hands-on exercises and will end the day with each student building their own CommandBox module and publishing it to ForgeBox.  Here's the ful overview of our planned agenda:

Introductions/checking prerequisites


  • Meet others in the class
  • Gather each student’s expectations for the class
  • Ensure everyone has CommandBox installed and is ready to go

Usage Overview

  • Review help system
  • Demo REPL and uses
  • Learn about scaffolding commands
  • Advanced scripting features
    • Native binary execution
    • CommandBox expressions
    • Running CFML from the CLI

Native scripting with CFML

  • Running .cfm files from your CLI
  • Creating recipes
  • Creating Unix “hash bang” scripts
  • Accessing parameters
  • Using a database in a stand-alone cfm script

Server Management

  • Start/stop servers
  • Multi-engine support (Adobe, Lucee, etc)
  • Manage servers
  • Server.json
  • Handling CF configuration
  • Using CommandBox for cloud deployments (Heroku, Docker)

Package Management and Authoring

  • What is ForgeBox.io
  • Find and install packages
  • Update packages
  • Creating a package
  • Package scripts
  • Creating a ForgeBox account
  • Publish a package to ForgeBox

Extending CommandBox

  • Modules
  • Interceptors
  • Custom Commands
    • Printing ANSI formatted text
    • Interacting with the user
    • Handling proper exit codes

Exercise Time

  • Let’s build something!
  • Work in teams or alone to create a CommandBox module that does something cool and publish it to ForgeBox and GitHub.