command box

44
Go Commando!

Upload: coldfusionconference

Post on 28-Jul-2015

71 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Command box

Go Commando!

Page 2: Command box

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....

Page 3: Command box

AGENDA

• How do we work in CF• A better way to work in CF• What is CommandBox• Features• Usage• Roadmap

Page 4: Command box

HOW DO WE WORK IN CF?

Code% App%

CodeCode

CodeCode

Code

Code

Code

Page 5: Command box

IT’S ALIVE!

Page 6: Command box

Cool Kids

Page 7: Command box

How we should work!

App#Package#Manager#

CLI#

REPL#

Automa6on#

OS#

Page 8: Command box

We need to learn, study, and apply!

Page 9: Command box

Introducing…

Page 10: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 11: Command box

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

Page 12: Command box

Installation

Java 1.7+

33mb

v1.1.1 v2.0.0 Alpha

Page 13: Command box

We are POSS

• GitHub

• https://github.com/Ortus-Solutions/commandbox• Professional Support

• Training + Mentoring

• Development

• Support

• Salsa Lessons are Optional

Brad WoodSalsa King

Page 14: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 15: Command box

Usage - CLI vs Shell

box myapp.cfm Shell

Page 16: Command box

Usage - OS Execution

OS +

CFML

Execute CFML Filesbox myapp.cfm &

Box Scripting: *Unix#!/usr/bin/env box

Page 17: Command box

Usage - Commands

• How you get things done!• Built-in Help

• command help• Command Namespaces

• Commands• Aliases• Parameters/Arguments

• Tab-Completion• Commands, Parameters, Paths, ForgeBox, Custom

Page 18: Command box

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, \”, \’

Page 19: Command box

Usage - HistoryCommand History

box history

REPL Historybox history type=scriptreplbox history type=tagrepl

Clear Historybox history —clear

Page 20: Command box

Usage - OS Integration• Editing

• sed• Output Manip

• |, more, tail, grep

• File Redirection• > Create

• >> Append

• Open• Files/Directories

• Browser• Run OS Binaries

• Grunt, Node, Git, Gulp, Etc.

Page 21: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 22: Command box

What’s a package?

• A folder or zip/tar file that must contain:• box.json

• It must be in the root!

Page 23: Command box

box.json

• Package Descriptor• Declares package metadata

• Name• Slug• Version• Author• Dependencies• DevDependencies• Installation Details

• Custom Metadata

Page 24: Command box

box.json

Page 25: Command box

Where do they come from?

• ForgeBox • File zip/tar• Directory• Git• SVN• Github• Bitbucket• Custom

Page 26: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 27: Command box

ForgeBox

• Cloud package repository• Web GUI• Community driven• 180+ packages• Help us out!• www.forgebox.io

Page 28: Command box

Package Commands• forgebox

• install• uninstall• update• search• show• types• slugcheck

• artifacts• remove, list, clean

• package• show, init, clear, set

Page 29: Command box

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

Page 30: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 31: Command box

Read - Eval - Print - Loop

• Executes code• Support Tags or CFScript• History• Multi-line Statements• Declare closures, functions, etc• Keeps state

REPL

Page 32: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 33: Command box

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 + Railo + Adobe CF

Page 34: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 35: Command box

Scaffolding

• ColdBox Applications• ContentBox Applications• TestBox Integration• Available For Any Framework or Application

• Preside CMS

Page 36: Command box

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

Page 37: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 38: Command box

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

Page 39: Command box

# 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

Page 40: Command box

What is CommandBox?

CLI PackageManager

REPL

Read-EvalPrint-Loop

IntegratedServer

ScaffoldingForgeBox

CFML

ColdFusion Automation

Page 41: Command box

ColdFusion Extensibility

• Commands are CFML• Create custom commands• Register in ForgeBox• DI/AOP Capabilities• Favorite Commands

• CommandBox-Chuck-Norris

• cfdocs

CFML

Page 42: Command box

Roadmap

Task Runners

Adobe CF Engine

ForgeBox 2.0

ForgeBox Enterprise

Package Endpoints

More Automations

OS Execution Params

Page 43: Command box

Resources• Official Site

• http://ortussolutions.com/products/commandbox• Documentation

• 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

Page 44: Command box

Thanks!

Q & A