A few days ago, Joseph Lamoree posted about a cool little command line tool he wrote in Python that would scan a list of servers check check for a public facing administrator.  


It's run as follows:

(env) $ ./scan.py targets.json

I thought this would be a great example to compare and contrast writing the same simple command line tool in CFML using a CommandBox task runner.  Here is what I came up with


It's run as follows:

box task run :targetsFile=targets.json

I added some fun stuff in like a progress  bar, interactive job ASCII UI, env var replacements in the JSON, and async processing of URLs, but mostly just followed Joseph's spec. If you're curious what the code looks like for each, you can check out the repos above.  I didn't really read through any of the Python code, I just wrote mine from scratch, but they're both pretty simple examples to compare and take roughly the same amount of code.

Hopefully this will help inspire any CF devs who want to play with some command line tools, but haven't seen examples of how to do it in CFML.  And thanks to Joseph for the original idea and letting me use it as a CFML example.