commandbox : free cfml
TRANSCRIPT
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%
CodeCode
CodeCode
Code
Code
Code
IT’S ALIVE!
CollaborationAutomationReusability
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
#generationcoldbox create app name=MyApp skeleton=rest ——installColdBox
testbox create bdd MySpec —open
#dependency managementinstall cborm,relax,chuck-norris,cfdocs
#server integrationserver start ——rewritesEnable ——SSLEnable
#os integrationrun grunt, run gulp, run git
#automation + customizationsrecipe 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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
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 WoodSalsa King
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Usage - CLI vs Shell
box myapp.cfm Shell
Usage - OS Execution
OS +
CFML
Execute CFML Filesbox 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 - ParametersNamed Params
box execute file=test.cfm
Positionalbox install coldbox
Boolean Flagsbox coldbox create app —installColdBox
Boolean Flagsbox coldbox create controller —!script
Escape Input\t,\n, \”, \’
Usage - HistoryCommand History
box history
REPL Historybox history type=scriptreplbox history type=tagrepl
Clear Historybox 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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
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 PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Read - Eval - Print - Loop
• Executes code• Support Tags 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• restart• status• log• open• forget
• Lucee + Adobe CF
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Scaffolding
Available For Any Framework or Application
Preside CMS
Scaffolding
initcoldbox create app “MyApp” —-installColdBoxcoldbox create handler contacts index,save,deletecoldbox create module MyModuleinstall testboxpackage set defaultPort=“90001”package set testbox.runner=“localhost:90001/tests/runner”testbox run
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
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 repositorymkdir $nameinit $namerun git init# Create ColdBox Appcoldbox create app $name —installColdBoxcoldbox create handler $controller index,save,deletecoldbox create module $module# Prepare for Testinginstall testboxpackage set defaultPort=“$port”package set testbox.runner=“localhost:$port/tests/runner”
my-recipe.boxr
recipe my-recipe.boxr MyApp
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 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 CF Version
FORGEBOX V2.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.cominstall ortus:bradbox
Thanks!
Q & A