UNPKG

1.87 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2colors = require 'colors'
3program = require 'commander'
4
5Printer = require './src/printer'
6Config = require './src/config.coffee'
7packageJSON = require './package.json'
8
9GovernatorService = require './src/governator-service.coffee'
10DeployStateService = require './src/deploy-state-service'
11
12program
13 .version packageJSON.version
14 .usage '[options] <project-name>'
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, @json} = @parseOptions()
23 @deployStateService = new DeployStateService { config: @config.get() }
24 @governatorService = new GovernatorService { config: @config.get() }
25
26 parseOptions: =>
27 program.parse process.argv
28 repo = program.args[0]
29 repo ?= @config.getPackageName()
30
31 { owner, json } = program
32 owner ?= 'octoblu'
33
34 throw new Error 'Missing repo' unless repo?
35
36 return { repo, owner, json: json? }
37
38 run: =>
39 printer = new Printer { }
40 @deployStateService.getList { @repo, @owner }, (error, result) =>
41 return @die error if error?
42 { deployments } = result
43 @governatorService.getStatuses { @repo, @owner }, (error, governators) =>
44 return @die error if error?
45 return printer.printJSON { deployments, governators } if @json
46 _.each _.reverse(deployments), @printDeployment
47 printer.printGovernators governators
48
49 printDeployment: (deployment) =>
50 printer = new Printer { slug: "#{deployment.owner}/#{deployment.repo}:#{deployment.tag}" }
51 printer.printDeployment deployment
52
53 die: (error) =>
54 return process.exit(0) unless error?
55 console.error 'ERROR'
56 console.error error.stack
57 process.exit 1
58
59module.exports = Command