Go
Commando!
WHO AM I?
• Luis Majano
• Computer Engineer
• Born in El Salvador ->Texas
• CEO of Ortus Solutions
• Adobe Community Professional
• ColdFusion (CFML) Advocate
• Adobe Advisory Committee
• Lucee Language Committee
• Sandals & Beaches -> ESRI -> Ortus
AGENDA
• How do we work in CF
• A better way to work in CF
• What is CommandBox
• Features
• Usage
• Roadmap
HOW DO WE WORK IN CF?
Code% App%
Code
Code
Code
Code
Code
Code
Code
IT’S ALIVE!
Collaboration
Automation
Reusability
Cool Kids
How we should work!
App#Package#
Manager#
CLI#
REPL#
Automa6on#
OS#
CLI + PACKAGE MANAGER 4 CFML?????????
WHAT IF?
#OS integration
execute myapp.cfm
#!/bin/env/box
#generation
coldbox create app name=MyApp skeleton=rest ——installColdBox
testbox create bdd MySpec —open
#dependency management
install cborm,relax,chuck-norris,cfdocs
#server integration
server start ——rewritesEnable ——SSLEnable
#os integration
run grunt, run gulp, run git
#automation + customizations
recipe myrecipe.boxr app=MyApp p=2
doc dateFormat
Setting CFML Free!
Unveiled 1 year ago HERE!
• > 5 Releases
• 90+ Improvements+Features
• 60+ bug fixes
• 50+ Pull Requests
• ForgeBox packages tripled
• CommandBox Book
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Who is this for?
Any CFML Developer
Free 4 All
Java 1.7+
v2.1.1
We are POSS
• GitHub
• https://github.com/Ortus-Solutions/commandbox
• Professional Support
• Training + Mentoring
• Development
• Support
• Salsa Lessons are Optional
Brad Wood

Salsa King
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Usage - CLI vs Shell
box myapp.cfm Shell
Usage - OS Execution
OS 

+

CFML
Execute CFML Files
box myapp.cfm &
Box Scripting: *Unix
#!/usr/bin/env box
Usage - Commands
• How you get things done!
• Built-in Help
• command help
• Command Namespaces
• Commands
• Aliases
• Parameters/Arguments
• Tab-Completion
• History
Usage - Parameters
Named Params
box execute file=test.cfm
Positional
box install coldbox
Boolean Flags
box coldbox create app —installColdBox
Boolean Flags
box coldbox create controller —!script
Escape Input
t,n, ”, ’
Usage - History
Command History
box history
REPL History
box history type=scriptrepl
box history type=tagrepl
Clear History
box history —clear
Usage - OS Integration
• Editing
• sed
• Output Manipulation
• |, more, tail, grep
• File Redirection
• > Create, >> Append
• Open
• Files/Directories
• Browser
• Run OS Binaries
• Grunt, Node, Git, Gulp, Etc.
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
What’s a package?
• A folder or zip/tar file that must contain:
• box.json
• It must be in the root!
box.json
• Package Descriptor
• Declares package metadata
• Name
• Slug
• Version
• Author
• Dependencies
• DevDependencies
• Installation Details
• Custom Metadata
box.json
Where do they come
from?
• ForgeBox
• File zip/tar
• Directory
• http/https
• Git
• Branches
• Tags
• Commit Hashes
• Coming Soon
• ForgeBox Private
• ForgeBox Pro
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
ForgeBox
• Cloud package repository
• Web GUI
• Community driven
• 205+ packages
• Help us out!
• www.forgebox.io
ForgeBox Challenge
Next two packages in
ForgeBox wins their very
own Weissbier Barrel
Package Commands
• bugs
• clear
• documentation
• homepage
• init
• install
• list
• outdated
• set
• show
• uninstall
• update
• version
Artifacts Commands
• clean
• list
• remove
ForgeBox Commands
• search
• show
• slugcheck
• types
• Coming Soon
• apikey
• register
• my-contributions
Packaging Features
• Can distribute without dependencies
• Can have development dependencies
• Dependencies Inception
• “install” to initialize a project
• “update” to update dependencies
• “outdated” to check for versions
• “list” to visualize dependencies
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Read - Eval - Print - Loop
• Executes code
• SupportTags or CFScript
• History
• Multi-line Statements
• Declare closures, functions, etc
• Keeps state
REPL
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Integrated Server
• Lightweight servlet container: undertow
• Startup ad-hoc servers in any folder
• Keeps track of servers, no WEB-INF needed
• Server
• start
• stop
• restart
• status
• log
• open
• forget
• Lucee + Adobe CF
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Scaffolding
Available For Any Framework or Application
Preside CMS
Scaffolding
init
coldbox create app “MyApp” —-installColdBox
coldbox create handler contacts index,save,delete
coldbox create module MyModule
install testbox
package set defaultPort=“90001”
package set testbox.runner=“localhost:90001/tests/runner”
testbox run
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Automation Commands
• run
• Execute any OS binary
• Integrate with grunt/gulp/ant
• execute
• Enhanced execution
• Can accept parameters
• recipe
• Like a “Batch” file: !#/usr/bin/box
• Runs multiple commands
• Can accept parameters
• my-recipe.boxr
# Init a repository
mkdir $name
init $name
run git init
# Create ColdBox App
coldbox create app $name —installColdBox
coldbox create handler $controller index,save,delete
coldbox create module $module
# Prepare for Testing
install testbox
package set defaultPort=“$port”
package set testbox.runner=“localhost:$port/tests/runner”
my-recipe.boxr
recipe my-recipe.boxr MyApp
What is CommandBox?
CLI Package

