1 | #!/usr/bin/env node
|
2 |
|
3 | 'use strict'
|
4 |
|
5 | require('console.table')
|
6 |
|
7 | const nowPipeline = require('..')
|
8 | const pkg = nowPipeline.getPackage()
|
9 |
|
10 | function nonAliasedDeploys (deploys, aliases) {
|
11 | const aliasedDeploys = aliases.map(alias => alias.deploymentId)
|
12 | return deploys.filter(deploy => {
|
13 | return !aliasedDeploys.includes(deploy.uid)
|
14 | })
|
15 | }
|
16 |
|
17 | Promise.all([
|
18 | nowPipeline.deployments(pkg.name),
|
19 | nowPipeline.aliases(pkg.name)
|
20 | ]).then(([deploys, aliases]) => {
|
21 | if (deploys.length) {
|
22 | console.table('Deploys', deploys)
|
23 | } else {
|
24 | console.log('No deploys')
|
25 | }
|
26 |
|
27 | if (aliases.length) {
|
28 | console.table('Aliases', aliases)
|
29 | } else {
|
30 | console.log('No aliases')
|
31 | }
|
32 |
|
33 | const needToPrune = nonAliasedDeploys(deploys, aliases)
|
34 | if (needToPrune.length) {
|
35 | console.table('Will prune deploys', needToPrune)
|
36 | } else {
|
37 | console.log('No deploys to prune')
|
38 | }
|
39 |
|
40 | return needToPrune.reduce((prev, deploy) => {
|
41 | return prev.then(() => {
|
42 | console.log(`removing deploy ${deploy.uid} ${deploy.url}`)
|
43 | return nowPipeline.remove(deploy.uid)
|
44 | })
|
45 | }, Promise.resolve())
|
46 | }).then(() => {
|
47 | console.log('Done pruning deploys')
|
48 | }).catch(err => {
|
49 | console.error(err)
|
50 | process.exit(-1)
|
51 | })
|