UNPKG

1.64 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2path = require 'path'
3colors = require 'colors'
4program = require 'commander'
5
6Config = require './src/config.coffee'
7QuayService = require './src/quay-service.coffee'
8TravisService = require './src/travis-service.coffee'
9
10packageJSON = require './package.json'
11
12program
13 .version packageJSON.version
14 .usage '[options] <project-name>'
15 .option '-o, --owner <octoblu>', 'Project owner'
16 .option '-p, --private', 'Add this flag if the project is private'
17 .option '--quay-token', 'Quay API Token. (env: QUAY_TOKEN)'
18
19class Command
20 constructor: ->
21 process.on 'uncaughtException', @die
22 @config = new Config()
23 { @repo, @owner, @isPrivate, quayToken } = @parseOptions()
24 @travisService = new TravisService { config: @config.get() }
25 @quayService = new QuayService { config: @config.get(), quayToken }
26
27 parseOptions: =>
28 program.parse process.argv
29
30 repo = program.args[0]
31 repo ?= @config.getPackageName()
32
33 { owner, quayToken } = program
34 owner ?= 'octoblu'
35 quayToken ?= process.env.QUAY_TOKEN
36
37 throw new Error 'Missing QUAY_TOKEN' unless quayToken?
38
39 isPrivate = program.private?
40
41 return { repo, owner, isPrivate, quayToken }
42
43 run: =>
44 @travisService.configure { @isPrivate }, (error) =>
45 return @die error if error?
46 @quayService.configure { @repo, @owner, @isPrivate }, (error) =>
47 return @die error if error?
48 process.exit 0
49
50 die: (error) =>
51 return process.exit(0) unless error?
52 console.error 'ERROR'
53 console.error error.stack
54 process.exit 1
55
56module.exports = Command