Blog

Brad Wood

May 16, 2014

Spread the word


Share your thoughts

So at Into The Box this week we unveiled our latest here at Ortus that we've been calling project Gideon.  I'll note now that I'm blogging this to the Ortus blog because this is not beholden to the ColdBox MVC platform, but a new general tool we hope to help color the CFML developer's toolbox with.  Of course, even though this is a general tool aimed at the CFML community, you can bet your bippy we're cooking up some sweet Box love for our existing libraries.

CommandBox

CommandBox is a standalone, native tool that will have binaries for Windows, Mac, and Linux.  It provides a Command Line Interface (CLI) for developer productivity, tool interaction, package management, embedded CFML server, application scaffolding, and some sweet ASCII art.  We are working on a number of command namespaces to easily interact with TestBox, ForgeBox, ContentBox, CacheBox, etc.  Built-in help is completely integrated for every command.  You can pop open a CommandBox shell in your terminal window and manually type commands, or even automate things externally via the CommandBox binary with your OS's native shell.  

Package Management

So one of the biggest things we think the CFML community is missing is a true package management platform.  With this in mind, we are going to be reworking ForgeBox this year and opening it up to the entire community.  We have created a spec for a box.json file which will go in the root of CFML packages to describe metadata about the package, how it should be installed, and dependencies that the package requires to run.  Hand in hand with this move, is the complete modularization of the ColdBox platform.  75% of its code has been stripped from the core, and moved into modules on ForgeBox.  CommandBox is getting a tight integration with the ForgeBox REST API to search, view, and install packages/modules directly into your app from the command line.  We want the community to follow in this manner, and if they aren't writing modules for ColdBox (which are getting some sweet new features in ColdBox 4) at least start writing package-able CF code that can be distributed in a consistent and scriptable manner.

Application Scaffolding

CommandBox will have tons of command for quickly building out applications.  Create a new ColdBox app with "coldbox create app", add a handler with "coldbox create handler".  You can even get actions added to it, views created, and BDD integration tests stubbed out at the same time.  This can bring new productivity for people who like to live on the command line and especially for those who want to be able to automate stuff they do a lot of.

Embedded Server

One of the cool things CommandBox brings to the table is the ability to spin up an ad hoc, lightweight, CFML server in any directory from the command line.  Simply change your working directory to the root of your app, type "start" and a super fast Railo server spins up on a new port running your code.  When you're done type "stop" from that directory or use the little icon that's showed up in your system tray.

Whiz Bang Cool

So one of the most interesting things about this entire project is that the actual commands are written in CFML itself!  CommandBox is small, lightweight, integrated at the operating system level, but actually running on CFML at the same time.  This means you will eventually be able to extend it with your own commands that do cool stuff for a different framework, or automate repetitive tasks you're tired of doing every day.  All the code for CommandBox is open source and already available on GitHub.  Tonight I did an informal demo of CommandBox to a BOF here at cf.Objective().  I recorded it on Connect.  I start out talking a bit about ColdBox 4 and ForgeBox, but just stick with me-- I'm laying the groundwork to help paint the bigger picture we're trying to achieve here at Ortus.  We're really trying to push the CFML world forward with tools no one else is making that fall into a bigger picture of productivity, automation, and modular applications.  We hope to have an alpha out in the next week or so to play with and provide your feedback.  Watch the 20 minute recording below and then fire off your thoughts in the comments.

http://experts.adobeconnect.com/p6bz0oi4ppi/

Add Your Comment

(14)

16 May 2014 10:10 PM

by Sean Corfield

This looks absolutely awesome! As you can see from Github and JIRA, I've been trying this out and ran into a few issues / questions, but I'm very excited about adding FW/1 command support and, ultimately, some FW/1 packages when you open up the package manager!

19 May 2014 08:50 PM

by Luis Majano

Thanks Sean! Really appreciate it. We definitely need help testing and helping us extend it. As for registration, you might want to add your projects to ForgeBox now. Can you give me some recommendations on category types to create? This way you can test your contributions until we can decouple the site in the coming months.

22 May 2014 12:55 AM

by Daniel Mejia

