Download - CommandBox REPL, CLI, and Package Manager
Go Commando!
Package Manager, Automation, REPL, …
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
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 <[email protected]>", "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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Read - Eval - Pr int - Loop
• Executes code
• Support CFML or CFScript
• History
• Multi-line Statements
• Declare closures, functions, etc
• Keeps state
REPL
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
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
• status
• log
• open
• forget
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Scaffolding
• ColdBox Applications
• ContentBox Applications
• TestBox Integration
• Custom For Any Framework or Flow
Scaffolding
initcoldbox create app “MyApp” —installColdBoxBEcoldbox create handler contacts index,save,deletecoldbox create module MyModuleinstall testbox-bepackage set defaultPort=“90001”package set testbox.runner=“localhost:90001/tests/runner”starttestbox run
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
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
# Init a repositorymkdir $nameinit $namerun git init# Create ColdBox Appcoldbox create app $1 —installColdBoxBEcoldbox create handler $2 index,save,deletecoldbox create module $3# Prepare for Testinginstall testbox-bepackage set defaultPort=“$4”package set testbox.runner=“localhost:$4/tests/runner”
my-recipe.boxr
$> recipe my-recipe.boxr myApp myHandler myModule 8081
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
ColdFusion Extensibility
• Commands are CFML
• Create custom commands
• Register in ForgeBox
• DI/AOP Capabilities
• Favorite Command
• CommandBox-Chuck-Norris
CFML
Roadmap
Task Runners
Adobe CF Engine
ForgeBox 2.0
ForgeBox Enterprise
More Generators
Automation/Async
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
Thanks!
Q & A