Command Box ColdFusion Package Manager, Automation
-
Upload
coldfusionconference -
Category
Technology
-
view
518 -
download
1
Transcript of Command Box ColdFusion Package Manager, Automation
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
PSA
Join CFML Slack!
http://cfml-slack.herokuapp.com/
Sign up for Ortus Developer Week 2015
http://www.ortussolutions.com/odw
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-LoopIntegrated
Server
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+
35mb
Installs to:
~/.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-LoopIntegrated
Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Read - Eval - Print - Loop
Executes code
Support CFML or CFScript
History
Multi-line Statements
Declare closures, functions, etc
Keeps state
REPL
What is CommandBox?
CLI Package
Manager
REPL
Read-Eval
Print-LoopIntegrated
Server
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 Package
Manager
REPL
Read-Eval
Print-LoopIntegrated
Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Scaffolding
ColdBox Applications
ContentBox Applications
TestBox Integration
Custom For Any Framework or Flow
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-LoopIntegrated
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
status
log
open
forget
What is CommandBox?
CLI Package
Manager
REPL
Read-Eval
Print-LoopIntegrated
Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
Application Architecture
Quick and dirty
Logic and display mixed
together
Monolithic app design
No separation
Difficult to extend/scale
Spaghetti Code (procedural)
Application Architecture
Logic organized better
Service-oriented
Monolithic app design
Some separation
Difficult to scale
Object Oriented Code (OO) -- with meatballs
Application Architecture
Separates layers of
concerns
Helps enforce OO
Specialized team
members
Layers are still tightly
coupled
Model View Controller (MVC)
Application Architecture
Add more layers for
organization
Layers are still tightly
coupled
Still monolithic!
N-Tier
Application Architecture
Complex real-life apps
Large “surface area”
So...much...code...
No one understands it all
Too big for one plate
Once your app grows...
Application Architecture
Microservices
Break app into logical
pieces
Drop-in functionality
Re-usable
Multi-team approach
Easier to distribute
Modularity ensues
Modular Requirements
Standard registry of packages
Standard installation process
Standard API for loading
Ability to update packages
Dependency resolution
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
Zip file
Directory
Git
SVN
Github
CFLIb
RiaForge
What is CommandBox?
CLI Package
Manager
REPL
Read-Eval
Print-LoopIntegrated
Server
ScaffoldingForgeBox
CFML
ColdFusion Automation
ForgeBox
Cloud package repository
Web GUI
REST API
Community-driven
ForgeBox Commands
200+ packages
Help us out!
Forgebox.io
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-LoopIntegrated
Server
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 repository
mkdir $1
init $1
run git init
# Create ColdBox App
coldbox create app $1 —installColdBox
coldbox create handler $2 index,save,delete
coldbox create module $3
# Prepare for Testing
install testbox
package 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 Package
Manager
REPL
Read-Eval
Print-LoopIntegrated
Server
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://www.ortussolutions.com/products/commandbox
Documentation
http://commandbox.ortusbooks.com
http://apidocs.ortussolutions.com/commandbox/current
Google Group
https://groups.google.com/a/ortussolutions.com/forum/#!forum/commandbox
Training
http://www.ortussolutions.com/services/training
Professional Support
http://www.ortussolutions.com/services/support
Thanks!
Q & A