Manager
REPL
Read-Eval

Print-Loop
Integrated

Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
ColdFusion Extensibility
• Commands are CFML
• Create custom commands
• Register in ForgeBox
• DI/AOP Capabilities
• Favorite Commands
• CommandBox-Chuck-Norris
• cfdocs
CFML
Resources
• Official Site
• http://ortussolutions.com/products/commandbox
• Documentation + Book
• http://apidocs.ortussolutions.com/commandbox/current
• http://commandbox.ortusbooks.com
• Google Group
• https://groups.google.com/a/ortussolutions.com/forum/#!forum/commandbox
• Training
• http://ortussolutions.com/services/training
• Professional Support
• http://ortussolutions.com/services/support
Roadmap
Task Runners
ForgeBox Enterprise
ForgeBox 2.0
SVN Endpoint
Command Modules
Adobe CFVersion
FORGEBOXV2.0
• www.forgebox.io
• Refreshed UI
• Multi-Version Support
• CommandBox Uploading, Registration
• Package Notifications
PRIVATE FORGEBOX
• Monthly Subscription Service
• Private Packages
• Collaborators
• Companies + Users
• Optional S3 Storage
• Unique Installation Strings
install @lmajano/rafflebox
PRO
• ForgeBox for Enterprise + Government
• Downloadable Appliance
• Encapsulated Dependencies
• Unique URI entrypoint
• Unique CommandBox Registrations
forgebox pro register ortus http://fbpro.company.com
install ortus:bradbox
Thanks!
Q & A

