UNPKG

2.16 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2colors = require 'colors'
3program = require 'commander'
4Printer = require './src/printer'
5Config = require './src/config.coffee'
6packageJSON = require './package.json'
7
8GovernatorService = require './src/governator-service.coffee'
9DeployStateService = require './src/deploy-state-service'
10ServiceStateService = require './src/service-state-service'
11
12program
13 .version packageJSON.version
14 .usage '[options] <project-name> <tag>'
15 .option '-o, --owner <octoblu>', 'Project owner'
16 .option '-j, --json', 'Print JSON'
17
18class Command
19 constructor: ->
20 process.on 'uncaughtException', @die
21 @config = new Config()
22 {@repo, @owner, @tag, @json} = @parseOptions()
23 @deployStateService = new DeployStateService { config: @config.get() }
24 @governatorService = new GovernatorService { config: @config.get() }
25 @serviceStateService = new ServiceStateService { config: @config.get() }
26
27 parseOptions: =>
28 program.parse process.argv
29 repo = program.args[0]
30 repo ?= @config.getPackageName()
31
32 tag = program.args[1]
33 tag ?= @config.getPackageVersion()
34
35 { owner, json } = program
36 owner ?= 'octoblu'
37
38 throw new Error 'Missing repo' unless repo?
39 throw new Error 'Missing tag' unless tag?
40
41 return { repo, owner, json: json?, tag }
42
43 run: =>
44 slug = "#{@owner}/#{@repo}:#{@tag}"
45 printer = new Printer { @json, slug }
46 @deployStateService.getStatus { @repo, @owner, @tag }, (error, deployment) =>
47 return @die error if error?
48 @serviceStateService.getStatuses { @repo, @owner }, (error, dockerUrls) =>
49 return @die error if error?
50 @governatorService.getStatuses { @repo, @owner, @tag }, (error, governators) =>
51 return @die error if error?
52 return printer.printJSON { deployment, dockerUrls, governators } if @json
53 printer.printDeployment deployment
54 printer.printDockerUrls dockerUrls
55 printer.printGovernators governators
56
57 die: (error) =>
58 return process.exit(0) unless error?
59 console.error 'ERROR'
60 console.error error.stack
61 process.exit 1
62
63module.exports = Command