Skip to content

Commit abd3048

Browse files
committed
add modelFolder to config, extract logic
1 parent 9f7e31f commit abd3048

File tree

3 files changed

+46
-19
lines changed

3 files changed

+46
-19
lines changed

config/clients.config.json

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
{
22
"java": {
33
"folder": "clients/algoliasearch-client-java-2",
4+
"modelFolder": "algoliasearch-core/com/algolia/model",
45
"customGenerator": "algolia-java",
56
"tests": {
67
"extension": ".test.java",
@@ -9,12 +10,14 @@
910
},
1011
"javascript": {
1112
"folder": "clients/algoliasearch-client-javascript",
13+
"modelFolder": "model",
1214
"tests": {
1315
"extension": ".test.ts",
1416
"outputFolder": "src"
1517
}
1618
},
1719
"php": {
18-
"folder": "clients/algoliasearch-client-php"
20+
"folder": "clients/algoliasearch-client-php",
21+
"modelFolder": "lib/Model"
1922
}
2023
}

scripts/config.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@ export function getLanguageFolder(language: string): string {
44
return clientsConfig[language].folder;
55
}
66

7+
export function getLanguageModelFolder(language: string): string {
8+
return clientsConfig[language].modelFolder;
9+
}
10+
711
export function getTestExtension(language: string): string | undefined {
812
return clientsConfig[language]?.tests?.extension;
913
}

scripts/generate.ts

Lines changed: 38 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import path from 'path';
2+
13
import { buildJSClientUtils } from './buildClients';
24
import { buildSpecs } from './buildSpecs';
35
import {
@@ -7,40 +9,58 @@ import {
79
runIfExists,
810
toAbsolutePath,
911
} from './common';
10-
import { getCustomGenerator, getLanguageFolder } from './config';
12+
import {
13+
getCustomGenerator,
14+
getLanguageFolder,
15+
getLanguageModelFolder,
16+
} from './config';
1117
import { formatter } from './formatter';
1218
import { createSpinner } from './oraLog';
1319
import { setHostsOptions } from './pre-gen/setHostsOptions';
1420
import type { Generator } from './types';
1521

16-
async function preGen(
17-
{ language, client, key, output }: Generator,
22+
/**
23+
* Remove `model` folder for the current language and client.
24+
*/
25+
async function removeExistingModel(
26+
{ language, client, output }: Generator,
1827
verbose?: boolean
1928
): Promise<void> {
20-
await runIfExists(`./scripts/pre-gen/${language}.sh`, `${output} ${key}`, {
21-
verbose,
22-
});
29+
const baseModelFolder = getLanguageModelFolder(language);
2330

24-
// We clean models to avoid outdated files.
25-
let modelPath = '';
31+
let clientModel = '';
2632
switch (language) {
27-
case 'javascript':
28-
modelPath = 'model';
29-
break;
3033
case 'java':
31-
modelPath = `algoliasearch-core/com/algolia/model/${client}`;
34+
clientModel = `/${client}`;
3235
break;
3336
default:
34-
return;
37+
break;
3538
}
3639

37-
if (modelPath) {
38-
await run(`rm -rf ${toAbsolutePath(`${output}/${modelPath}`)}`, {
40+
await run(
41+
`rm -rf ${toAbsolutePath(
42+
path.resolve(output, `/${baseModelFolder}`, clientModel)
43+
)}`,
44+
{
3945
verbose,
40-
});
41-
}
46+
}
47+
);
48+
}
49+
50+
async function preGen(gen: Generator, verbose?: boolean): Promise<void> {
51+
// Run bash pre-gen script
52+
await runIfExists(
53+
`./scripts/pre-gen/${gen.language}.sh`,
54+
`${gen.output} ${gen.key}`,
55+
{
56+
verbose,
57+
}
58+
);
59+
60+
await removeExistingModel(gen);
4261

43-
await setHostsOptions({ client, key });
62+
// Updates `openapitools.json` file based on the spec `servers`
63+
await setHostsOptions({ client: gen.client, key: gen.key });
4464
}
4565

4666
async function generateClient(

0 commit comments

Comments
 (0)