Package Manager, Automation, REPL, … 
Go Commando!
Who am I? 
• ColdFusion Architect (12 years) 
• Geek 
• Android Lover 
• Blogger (codersrevolution.com) 
• ColdBox Platform Evangelist 
• Musician 
• Shade-Tree Mechanic 
• Husband (11 years) 
• Dad (3 beautiful girls)
Agenda 
• How do we work in CF 
• How we SHOULD work 
• What is CommandBox 
• Features 
• Usage 
• Roadmap
How do we work in CF?
IT'S ALIVE!
Cool Kids
How we should work!
Introducing…
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
Who is this for? 
• For any ColdFusion (CFML) Developer 
• Commands For: 
• Operating System Integration 
• Executing CFML Code 
• ColdBox Developers 
• TestBox BDD/TDD 
• ContentBox Developers 
• Custom
Installation 
Java 1.7+ 
33mb 
Installs to: 
User/.CommandBox
It is POSS 
• GitHub 
• https://github.com/Ortus-Solutions/commandbox 
• Professional Support 
• Training 
• Mentoring 
• Custom Commands 
• Support
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
Usage - CLI vs Shell 
Commands Shell
Usage - Commands 
• How you get things done! 
• Built-in Help 
• API Docs 
• Command Namespaces 
• Commands 
• Aliases 
• Parameters/Arguments 
• Tab-Completion 
• Commands, Parameters, Paths, Custom
Usage - Parameters 
• Named 
• Positional 
• Boolean Flags 
• Escaped Input 
• Required Values 
• Completion
Usage - History 
• Command History 
• REPL History 
• Clear History
Usage - OS Integration 
• OS Integration Commands 
• Output Piping 
• | 
• File Redirection 
• > Create 
• >> Append 
• Open 
• Files/Directories 
• Browser 
• Run OS Binaries
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
What’s a package? 
• A folder 
• Some code 
• A box.json
What’s a module? 
A “smart” package 
Has a ModuleConfig.cfc 
Has optional conventions 
Auto-registers itself with ColdBox
box.json 
• Package Descriptor 
• Declares package metadata 
• Name 
• Slug 
• Version 
• Author 
• Dependencies 
• DevDependencies 
• Installation Details 
• Custom Metadata
box.json 
{ 
"name" : "Weather By IP", 
"author" : "Brad Wood <brad@bradwood.com>", 
"version" : "1.0.0", 
"slug" : "weather-lookup-by-ip", 
"shortDescription" : "Look up local weather.", 
"type" : "modules", 
"dependencies" : { 
"geolocation-lookup-by-ip" : "2.0.0" 
} 
}
Where do they come from? 
• ForgeBox 
• File zip/tar 
• Directory 
• Git 
• SVN 
• Github 
• Bitbucket 
• Custom
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
ForgeBox 
• Cloud package repository 
• Web GUI 
• Community driven 
• ForgeBox Commands 
• 150+ packages 
• Help us out! 
• www.forgebox.org coming soon!
Package Commands 
• forgebox 
• install 
• uninstall 
• search 
• show 
• artifacts 
• remove, list, clean 
• package 
• show, init, clear, set
Packaging Features 
• Choose version to install 
• Automatically installs dependencies 
• Development/Production dependencies 
• Distribute without dependencies 
• “install” initializes a project 
• Dependency Inception
Packaging Features
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
Read - Eval - Pr int - Loop 
REPL 
• Executes code 
• Support CFML or CFScript 
• History 
• Multi-line Statements 
• Declare closures, functions, etc 
• Keeps state
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
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 
• status 
• log 
• open 
• forget
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
Scaffolding 
• ColdBox Applications 
• ContentBox Applications 
• TestBox Integration 
• Custom For Any Framework or Flow
Scaffolding 
init 
coldbox create app “MyApp” —installColdBoxBE 
coldbox create handler contacts index,save,delete 
coldbox create module MyModule 
install testbox-be 
package set defaultPort=“90001” 
package set testbox.runner=“localhost:90001/tests/runner” 
start 
testbox run
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
Automation 
• run 
• Any OS binary 
• Link to grunt/gulp/ant 
• execute 
• Execute any CFML template 
• recipe 
• Like a “Batch” file 
• Runs multiple commands 
• Can accept parameters 
• my-recipe.boxr
my-recipe.boxr 
# Init a repository 
mkdir $name 
init $name 
run git init 
# Create ColdBox App 
coldbox create app $1 —installColdBoxBE 
coldbox create handler $2 index,save,delete 
coldbox create module $3 
# Prepare for Testing 
install testbox-be 
package set defaultPort=“$4” 
package set testbox.runner=“localhost:$4/tests/runner” 
$> recipe my-recipe.boxr myApp myHandler myModule 8081
What is CommandBox? 
CLI Package 
Manager 
REPL 
Read-Eval 
Print-Loop 
Integrated 
Server 
CFML 
ForgeBox Scaffolding 
ColdFusion Automation
ColdFusion Extensibility 
CFML 
• Commands are CFML 
• Create custom commands 
• Register in ForgeBox 
• DI/AOP Capabilities 
• Favorite Command 
• CommandBox-Chuck-Norris
Roadmap 
Automation/Async 
More Generators 
ForgeBox Enterprise 
ForgeBox 2.0 
Adobe CF Engine 
Task Runners
Resources 
• Official Site 
• http://ortussolutions.com/products/commandbox 
• Documentation 
• http://apidocs.ortussolutions.com/commandbox/1.0.0/ 
• https://ortussolutions.com/products/commandbox/docs/current 
• 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
Q & A 
Thanks!

