@@ -7,23 +7,43 @@ import {
7
7
import { createGlobalState } from './base-feature-facade' ;
8
8
9
9
const requirements = [
10
- 'node -v' ,
11
- 'npm -v' ,
12
- 'mvn --version' ,
13
- 'java -version' ,
14
- 'git --version' ,
10
+ { cmd : 'node -v' } ,
11
+ { cmd : 'npm -v' } ,
12
+ { cmd : 'mvn --version' } ,
13
+ { cmd : 'java -version' } ,
14
+ {
15
+ cmd : 'git --version' ,
16
+ parser : ( output : string ) => output . trim ( ) . split ( ' ' ) . reverse ( ) [ 0 ] ,
17
+ } ,
18
+ {
19
+ cmd : 'docker --version' ,
20
+ } ,
21
+ {
22
+ cmd : 'docker compose version' ,
23
+ } ,
15
24
] ;
16
25
const execPromise = promisify ( exec ) ;
17
26
27
+ function transformMessage (
28
+ stdout : string ,
29
+ stderr : string ,
30
+ parser ?: ( output : string ) => string
31
+ ) {
32
+ if ( stdout ) {
33
+ return parser ? parser ( stdout ) : stdout ;
34
+ }
35
+ return stderr ;
36
+ }
37
+
18
38
export default class RequirementsFacade implements RequirementsResource {
19
39
async getRequirements ( ) : Promise < Requirement [ ] > {
20
40
return Promise . all (
21
- requirements . map ( requirement =>
22
- execPromise ( requirement ) . then ( ( { stdout, stderr } ) => ( {
23
- name : requirement ,
24
- cmd : requirement ,
41
+ requirements . map ( ( { cmd , parser } ) =>
42
+ execPromise ( cmd ) . then ( ( { stdout, stderr } ) => ( {
43
+ name : cmd ,
44
+ cmd : cmd ,
25
45
state : stdout ? ( 'ok' as const ) : ( 'error' as const ) ,
26
- message : stdout || stderr ,
46
+ message : transformMessage ( stdout , stderr , parser ) ,
27
47
} ) )
28
48
)
29
49
) ;
0 commit comments