1 | _ = require 'lodash'
|
2 | Server = require './src/server'
|
3 |
|
4 | class 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?
|
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 |
|
43 | command = new Command()
|
44 | command.run()
|