1 | _ = require 'lodash'
|
2 | colors = require 'colors'
|
3 | request = require 'request'
|
4 | commander = require 'commander'
|
5 | jsome = require 'jsome'
|
6 | debug = require('debug')('deployinator:check')
|
7 | semverCompare = require 'semver-compare'
|
8 |
|
9 | class 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 |
|
55 | new DeployinatorList().run()
|