Upload
ortus-solutions-corp
View
452
Download
0
Tags:
Embed Size (px)
DESCRIPTION
Presentation on CommandBox CLI, Package Manager for ColdFusion (CFML)
Citation preview
Go Commando!
WHO AM I?
• Luis Majano - Computer Engineer
• Born in El Salvador ------------------>
• Architecture + Software Design
• CEO of Ortus Solutions
• Adobe Community Professional
• Creator of all things Box: ColdBox, ContentBox, WireBox....
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!
Cool Kids
How we should work!
App#Package#Manager#
CLI#
REPL#
Automa6on#
OS#
We need to learn, study, and apply!
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 • Any framework/app developer
Installation
Java 1.7+
33mb
v1.0.0 Beta <7 months of development
Long ways to go!
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 &
Enhanced Executionbox execute myapp.cfm name=luis
param=hello
Box Scripting: *Unix#!/usr/bin/env box
Usage - Commands
• How you get things done! • Built-in Help • Command Namespaces
• Commands • Aliases • Parameters/Arguments
• Tab-Completion • Commands, Parameters, Paths, ForgeBox, 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 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 • 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 • 145+ packages • Help us out! • www.forgebox.org coming soon!
Package Commands• forgebox
• install • uninstall • update • search • show • types • slugcheck
• artifacts • remove, list, clean
• package • show, init, clear, set
Packaging Features
• Can distribute without dependencies • Can have development dependencies • Dependencies Inception • “install” to initialize a project • “update” to update 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
• Railo + Adobe CF
What is CommandBox?
CLI PackageManager
REPL
Read-EvalPrint-Loop
IntegratedServer
ScaffoldingForgeBox
CFML
ColdFusion Automation
Scaffolding
• ColdBox Applications • ContentBox Applications • TestBox Integration • Available For Any Framework or Application • Preside CMS
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”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 $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
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