@@ -8,7 +8,7 @@ import { ILoggerService } from '../services/logger-service';
8
8
import { LoggerServiceSymbol } from '../symbols' ;
9
9
import JSON_ from '../utils/json_' ;
10
10
import { ClassConstructor , plainToInstance } from 'class-transformer' ;
11
- import { CliError } from './models/cli-error' ;
11
+ import { CliError , isCliError } from './models/cli-error' ;
12
12
import { ExitCode } from './exit-code' ;
13
13
import { CommandParameters } from './constants' ;
14
14
import { getUserAgentArg } from './user-agent' ;
@@ -30,27 +30,24 @@ export class CliWrapper {
30
30
return new CliResultSuccess ( null ) ;
31
31
}
32
32
33
+ const camelCasedObj = JSON_ . parse ( out ) ;
34
+ if ( isCliError ( camelCasedObj ) ) {
35
+ this . logger . debug ( 'Found CliError in output. Returning CliResultError' ) ;
36
+ const cliError = plainToInstance ( CliError , camelCasedObj ) ;
37
+ return new CliResultError ( cliError ) ;
38
+ }
39
+
33
40
try {
34
- const cliResult = plainToInstance ( classConst , JSON_ . parse ( out ) ) as T ;
41
+ this . logger . debug ( 'Trying to parse CliResultSuccess' ) ;
42
+ const cliResult = plainToInstance ( classConst , camelCasedObj ) as T ;
35
43
if ( ! cliResult ) {
36
44
throw new Error ( 'Failed to parse CliResultSuccess' ) ;
37
45
}
38
46
39
47
return new CliResultSuccess < T > ( cliResult ) ;
40
48
} catch {
41
- this . logger . debug ( 'Failed to parse CliResultSuccess. Parsing CliResultError' ) ;
42
-
43
- try {
44
- const cliError = plainToInstance ( CliError , JSON_ . parse ( out ) ) ;
45
- if ( ! cliError ) {
46
- throw new Error ( 'Failed to parse CliError' ) ;
47
- }
48
-
49
- return new CliResultError ( cliError ) ;
50
- } catch {
51
- this . logger . debug ( 'Failed to parse any output Returning CliResultPanic' ) ;
52
- return new CliResultPanic ( exitCode , out ) ;
53
- }
49
+ this . logger . debug ( 'Failed to parse any output Returning CliResultPanic' ) ;
50
+ return new CliResultPanic ( exitCode , out ) ;
54
51
}
55
52
}
56
53
0 commit comments