How to capture JSON result from Azure CLI within NodeJS script

Is there a way to capture the JSON objects from the Azure NodeJS CLI from within a NodeJS script? I could do something like exec( 'azure vm list' ) and write a promise to process the deferred stdout result, or I could hijack the process.stream.write method, but looking at the CLI code, which is quite extensive, I thought there might be a way to pass a callback to the cli function or some other option that might directly return the JSON result. I see you are using the winston logger module -- I might be familiar with this, but perhaps there is a hook there that could be used.

azure vm list does have a --json option:

 C:\>azure vm list -h
 help:    List Azure VMs
 help:
 help:    Usage: vm list [options]
 help:
 help:    Options:
 help:      -h, --help               output usage information
 help:      -s, --subscription <id>  use the subscription id
 help:      -d, --dns-name <name>    only show VMs for this DNS name
 help:      -v, --verbose            use verbose output
 help:      --json                   use json output

You can get the json result in the callback of an exec(...) call. Would this work for your?

Yes you can, check this gist: https://gist.github.com/4415326 and you'll see how without doing exec. You basically override the logger hanging off the CLI.

As a side note I am about to publish a new module, azure-cli-buddy that will make it easy to call the CLI using this technique and to receive results in JSON.