UNPKG

2.55 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2Server = require './src/server'
3UUID = require 'uuid'
4
5class Command
6 constructor: ->
7 @serverOptions =
8 port: parseInt process.env.PORT || 80
9 aliasServerUri: process.env.ALIAS_SERVER_URI
10 redisUri: process.env.REDIS_URI
11 cacheRedisUri: process.env.CACHE_REDIS_URI
12 namespace: process.env.NAMESPACE || 'meshblu'
13 jobTimeoutSeconds: parseInt process.env.JOB_TIMEOUT_SECONDS || 30
14 maxConnections: parseInt process.env.CONNECTION_POOL_MAX_CONNECTIONS || 100
15 disableLogging: process.env.DISABLE_LOGGING == "true"
16 jobLogRedisUri: process.env.JOB_LOG_REDIS_URI
17 jobLogQueue: process.env.JOB_LOG_QUEUE
18 jobLogSampleRate: parseFloat process.env.JOB_LOG_SAMPLE_RATE
19 jobLogSampleRateOverrideUuids: _.split process.env.JOB_LOG_SAMPLE_RATE_OVERRIDE_UUIDS, ','
20 requestQueueName: process.env.REQUEST_QUEUE_NAME
21 responseQueueBaseName: process.env.RESPONSE_QUEUE_BASE_NAME
22
23 panic: (error) =>
24 console.error error.stack
25 process.exit 1
26
27 run: =>
28 @panic new Error('Missing environment variable: ALIAS_SERVER_URI') unless @serverOptions.aliasServerUri?
29 @panic new Error('Missing environment variable: REDIS_URI') if _.isEmpty @serverOptions.redisUri
30 @panic new Error('Missing environment variable: CACHE_REDIS_URI') if _.isEmpty @serverOptions.cacheRedisUri
31 @panic new Error('Missing environment variable: JOB_LOG_REDIS_URI') if _.isEmpty @serverOptions.jobLogRedisUri
32 @panic new Error('Missing environment variable: JOB_LOG_SAMPLE_RATE') unless @serverOptions.jobLogSampleRate?
33 @panic new Error('Missing environment variable: JOB_LOG_QUEUE') if _.isEmpty @serverOptions.jobLogQueue
34 @panic new Error('Missing environment variable: REQUEST_QUEUE_NAME') if _.isEmpty @serverOptions.requestQueueName
35 @panic new Error('Missing environment variable: RESPONSE_QUEUE_BASE_NAME') if _.isEmpty @serverOptions.responseQueueBaseName
36
37 responseQueueId = UUID.v4()
38 @serverOptions.responseQueueName = "#{@serverOptions.responseQueueBaseName}:#{responseQueueId}"
39
40 server = new Server @serverOptions
41 server.run (error) =>
42 return @panic error if error?
43
44 {address,port} = server.address()
45 console.log "Server listening on #{address}:#{port}"
46
47 process.on 'SIGTERM', =>
48 console.log 'SIGTERM caught, exiting'
49 return process.exit 0 unless server?.stop?
50 server.stop =>
51 process.exit 0
52
53command = new Command()
54command.run()