UNPKG

1.78 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2colors = require 'colors'
3program = require 'commander'
4
5Config = require './src/config.coffee'
6packageJSON = require './package.json'
7
8DeployStateService = require './src/deploy-state-service'
9
10program
11 .version packageJSON.version
12 .usage '[options] <project-name> <tag>'
13 .option '-o, --owner <octoblu>', 'Project owner'
14 .option '-s, --state <travis-ci>', 'The state to set on the build. Could be one of `travis-ci` and `quay.io`'
15 .option '-p, --passing <true>', 'A boolean to indicate whether the build is passing or failing.'
16
17class Command
18 constructor: ->
19 process.on 'uncaughtException', @die
20 @config = new Config()
21 {@repo, @owner, @tag, @state, @passing } = @parseOptions()
22 @deployStateService = new DeployStateService { config: @config.get() }
23
24 parseOptions: =>
25 program.parse process.argv
26 repo = program.args[0]
27 repo ?= @config.getPackageName()
28
29 tag = program.args[1]
30 tag ?= @config.getPackageVersion()
31
32 { owner, state } = program
33 owner ?= 'octoblu'
34
35 throw new Error 'Missing repo argument' unless repo?
36 throw new Error 'Missing tag argument' unless tag?
37 throw new Error 'Missing state argument' unless state?
38 throw new Error 'Missing passing argument' unless program.passing?
39
40 passing = false
41 passing = true if program.passing == 'true'
42
43 return { repo, owner, tag, state, passing }
44
45 run: =>
46 options = { @repo, @owner, @tag, @state, @passing, type: 'build' }
47 @deployStateService.setState options, (error, deployment) =>
48 return @die error if error?
49 process.exit 0
50
51 die: (error) =>
52 return process.exit(0) unless error?
53 console.error 'ERROR'
54 console.error error.stack
55 process.exit 1
56
57module.exports = Command