UNPKG

2.68 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2colors = require 'colors'
3moment = require 'moment'
4
5class Printer
6 constructor: ({ @slug }) ->
7
8 printDeployment: (result) =>
9 return @_printEmpty("deployment") if _.isEmpty result
10 @_printPretty result
11
12 printDockerUrls: (result) =>
13 return if _.isEmpty result
14 console.log "[current state]"
15 _.each result, @printDockerUrl
16 console.log ''
17
18 printDockerUrl: (dockerUrl, cluster) =>
19 return if _.isEmpty dockerUrl
20 console.log " [#{cluster}]"
21 console.log " ", colors.gray('docker_url'), colors.bold dockerUrl
22
23 printGovernators: (result) =>
24 return @_printEmpty("pending deploys") if _.isEmpty result
25 console.log "[deployments]"
26 _.each result, @printGovernator
27 console.log ''
28
29 printGovernator: (deploys, cluster) =>
30 return if _.isEmpty deploys
31 console.log " [#{cluster}]"
32 _.each deploys, @_printGovernatorDeploy
33
34 _printGovernatorDeploy: ({ deploymentKey, deployAtSince, status }) =>
35 status = colors.yellow status if status == 'pending'
36 status = colors.red status unless status == 'pending'
37 console.log " ", colors.bold "#{deploymentKey}:"
38 console.log " ", colors.gray('deployAt'), colors.cyan deployAtSince
39 console.log " ", colors.gray('status'), status
40
41 _printEmpty: (thing) =>
42 console.log colors.yellow "No #{thing} exists for #{@slug}"
43
44 printJSON: (result) =>
45 console.log JSON.stringify result, null, 2
46
47 _printPretty: (result) =>
48 console.log ''
49 console.log "[deployment]", colors.bold "#{@slug}"
50 @_printBuild result
51 @_printCluster result
52 console.log ''
53
54 _printBuild: (result) =>
55 result.build ?= {}
56 if !result.build['travis-ci']? or !result.build['docker']?
57 result.build.pending = true
58 console.log ''
59 console.log "[build status] ", @_passfail result.build
60 console.log " travis:", @_passfail result.build["travis-ci"]
61 console.log " docker:", @_passfail result.build.docker
62
63 _printCluster: (result) =>
64 return if _.isEmpty result.cluster
65 console.log ''
66 console.log "[cluster status]"
67 _.each _.keys(result.cluster), (cluster) =>
68 console.log " #{cluster}:", @_passfail result.cluster[cluster]
69
70 _passfail: (options) =>
71 return colors.yellow "(pending)" if _.isEmpty options
72 { passing, pending, createdAt, updatedAt } = options
73 return colors.yellow "(pending)" if pending
74 status = colors.green "(passing)" if passing
75 status = colors.red "(failed)" unless passing
76 date = createdAt ? updatedAt
77 return status unless date?
78 humanDate = moment(date).fromNow()
79 return "#{status} #{colors.cyan(humanDate)}"
80
81module.exports = Printer