1
- import { glob } from 'glob'
2
- import { readFile , writeFile } from 'fs/promises' ;
1
+ import { glob } from "glob" ;
2
+ import { readFile , writeFile } from "fs/promises" ;
3
+ import editJsonFile from "edit-json-file" ;
3
4
4
- const source_folder = ' ../vehicle_profiles' ;
5
- const target = ' ../vehicle_profiles.json'
5
+ const source_folder = " ../vehicle_profiles" ;
6
+ const target = " ../vehicle_profiles.json" ;
6
7
7
- const files = await glob ( source_folder + '/**/*.json' ) ;
8
+ const files = await glob ( source_folder + "/**/*.json" ) ;
9
+ const params = JSON . parse ( await readFile ( "params.json" ) ) ;
10
+
11
+ let param_array = Object . getOwnPropertyNames ( params ) ;
12
+ let schema_file = editJsonFile ( "schema.json" ) ;
13
+ const PARAM_PATH =
14
+ "properties.pids.items.properties.parameters.propertyNames.enum" ;
15
+ let existing_params = schema_file . get ( PARAM_PATH ) ;
16
+ if ( existing_params !== param_array ) {
17
+ schema_file . set ( PARAM_PATH , param_array ) ;
18
+ schema_file . save ( ) ;
19
+ }
8
20
9
21
let result = {
10
- ' cars' : [ ]
22
+ cars : [ ] ,
11
23
} ;
12
24
13
- async function add_json ( path ) {
14
- let data = JSON . parse ( await readFile ( path ) ) ;
15
- result . cars . push ( data )
25
+ async function add_json ( path ) {
26
+ let data = JSON . parse ( await readFile ( path ) ) ;
27
+ Object . keys ( data . pids ) . forEach ( ( key ) => {
28
+ let newParams = [ ] ;
29
+ for ( const [ param , exp ] of Object . entries ( data . pids [ key ] . parameters ) ) {
30
+ newParams . push ( {
31
+ name : param ,
32
+ expression : exp ,
33
+ ...params [ param ] . settings ,
34
+ } ) ;
35
+ }
36
+ data . pids [ key ] . parameters = newParams ;
37
+ } ) ;
38
+ result . cars . push ( data ) ;
16
39
}
17
40
18
41
let promises = [ ] ;
19
- files . forEach ( file => {
20
- promises . push ( add_json ( file ) ) ;
42
+ files . forEach ( ( file ) => {
43
+ promises . push ( add_json ( file ) ) ;
21
44
} ) ;
22
45
23
46
await Promise . all ( promises ) ;
24
47
25
- result . cars . sort ( ( a , b ) => {
26
- let first = a . car_model . toLowerCase ( ) ;
27
- let second = b . car_model . toLowerCase ( ) ;
28
- return ( first < second ) ? - 1 : ( first > second ) ? 1 : 0 ;
48
+ result . cars . sort ( ( a , b ) => {
49
+ let first = a . car_model . toLowerCase ( ) ;
50
+ let second = b . car_model . toLowerCase ( ) ;
51
+ return first < second ? - 1 : first > second ? 1 : 0 ;
29
52
} ) ;
30
53
31
54
const resultString = JSON . stringify ( result ) ;
32
55
//Use below line instead for generating pretty json
33
56
// result = JSON.stringify(result, null, 2);
34
- await writeFile ( target , resultString )
35
-
36
- const models = result . cars . map ( car => car . car_model ) . filter ( model => model !== 'AAA: Generic' ) ;
37
- let supportedVehiclesListContent = '' ;
38
- supportedVehiclesListContent += '<!--\n' ;
39
- supportedVehiclesListContent += '================================================================\n'
40
- supportedVehiclesListContent += 'THIS FILE WAS GENERATED! DO NOT UPDATE OR YOUR CHANGES ARE LOST!\n'
41
- supportedVehiclesListContent += '================================================================\n'
42
- supportedVehiclesListContent += '-->\n' ;
43
- supportedVehiclesListContent += '# Supported Vehicles\n' ;
44
- supportedVehiclesListContent += 'For vehicles listed below a WiCAN vehicle profiles exists:\n' ;
45
- models . forEach ( model => supportedVehiclesListContent += `- ${ model } \n` ) ;
46
-
47
- const supportedVehiclesListFilepath = await glob ( '../docs/content/*.Config/*.Automate/*.Supported_Vehicles.md' )
48
- if ( supportedVehiclesListFilepath . length == 0 || supportedVehiclesListFilepath . length != 1 ) {
49
- throw new Error ( 'Unable to determine automateDirectory' ) ;
57
+ await writeFile ( target , resultString ) ;
58
+
59
+ const models = result . cars
60
+ . map ( ( car ) => car . car_model )
61
+ . filter ( ( model ) => model !== "AAA: Generic" ) ;
62
+ let supportedVehiclesListContent =
63
+ `<!--
64
+
65
+ ================================================================
66
+ THIS FILE WAS GENERATED! DO NOT UPDATE OR YOUR CHANGES ARE LOST!
67
+ ================================================================
68
+
69
+ -->
70
+ # Supported Vehicles
71
+ For vehicles listed below a WiCAN vehicle profiles exists:
72
+ ` ;
73
+ models . forEach ( ( model ) => ( supportedVehiclesListContent += `- ${ model } \n` ) ) ;
74
+
75
+ const supportedVehiclesListFilepath = await glob (
76
+ "../docs/content/*.Config/*.Automate/*.Supported_Vehicles.md" ,
77
+ ) ;
78
+ if (
79
+ supportedVehiclesListFilepath . length == 0 ||
80
+ supportedVehiclesListFilepath . length != 1
81
+ ) {
82
+ throw new Error ( "Unable to determine automateDirectory" ) ;
50
83
}
51
- await writeFile ( supportedVehiclesListFilepath [ 0 ] , supportedVehiclesListContent ) ;
84
+ await writeFile ( supportedVehiclesListFilepath [ 0 ] , supportedVehiclesListContent ) ;
0 commit comments