UNPKG

2.48 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2path = require 'path'
3colors = require 'colors'
4program = require 'commander'
5debug = require('debug')('deploy-state-util:command-configure')
6
7Config = require './src/config.coffee'
8QuayService = require './src/quay-service.coffee'
9DockerHubService = require './src/docker-hub-service.coffee'
10ProjectService = require './src/project-service.coffee'
11
12packageJSON = require './package.json'
13
14program
15 .version packageJSON.version
16 .usage '[options] <project-name>'
17 .option '-o, --owner <octoblu>', 'Project owner'
18 .option '-p, --private', 'Add this flag if the project is private'
19 .option '--docker-hub-token <docker-hub-token>', 'Docker Hub login token. (env: DOCKER_HUB_LOGIN_TOKEN)'
20 .option '--quay-token <quay-token>', 'Quay API Token. (env: QUAY_TOKEN)'
21
22class Command
23 constructor: ->
24 process.on 'uncaughtException', @die
25 @config = new Config()
26 { @repo, @owner, @isPrivate, dockerHubToken, quayToken } = @parseOptions()
27 debug 'quayToken', quayToken
28 @projectService = new ProjectService { config: @config.get() }
29 @quayService = new QuayService { config: @config.get(), quayToken }
30 @dockerHubService = new DockerHubService { config: @config.get(), dockerHubToken }
31
32 parseOptions: =>
33 program.parse process.argv
34
35 repo = program.args[0]
36 repo ?= @config.getPackageName()
37
38 { owner, quayToken, dockerHubToken } = program
39
40 owner ?= 'octoblu'
41 quayToken ?= process.env.QUAY_TOKEN
42 dockerHubToken ?= process.env.DOCKER_HUB_LOGIN_TOKEN
43
44 @dieHelp new Error 'Missing QUAY_TOKEN' unless quayToken?
45 @dieHelp new Error 'Missing DOCKER_HUB_LOGIN_TOKEN' unless dockerHubToken?
46
47 isPrivate = program.private?
48
49 return { repo, owner, isPrivate, quayToken, dockerHubToken }
50
51 run: =>
52 @projectService.configure { @isPrivate }, (error) =>
53 return @die error if error?
54 @quayService.configure { @repo, @owner, @isPrivate }, (error) =>
55 return @die error if error?
56 @dockerHubService.configure { @repo, @owner, @isPrivate }, (error) =>
57 return @die error if error?
58 console.log colors.green('SUCCESS'), colors.white('it has been done. Gump it when ready.')
59 process.exit 0
60
61 dieHelp: (error) =>
62 program.outputHelp()
63 return @die error
64
65 die: (error) =>
66 return process.exit(0) unless error?
67 console.error error.stack
68 process.exit 1
69
70module.exports = Command