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 <extensionName> <serviceName> [<--arg> <value> ...]'
|
10 | parsed = optimist.options {}
|
11 |
|
12 | # Should correspond to an installed NPM module
|
13 | # named 'axiom-<extensionName>' exposing service 'serviceName'
|
14 | [extensionName, serviceName] = parsed.argv._
|
15 |
|
16 | # TODO: Change this to instead alert specific error and print usage information
|
17 | unless extensionName
|
18 | logger.red "Missing required positional argument: 'extensionName'"
|
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 | config = _.merge {
|
40 | loggers: [{writer: 'console', level: args.log or 'info'}]
|
41 | }, axiom
|
42 |
|
43 | core.init(config, null, args)
|
44 |
|
45 | channel = "#{extensionName}.#{serviceName}"
|
46 |
|
47 | core.request channel, {}, (err, results) ->
|
48 | if err?
|
49 | logger.red err.stack
|
50 | else
|
51 | logger.green 'Success!'
|