-
Notifications
You must be signed in to change notification settings - Fork 221
/
last.ts
37 lines (29 loc) · 1.4 KB
/
last.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
import {Command, flags} from '@heroku-cli/command'
import * as Heroku from '@heroku-cli/schema'
import {cli} from 'cli-ux'
import {getPipeline} from '../../utils/pipelines'
import {displayTestRunInfo} from '../../utils/test-run'
export default class CiLast extends Command {
static description = 'looks for the most recent run and returns the output of that run'
static examples = [
`$ heroku ci:last --pipeline=my-pipeline --node 100
`,
]
static flags = {
app: flags.string({char: 'a', description: 'app name'}),
node: flags.string({description: 'the node number to show its setup and output', required: false}),
pipeline: flags.pipeline({required: false}),
}
async run() {
const {flags} = this.parse(CiLast)
const pipeline = await getPipeline(flags, this)
const headers = {Range: 'number ..; order=desc,max=1'}
const {body: latestTestRuns} = await this.heroku.get<Heroku.TestRun[]>(`/pipelines/${pipeline.id}/test-runs`, {headers})
if (latestTestRuns.length === 0) {
return cli.warn('No Heroku CI runs found for the specified app and/or pipeline.')
}
const {body: testRun} = await this.heroku.get<Heroku.TestRun>(`/pipelines/${pipeline.id}/test-runs/${latestTestRuns[0].number}`)
const {body: testNodes} = await this.heroku.get<Heroku.TestNode[]>(`/test-runs/${testRun.id}/test-nodes`)
await displayTestRunInfo(this, testRun, testNodes, flags.node)
}
}