@@ -21,12 +21,15 @@ interface ExecOptions {
21
21
logger ?: SimpleLogger ;
22
22
abortSignal ?: AbortSignal ;
23
23
logOutput ?: boolean ;
24
+ trimArgs ?: boolean ;
24
25
}
25
26
26
27
export class Exec {
27
28
private logger : SimpleLogger ;
28
29
private abortSignal : AbortSignal | undefined ;
30
+
29
31
private logOutput : boolean ;
32
+ private trimArgs : boolean ;
30
33
31
34
constructor ( opts : ExecOptions ) {
32
35
this . logger = opts . logger ?? new SimpleLogger ( ) ;
@@ -38,11 +41,12 @@ export class Exec {
38
41
} ) ;
39
42
}
40
43
41
- this . logOutput = opts . logOutput ?? false ;
44
+ this . logOutput = opts . logOutput ?? true ;
45
+ this . trimArgs = opts . trimArgs ?? true ;
42
46
}
43
47
44
- async x ( command : string , args ?: string [ ] , opts ?: { neverThrow ?: boolean ; trimArgs ?: boolean } ) {
45
- const argsTrimmed = opts ? .trimArgs === true ? args ?. map ( ( arg ) => arg . trim ( ) ) : args ;
48
+ async x ( command : string , args ?: string [ ] , opts ?: { neverThrow ?: boolean } ) {
49
+ const argsTrimmed = this . trimArgs ? args ?. map ( ( arg ) => arg . trim ( ) ) : args ;
46
50
47
51
const commandWithFirstArg = `${ command } ${ argsTrimmed ?. length ? ` ${ argsTrimmed [ 0 ] } ` : "" } ` ;
48
52
this . logger . debug ( `exec: ${ commandWithFirstArg } ` , { command, args, argsTrimmed } ) ;
@@ -55,31 +59,33 @@ export class Exec {
55
59
56
60
const output = await result ;
57
61
62
+ const metadata = {
63
+ command,
64
+ argsRaw : args ,
65
+ argsTrimmed,
66
+ ...output ,
67
+ } ;
68
+
58
69
if ( this . logOutput ) {
59
- this . logger . debug ( `output: ${ commandWithFirstArg } ` , { command , args , argsTrimmed , output } ) ;
70
+ this . logger . debug ( `output: ${ commandWithFirstArg } ` , metadata ) ;
60
71
}
61
72
62
73
if ( opts ?. neverThrow ) {
63
74
return output ;
64
75
}
65
76
66
77
if ( result . aborted ) {
67
- this . logger . error ( `aborted: ${ commandWithFirstArg } ` , { command , args , argsTrimmed , output } ) ;
78
+ this . logger . error ( `aborted: ${ commandWithFirstArg } ` , metadata ) ;
68
79
throw new TinyResult ( result ) ;
69
80
}
70
81
71
82
if ( result . killed ) {
72
- this . logger . error ( `killed: ${ commandWithFirstArg } ` , { command , args , argsTrimmed , output } ) ;
83
+ this . logger . error ( `killed: ${ commandWithFirstArg } ` , metadata ) ;
73
84
throw new TinyResult ( result ) ;
74
85
}
75
86
76
87
if ( result . exitCode !== 0 ) {
77
- this . logger . error ( `non-zero exit: ${ commandWithFirstArg } ` , {
78
- command,
79
- args,
80
- argsTrimmed,
81
- output,
82
- } ) ;
88
+ this . logger . error ( `non-zero exit: ${ commandWithFirstArg } ` , metadata ) ;
83
89
throw new TinyResult ( result ) ;
84
90
}
85
91
0 commit comments