Date post: | 02-Jul-2015 |
Category: |
Software |
Upload: | coldfusionconference |
View: | 335 times |
Download: | 4 times |
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 - Print - 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
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 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 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”
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