CommandBox REPL, CLI, and Package Manager

  • 1.
    Package Manager, Automation,REPL, … Go Commando!
  • 2.
    Who am I? • ColdFusion Architect (12 years) • Geek • Android Lover • Blogger (codersrevolution.com) • ColdBox Platform Evangelist • Musician • Shade-Tree Mechanic • Husband (11 years) • Dad (3 beautiful girls)
  • 3.
    Agenda • Howdo we work in CF • How we SHOULD work • What is CommandBox • Features • Usage • Roadmap
  • 4.
    How do wework in CF?
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 10.
    Who is thisfor? • For any ColdFusion (CFML) Developer • Commands For: • Operating System Integration • Executing CFML Code • ColdBox Developers • TestBox BDD/TDD • ContentBox Developers • Custom
  • 11.
    Installation Java 1.7+ 33mb Installs to: User/.CommandBox
  • 12.
    It is POSS • GitHub • https://github.com/Ortus-Solutions/commandbox • Professional Support • Training • Mentoring • Custom Commands • Support
  • 13.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 14.
    Usage - CLIvs Shell Commands Shell
  • 15.
    Usage - Commands • How you get things done! • Built-in Help • API Docs • Command Namespaces • Commands • Aliases • Parameters/Arguments • Tab-Completion • Commands, Parameters, Paths, Custom
  • 16.
    Usage - Parameters • Named • Positional • Boolean Flags • Escaped Input • Required Values • Completion
  • 17.
    Usage - History • Command History • REPL History • Clear History
  • 18.
    Usage - OSIntegration • OS Integration Commands • Output Piping • | • File Redirection • > Create • >> Append • Open • Files/Directories • Browser • Run OS Binaries
  • 19.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 20.
    What’s a package? • A folder • Some code • A box.json
  • 21.
    What’s a module? A “smart” package Has a ModuleConfig.cfc Has optional conventions Auto-registers itself with ColdBox
  • 22.
    box.json • PackageDescriptor • Declares package metadata • Name • Slug • Version • Author • Dependencies • DevDependencies • Installation Details • Custom Metadata
  • 23.
    box.json { "name": "Weather By IP", "author" : "Brad Wood <brad@bradwood.com>", "version" : "1.0.0", "slug" : "weather-lookup-by-ip", "shortDescription" : "Look up local weather.", "type" : "modules", "dependencies" : { "geolocation-lookup-by-ip" : "2.0.0" } }
  • 24.
    Where do theycome from? • ForgeBox • File zip/tar • Directory • Git • SVN • Github • Bitbucket • Custom
  • 25.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 26.
    ForgeBox • Cloudpackage repository • Web GUI • Community driven • ForgeBox Commands • 150+ packages • Help us out! • www.forgebox.org coming soon!
  • 27.
    Package Commands •forgebox • install • uninstall • search • show • artifacts • remove, list, clean • package • show, init, clear, set
  • 28.
    Packaging Features •Choose version to install • Automatically installs dependencies • Development/Production dependencies • Distribute without dependencies • “install” initializes a project • Dependency Inception
  • 29.
  • 30.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 31.
    Read - Eval- Pr int - Loop REPL • Executes code • Support CFML or CFScript • History • Multi-line Statements • Declare closures, functions, etc • Keeps state
  • 32.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 33.
    Integrated Server •Lightweight servlet container: undertow • Startup ad-hoc servers in any folder • Keeps track of servers, no WEB-INF needed • Server • start • stop • status • log • open • forget
  • 34.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 35.
    Scaffolding • ColdBoxApplications • ContentBox Applications • TestBox Integration • Custom For Any Framework or Flow
  • 36.
    Scaffolding init coldboxcreate app “MyApp” —installColdBoxBE coldbox create handler contacts index,save,delete coldbox create module MyModule install testbox-be package set defaultPort=“90001” package set testbox.runner=“localhost:90001/tests/runner” start testbox run
  • 37.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 38.
    Automation • run • Any OS binary • Link to grunt/gulp/ant • execute • Execute any CFML template • recipe • Like a “Batch” file • Runs multiple commands • Can accept parameters • my-recipe.boxr
  • 39.
    my-recipe.boxr # Inita repository mkdir $name init $name run git init # Create ColdBox App coldbox create app $1 —installColdBoxBE coldbox create handler $2 index,save,delete coldbox create module $3 # Prepare for Testing install testbox-be package set defaultPort=“$4” package set testbox.runner=“localhost:$4/tests/runner” $> recipe my-recipe.boxr myApp myHandler myModule 8081
  • 40.
    What is CommandBox? CLI Package Manager REPL Read-Eval Print-Loop Integrated Server CFML ForgeBox Scaffolding ColdFusion Automation
  • 41.
    ColdFusion Extensibility CFML • Commands are CFML • Create custom commands • Register in ForgeBox • DI/AOP Capabilities • Favorite Command • CommandBox-Chuck-Norris
  • 42.
    Roadmap Automation/Async MoreGenerators ForgeBox Enterprise ForgeBox 2.0 Adobe CF Engine Task Runners
  • 43.
    Resources • OfficialSite • http://ortussolutions.com/products/commandbox • Documentation • http://apidocs.ortussolutions.com/commandbox/1.0.0/ • https://ortussolutions.com/products/commandbox/docs/current • 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
  • 44.
    Q & A Thanks!

Editor's Notes