This is a sweet tool. I love that I can spin up a test server quickly. So I cloned the repo and ran box-cli build.cli.all, then I added ~/Development/programs/box-cli/dist/cli/ to /etc/paths.d/commandbox and now I can run "box" from anywhere in command line. Should I not get used to this setup? Is the near future going to install it all for me in some default directory? Or will it be better to not install commandbox globally and include it in the source of the app as a dev dependancy? Would it be better if we didn't have to go INTO commandbox by typing "box" and instead: dev:~ danielmejia$ box server start dev:~ danielmejia$ box coldbox create app OR box install coldbox-platform dev:~ danielmejia$ box init Then leaving cd, clear, ls, mkdir etc for system to handle. Would like to hear your thoughts?

22 May 2014 12:33 PM

by Daniel Mejia

Ok, so apperantly I can startup the server with one command "box server start", instead of just "box" then waiting for that namespace to load then typing "server start". Sweet. I can't find a way to start up the server using a configuration file that will configure my mail settings, datasource settings and mappings. In ServerService.cfc I would like to be able to supply a --config argument that points to my configuration file, json preferrably. Actually, the --config argument would be passed in from cfml/commands/server/start.cfc manager.start(arguments.config); So my start command would look like this: $ box server start --config "server.config.json"

04 Jun 2014 02:18 PM

by Gareth Arch

How/where should we log issues? I've fixed and committed some things, but wanted to make sure I keep track of things I've found so I can perhaps look into them later or make them known to others if they run into them.

05 Jun 2014 07:37 AM

by MitrahSoft

Awesome, REPL is a long due wishlist item of lot of CFML devs. Thanks a lot ColdBox team for this project.

05 Jun 2014 10:16 AM

by Brad Wood

@Gareth, I'm glad to see you've already being playing with CommandBox. Our ticket tracker for it is here: https://ortussolutions.atlassian.net/browse/COMMANDBOX/ If you don't have an account, you can sign up for a free one with the register link under the login fields. There are still a lot of things changing as we massage the project into shape. We'll be putting our an official alpha or beta release soon.

06 Jun 2014 06:22 PM

by Paul Klinkenberg

Congratulations guys, this is a big step forward. Totally agree a package manager is/was a big missing item in the CFML world. Keep up the good work :)

10 Jun 2014 07:57 AM

by Gareth Arch

@Brad, Thanks. I must be a little slow, but I don't see a spot to actual create an issue. I didn't previously have an account, so I created that, but I'm unsure how to create the issue.

26 Jun 2014 07:29 PM

by Jeff Peters

Bravo, Luis et al! Just bounced over here from Ray's tweet--I can see you've continued at your usual breakneck pace. Having recently surfaced from a federal project that monopolized my time for several years, I'm enjoying seeing what's been happening in the outside world. As an long-time CLI guy, I'm definitely diggin' CommandBox.

26 Jun 2014 09:40 PM

by Luis Majano

Thanks Jeff! We are trying! Would love your feedback

01 Jul 2014 02:04 PM

by Jeff Davis

I set up Jenkins to pull the package and build it on my laptop and, sweeeet! it works! I've played around with creating apps, etc. and am really excited about the capabilities. So next commit you make to github, I'll get to see the package update itself! I'm excited about everything, but most want to try to create a package myself. I want to be able to use a local server as the repository as well as Forgebox.... in other words public and private packages... Thanks Louis, Brad, the whole team!

13 Jul 2014 09:47 AM

by Alex Sante

Luis this looks and sounds great! It's definitely something I've been wanting for a long time, and look forward to incorporating it into my daily workflow. Thanks for pushing CF in the right direction.

16 Jul 2015 11:45 AM

by Chris Walker

Game changer. We just re-started our dying 20 year old CFUG with teaching members how to leverage the CF backend with cool frameworks like Angular. And we are getting traction. All the time, I've been thinking...If only I could get Railo in embedded systems. BOOM! Goes the dynamite!

Recent Entries

CommandBox 5.4.0 Released!

CommandBox 5.4.0 Released!

We are pleased to announce the release of CommandBox 5.4.0.  A minor update containing 30 bug fixes and enhancements that has been 3 months in the making.  Our focus for this release was cleaning up some rough edges left from the 5.3.x enhancements, improvements to the CLI to support the latest modules, and enhancements to automation around environment variables.  

Brad Wood
Brad Wood
August 18, 2021