UNPKG

1.66 kBtext/coffeescriptView Raw
1_ = require 'lodash'
2colors = require 'colors'
3request = require 'request'
4commander = require 'commander'
5jsome = require 'jsome'
6debug = require('debug')('deployinator:check')
7semverCompare = require 'semver-compare'
8
9class DeployinatorList
10 parseOptions: =>
11 commander
12 .usage '[options] <project name>'
13 .option '-u, --user <user>', 'Docker image user [octoblu]'
14 .parse process.argv
15
16 @project_name = _.first commander.args
17 @user = commander.user ? 'octoblu'
18 @QUAY_TOKEN = process.env.DEPLOYINATOR_QUAY_TOKEN
19
20 run: =>
21 @parseOptions()
22
23 return @die new Error('Missing DEPLOYINATOR_QUAY_TOKEN in environment') unless @QUAY_TOKEN?
24 return @die new Error('Missing project name') unless @project_name?
25
26 @deploy()
27
28 deploy: =>
29 console.log ""
30 console.log "=>", @project_name
31 console.log ""
32 requestOptions =
33 json: true
34 method: 'GET'
35 uri: "https://quay.io/api/v1/repository/#{@user}/#{@project_name}/tag/"
36 auth:
37 bearer: @QUAY_TOKEN
38 debug 'requestOptions', requestOptions
39 request requestOptions, (error, response, body) =>
40 return @die error if error?
41 return @die new Error("List failed") if response.statusCode >= 400
42 console.log colors.green "Available Tags"
43 console.log colors.gray "=============="
44 tags = _.uniq _.pluck body?.tags, 'name'
45 console.log tags.sort(semverCompare).join("\n")
46 console.log ""
47
48 die: (error) =>
49 if 'Error' == typeof error
50 console.error colors.red error.message
51 else
52 console.error colors.red arguments...
53 process.exit 1
54
55new DeployinatorList().run()