1 | #!/usr/bin/env coffee
|
2 | logger = require 'torch'
|
3 | optimist = require 'optimist'
|
4 | _ = require 'lodash'
|
5 | moment = require 'moment'
|
6 |
|
7 | core = require '..'
|
8 |
|
9 | optimist.usage 'Usage: axiom <moduleName> <serviceName> [<--arg> <value> ...]'
|
10 | parsed = optimist.options {}
|
11 |
|
12 | # Should correspond to an installed NPM module
|
13 | # named 'axiom-<moduleName>' exposing service 'serviceName'
|
14 | [moduleName, serviceName] = parsed.argv._
|
15 |
|
16 | # TODO: Change this to instead alert specific error and print usage information
|
17 | unless moduleName
|
18 | logger.red "Missing required positional argument: 'moduleName'"
|
19 | logger.yellow parsed.help()
|
20 | return
|
21 |
|
22 | unless serviceName
|
23 | logger.red "Missing required positional argument: 'serviceName'"
|
24 | logger.yellow parsed.help()
|
25 | return
|
26 |
|
27 | # Anything with the prefix 'axiom' extends the config. E.G. `axiom server run --axiom.foo=true`
|
28 | {axiom} = parsed.argv
|
29 |
|
30 | # Extract the remaining args for the service
|
31 | toOmit = [
|
32 | # Special optimist properties
|
33 | '_', '$0'
|
34 | # Axiom config arguments
|
35 | 'axiom'
|
36 | ]
|
37 | args = _.omit parsed.argv, toOmit
|
38 |
|
39 | core.init({loggers: [{writer: 'console', level: args.log or 'info'}]})
|
40 |
|
41 | channel = "#{moduleName}.#{serviceName}"
|
42 |
|
43 | core.request channel, args, (err, results) ->
|
44 | if err?
|
45 | logger.red err.stack
|
46 | unless _.isEmpty(results)
|
47 | logger.green results
|