Skip to content

Commit dfed6ff

Browse files
committed
cleaner error messages
1 parent a49ebbb commit dfed6ff

2 files changed

Lines changed: 26 additions & 1 deletion

File tree

.changeset/green-monkeys-cough.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
"@smartthings/cli": patch
3+
---
4+
5+
process exceptions manually for better error messages

src/index.ts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import fs from 'node:fs'
22
import path from 'node:path'
33

4+
import { AxiosError } from 'axios'
45
import yargs, { type Argv, type CommandModule } from 'yargs'
56
import { hideBin } from 'yargs/helpers'
67

@@ -28,7 +29,26 @@ export const buildInstance = (commands: CommandModule<object, any>[]): Argv => {
2829
'strip-aliased': true,
2930
'strip-dashed': true,
3031
})
31-
.completion('generate-completions-script', 'output completion script setup')
3232
/* eslint-enable @typescript-eslint/naming-convention */
33+
.completion('generate-completions-script', 'output completion script setup')
34+
.fail((message, error, yargs) => {
35+
if ('isAxiosError' in error && error.isAxiosError) {
36+
// We don't print axiosError.message here because it just duplicates the things
37+
// we're displaying but unformatted.
38+
const axiosError = error as AxiosError
39+
console.error(`Request to API failed with status ${axiosError.response?.status}`)
40+
if (axiosError.response) {
41+
console.error('Response: ', JSON.stringify(axiosError.response.data, null, 4))
42+
}
43+
} else if (error) {
44+
console.error(error.message)
45+
} else {
46+
console.error(message)
47+
console.error(yargs.help())
48+
}
49+
50+
// eslint-disable-next-line no-process-exit
51+
process.exit(1)
52+
})
3353
return instance
3454
}

0 commit comments

Comments
 (0)