UNPKG

1.28 kBPlain TextView Raw
1#!/usr/bin/env coffee
2logger = require 'torch'
3optimist = require 'optimist'
4_ = require 'lodash'
5moment = require 'moment'
6
7core = require '..'
8
9optimist.usage 'Usage: axiom <moduleName> <serviceName> [<--arg> <value> ...]'
10parsed = 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
17unless moduleName
18 logger.red "Missing required positional argument: 'moduleName'"
19 logger.yellow parsed.help()
20 return
21
22unless 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
31toOmit = [
32 # Special optimist properties
33 '_', '$0'
34 # Axiom config arguments
35 'axiom'
36]
37args = _.omit parsed.argv, toOmit
38
39core.init({loggers: [{writer: 'console', level: args.log or 'info'}]})
40
41channel = "#{moduleName}.#{serviceName}"
42
43core.request channel, args, (err, results) ->
44 if err?
45 logger.red err.stack
46 unless _.isEmpty(results)
47 logger.green results