UNPKG

2.03 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2Server = require './src/server'
3
4class Command
5 constructor: ->
6 @serverOptions =
7 port: process.env.PORT || 80
8 aliasServerUri: process.env.ALIAS_SERVER_URI
9 redisUri: process.env.REDIS_URI
10 namespace: process.env.NAMESPACE || 'meshblu'
11 jobTimeoutSeconds: process.env.JOB_TIMEOUT_SECONDS || 30
12 connectionPoolMaxConnections: process.env.CONNECTION_POOL_MAX_CONNECTIONS || 100
13 disableLogging: process.env.DISABLE_LOGGING == "true"
14 jobLogRedisUri: process.env.JOB_LOG_REDIS_URI
15 jobLogQueue: process.env.JOB_LOG_QUEUE
16 meshbluHost: process.env.MESHBLU_HOST
17 meshbluPort: process.env.MESHBLU_PORT
18
19 panic: (error) =>
20 console.error error.stack
21 process.exit 1
22
23 run: =>
24 @panic new Error('Missing required environment variable: ALIAS_SERVER_URI') unless @serverOptions.aliasServerUri? # allowed to be empty
25 @panic new Error('Missing required environment variable: REDIS_URI') if _.isEmpty @serverOptions.redisUri
26 @panic new Error('Missing required environment variable: JOB_LOG_REDIS_URI') if _.isEmpty @serverOptions.jobLogRedisUri
27 @panic new Error('Missing required environment variable: JOB_LOG_QUEUE') if _.isEmpty @serverOptions.jobLogQueue
28 @panic new Error('Missing required environment variable: MESHBLU_HOST') if _.isEmpty @serverOptions.meshbluHost
29 @panic new Error('Missing required environment variable: MESHBLU_PORT') if _.isEmpty @serverOptions.meshbluPort
30
31 server = new Server @serverOptions
32 server.run (error) =>
33 return @panic error if error?
34
35 {address,port} = server.address()
36 console.log "Server listening on #{address}:#{port}"
37
38 process.on 'SIGTERM', =>
39 console.log 'SIGTERM caught, exiting'
40 server.stop =>
41 process.exit 0
42
43command = new Command()
44command.run()