CommandBox : Free CFML

  • 1.
  • 2.
    WHO AM I? •Luis Majano • Computer Engineer • Born in El Salvador ->Texas • CEO of Ortus Solutions • Adobe Community Professional • ColdFusion (CFML) Advocate • Adobe Advisory Committee • Lucee Language Committee • Sandals & Beaches -> ESRI -> Ortus
  • 3.
    AGENDA • How dowe work in CF • A better way to work in CF • What is CommandBox • Features • Usage • Roadmap
  • 4.
    HOW DO WEWORK IN CF? Code% App% Code Code Code Code Code Code Code
  • 5.
  • 6.
  • 7.
    How we shouldwork! App#Package# Manager# CLI# REPL# Automa6on# OS#
  • 8.
    CLI + PACKAGEMANAGER 4 CFML?????????
  • 9.
    WHAT IF? #OS integration executemyapp.cfm #!/bin/env/box #generation coldbox create app name=MyApp skeleton=rest ——installColdBox testbox create bdd MySpec —open #dependency management install cborm,relax,chuck-norris,cfdocs #server integration server start ——rewritesEnable ——SSLEnable #os integration run grunt, run gulp, run git #automation + customizations recipe myrecipe.boxr app=MyApp p=2 doc dateFormat
  • 11.
  • 12.
    Unveiled 1 yearago HERE! • > 5 Releases • 90+ Improvements+Features • 60+ bug fixes • 50+ Pull Requests • ForgeBox packages tripled • CommandBox Book
  • 13.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 14.
    Who is thisfor? Any CFML Developer
  • 15.
    Free 4 All Java1.7+ v2.1.1
  • 16.
    We are POSS •GitHub • https://github.com/Ortus-Solutions/commandbox • Professional Support • Training + Mentoring • Development • Support • Salsa Lessons are Optional Brad Wood
 Salsa King
  • 17.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 18.
    Usage - CLIvs Shell box myapp.cfm Shell
  • 19.
    Usage - OSExecution OS 
 +
 CFML Execute CFML Files box myapp.cfm & Box Scripting: *Unix #!/usr/bin/env box
  • 20.
    Usage - Commands •How you get things done! • Built-in Help • command help • Command Namespaces • Commands • Aliases • Parameters/Arguments • Tab-Completion • History
  • 21.
    Usage - Parameters NamedParams box execute file=test.cfm Positional box install coldbox Boolean Flags box coldbox create app —installColdBox Boolean Flags box coldbox create controller —!script Escape Input t,n, ”, ’
  • 22.
    Usage - History CommandHistory box history REPL History box history type=scriptrepl box history type=tagrepl Clear History box history —clear
  • 23.
    Usage - OSIntegration • Editing • sed • Output Manipulation • |, more, tail, grep • File Redirection • > Create, >> Append • Open • Files/Directories • Browser • Run OS Binaries • Grunt, Node, Git, Gulp, Etc.
  • 24.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 25.
    What’s a package? •A folder or zip/tar file that must contain: • box.json • It must be in the root!
  • 26.
    box.json • Package Descriptor •Declares package metadata • Name • Slug • Version • Author • Dependencies • DevDependencies • Installation Details • Custom Metadata
  • 27.
  • 28.
    Where do theycome from? • ForgeBox • File zip/tar • Directory • http/https • Git • Branches • Tags • Commit Hashes • Coming Soon • ForgeBox Private • ForgeBox Pro
  • 29.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 30.
    ForgeBox • Cloud packagerepository • Web GUI • Community driven • 205+ packages • Help us out! • www.forgebox.io
  • 31.
    ForgeBox Challenge Next twopackages in ForgeBox wins their very own Weissbier Barrel
  • 32.
    Package Commands • bugs •clear • documentation • homepage • init • install • list • outdated • set • show • uninstall • update • version
  • 33.
  • 34.
    ForgeBox Commands • search •show • slugcheck • types • Coming Soon • apikey • register • my-contributions
  • 35.
    Packaging Features • Candistribute without dependencies • Can have development dependencies • Dependencies Inception • “install” to initialize a project • “update” to update dependencies • “outdated” to check for versions • “list” to visualize dependencies
  • 36.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 37.
    Read - Eval- Print - Loop • Executes code • SupportTags or CFScript • History • Multi-line Statements • Declare closures, functions, etc • Keeps state REPL
  • 38.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 39.
    Integrated Server • Lightweightservlet container: undertow • Startup ad-hoc servers in any folder • Keeps track of servers, no WEB-INF needed • Server • start • stop • restart • status • log • open • forget • Lucee + Adobe CF
  • 40.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 41.
    Scaffolding Available For AnyFramework or Application Preside CMS
  • 42.
    Scaffolding init coldbox create app“MyApp” —-installColdBox coldbox create handler contacts index,save,delete coldbox create module MyModule install testbox package set defaultPort=“90001” package set testbox.runner=“localhost:90001/tests/runner” testbox run
  • 43.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 44.
    Automation Commands • run •Execute any OS binary • Integrate with grunt/gulp/ant • execute • Enhanced execution • Can accept parameters • recipe • Like a “Batch” file: !#/usr/bin/box • Runs multiple commands • Can accept parameters • my-recipe.boxr
  • 45.
    # Init arepository mkdir $name init $name run git init # Create ColdBox App coldbox create app $name —installColdBox coldbox create handler $controller index,save,delete coldbox create module $module # Prepare for Testing install testbox package set defaultPort=“$port” package set testbox.runner=“localhost:$port/tests/runner” my-recipe.boxr recipe my-recipe.boxr MyApp
  • 46.
    What is CommandBox? CLIPackage
 Manager REPL Read-Eval
 Print-Loop Integrated
 Server ScaffoldingForgeBox CFML ColdFusion Automation
  • 47.
    ColdFusion Extensibility • Commandsare CFML • Create custom commands • Register in ForgeBox • DI/AOP Capabilities • Favorite Commands • CommandBox-Chuck-Norris • cfdocs CFML
  • 48.
    Resources • Official Site •http://ortussolutions.com/products/commandbox • Documentation + Book • http://apidocs.ortussolutions.com/commandbox/current • http://commandbox.ortusbooks.com • Google Group • https://groups.google.com/a/ortussolutions.com/forum/#!forum/commandbox • Training • http://ortussolutions.com/services/training • Professional Support • http://ortussolutions.com/services/support
  • 49.
    Roadmap Task Runners ForgeBox Enterprise ForgeBox2.0 SVN Endpoint Command Modules Adobe CFVersion
  • 50.
    FORGEBOXV2.0 • www.forgebox.io • RefreshedUI • Multi-Version Support • CommandBox Uploading, Registration • Package Notifications
  • 51.
    PRIVATE FORGEBOX • MonthlySubscription Service • Private Packages • Collaborators • Companies + Users • Optional S3 Storage • Unique Installation Strings install @lmajano/rafflebox
  • 52.
    PRO • ForgeBox forEnterprise + Government • Downloadable Appliance • Encapsulated Dependencies • Unique URI entrypoint • Unique CommandBox Registrations forgebox pro register ortus http://fbpro.company.com install ortus:bradbox
  • 53.