CommandBox has a new super power for your task runners — you can now load ad-hoc modules on the fly!
The syntax is pretty straight-forward: call loadModule
passing in the path to the module you want to load.
Let me show you the beginning of a task runner I whipped up to create a PR to add adobe@2018
to all of our
Travis builds. I wanted to use Hyper, an HTTP client, instead of raw cfhttp
calls. First, I installed Hyper
from ForgeBox in to the same folder as my task runner. Then I referenced the relative path in my loadModule
call.
function run( string searchQuery, string newEngine,, string user, string forkUser, string githubToken ) { loadModule( "modules/hyper" ); var githubAPI = getInstance( "HyperBuilder@hyper" ); githubAPI.defaults.setAutoSerializeQueryString( false ); githubAPI.defaults.setBaseUrl( "https://api.github.com" ); githubAPI.defaults.setHeader( "Authorization", "token #githubToken#" ); var results = githubAPI.get( "/search/code", { "q" = "#encodeForURL( searchQuery )#+user:#user#+filename:.travis.yml" } ); /* .... */ }
Now I can update all my own personal modules that use Travis CI to test on Adobe 2018 with my task runner:
CommandBox:>task run taskFile=AddEngineToTravisBuilds :searchQuery=adobe@2016 :newEngine=adobe@2018 :user=elpete :forkUser=elpete :githubToken=hahahahahaha
You can check out the full code here in this gist.
There you have it! It's even easier to use task runners now for those one off commands.
loadModule
is available on the latest stable version of CommandBox (4.1.0).
Add Your Comment