Skip to content

Commit 7137033

Browse files
authored
fix(scripts): bump playground in release process (#690)
1 parent 0ee89ed commit 7137033

File tree

20 files changed

+175
-93
lines changed

20 files changed

+175
-93
lines changed

config/clients.config.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
},
1414
"javascript": {
1515
"folder": "clients/algoliasearch-client-javascript",
16+
"npmNamespace": "@experimental-api-clients-automation",
1617
"gitRepoId": "algoliasearch-client-javascript",
1718
"utilsPackageVersion": "0.5.0",
1819
"modelFolder": "model",

config/openapitools.json

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -6,82 +6,62 @@
66
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-search",
77
"reservedWordsMappings": "queryParameters=queryParameters,requestOptions=requestOptions",
88
"additionalProperties": {
9-
"packageName": "@experimental-api-clients-automation/client-search",
10-
"buildFile": "client-search",
119
"packageVersion": "0.5.0"
1210
}
1311
},
1412
"javascript-algoliasearch-lite": {
1513
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/algoliasearch-lite",
1614
"reservedWordsMappings": "queryParameters=queryParameters,requestOptions=requestOptions",
1715
"additionalProperties": {
18-
"packageName": "@experimental-api-clients-automation/algoliasearch-lite",
19-
"buildFile": "algoliasearch-lite",
2016
"packageVersion": "0.5.0"
2117
}
2218
},
2319
"javascript-recommend": {
2420
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/recommend",
2521
"reservedWordsMappings": "queryParameters=queryParameters",
2622
"additionalProperties": {
27-
"packageName": "@experimental-api-clients-automation/recommend",
28-
"buildFile": "recommend",
2923
"packageVersion": "0.5.0"
3024
}
3125
},
3226
"javascript-personalization": {
3327
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-personalization",
3428
"additionalProperties": {
35-
"packageName": "@experimental-api-clients-automation/client-personalization",
36-
"buildFile": "client-personalization",
3729
"packageVersion": "0.5.0"
3830
}
3931
},
4032
"javascript-analytics": {
4133
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-analytics",
4234
"additionalProperties": {
43-
"packageName": "@experimental-api-clients-automation/client-analytics",
44-
"buildFile": "client-analytics",
4535
"packageVersion": "0.5.0"
4636
}
4737
},
4838
"javascript-insights": {
4939
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-insights",
5040
"additionalProperties": {
51-
"packageName": "@experimental-api-clients-automation/client-insights",
52-
"buildFile": "client-insights",
5341
"packageVersion": "0.5.0"
5442
}
5543
},
5644
"javascript-abtesting": {
5745
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-abtesting",
5846
"additionalProperties": {
59-
"packageName": "@experimental-api-clients-automation/client-abtesting",
60-
"buildFile": "client-abtesting",
6147
"packageVersion": "0.5.0"
6248
}
6349
},
6450
"javascript-query-suggestions": {
6551
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-query-suggestions",
6652
"additionalProperties": {
67-
"packageName": "@experimental-api-clients-automation/client-query-suggestions",
68-
"buildFile": "client-query-suggestions",
6953
"packageVersion": "0.5.0"
7054
}
7155
},
7256
"javascript-sources": {
7357
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-sources",
7458
"additionalProperties": {
75-
"packageName": "@experimental-api-clients-automation/client-sources",
76-
"buildFile": "client-sources",
7759
"packageVersion": "0.5.0"
7860
}
7961
},
8062
"javascript-predict": {
8163
"output": "#{cwd}/clients/algoliasearch-client-javascript/packages/client-predict",
8264
"additionalProperties": {
83-
"packageName": "@experimental-api-clients-automation/client-predict",
84-
"buildFile": "client-predict",
8565
"packageVersion": "0.5.0"
8666
}
8767
},

generators/src/main/java/com/algolia/codegen/AlgoliaJavaScriptGenerator.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public Map<String, Object> postProcessOperationsWithModels(Map<String, Object> o
7171
try {
7272
Utils.generateServer((String) additionalProperties.get("client"), additionalProperties);
7373
additionalProperties.put("utilsPackageVersion", Utils.getClientConfigField("javascript", "utilsPackageVersion"));
74+
additionalProperties.put("npmNamespace", Utils.getClientConfigField("javascript", "npmNamespace"));
7475
} catch (GeneratorException e) {
7576
e.printStackTrace();
7677
System.exit(1);

generators/src/main/java/com/algolia/codegen/cts/AlgoliaCTSGenerator.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,11 @@ public Map<String, Object> postProcessSupportingFileData(Map<String, Object> obj
9696
bundle.put("hasRegionalHost", hasRegionalHost);
9797
bundle.put("defaultRegion", client.equals("predict") ? "ew" : "us");
9898
bundle.put("lambda", lambda);
99+
100+
if (language.equals("javascript")) {
101+
bundle.put("npmNamespace", Utils.getClientConfigField(language, "npmNamespace"));
102+
}
103+
99104
ctsManager.addDataToBundle(bundle);
100105

101106
for (TestsGenerator testGen : testsGenerators) {

generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCTSManager.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,10 @@ public void addSupportingFiles(List<SupportingFile> supportingFiles) {
2626
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
2727
bundle.put("packageDependencies", this.getPackageDependencies());
2828
bundle.put("utilsPackageVersion", Utils.getClientConfigField("javascript", "utilsPackageVersion"));
29-
bundle.put("import", openApiToolsConfig.get("javascript-" + client).get("additionalProperties").get("packageName").asText());
29+
30+
String output = this.openApiToolsConfig.get("javascript-" + client).get("output").asText();
31+
String packageName = Utils.getClientConfigField("javascript", "npmNamespace") + "/" + output.substring(output.lastIndexOf('/') + 1);
32+
bundle.put("import", packageName);
3033
}
3134

3235
private List<Map<String, String>> getPackageDependencies() {
@@ -38,8 +41,9 @@ private List<Map<String, String>> getPackageDependencies() {
3841
}
3942
JsonNode generator = field.getValue();
4043
JsonNode additionalProperties = generator.get("additionalProperties");
41-
String packageName = additionalProperties.get("packageName").asText();
44+
String output = generator.get("output").asText();
4245
String packageVersion = additionalProperties.get("packageVersion").asText();
46+
String packageName = output.substring(output.lastIndexOf('/') + 1);
4347

4448
Map<String, String> newEntry = new HashMap<>();
4549
newEntry.put("packageName", packageName);

scripts/buildClients.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { CI, run } from './common';
2-
import { getLanguageFolder } from './config';
2+
import { getClientsConfigField, getLanguageFolder } from './config';
33
import { createSpinner } from './oraLog';
44
import type { Generator } from './types';
55

@@ -13,13 +13,18 @@ async function buildPerClient(
1313
verbose: boolean
1414
): Promise<void> {
1515
const spinner = createSpinner(`building ${key}`, verbose).start();
16+
const npmNamespace = getClientsConfigField(language, 'npmNamespace');
17+
1618
switch (language) {
1719
case 'javascript':
18-
await run(`yarn workspace ${additionalProperties?.packageName} clean`, {
19-
verbose,
20-
});
2120
await run(
22-
`SKIP_UTILS=true yarn workspace algoliasearch-client-javascript build ${additionalProperties?.packageName}`,
21+
`yarn workspace ${npmNamespace}/${additionalProperties.packageName} clean`,
22+
{
23+
verbose,
24+
}
25+
);
26+
await run(
27+
`SKIP_UTILS=true yarn workspace algoliasearch-client-javascript build ${npmNamespace}/${additionalProperties.packageName}`,
2328
{ verbose }
2429
);
2530
break;

scripts/common.ts

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -35,27 +35,37 @@ export const ROOT_DIR = path.resolve(process.cwd(), '..');
3535
export const ROOT_ENV_PATH = path.resolve(ROOT_DIR, '.env');
3636

3737
export const GENERATORS: Record<string, Generator> = {
38-
// Default `algoliasearch` package as it's built similarly to generated clients
38+
// Default `algoliasearch` package as it's an aggregation of generated clients
3939
'javascript-algoliasearch': {
4040
language: 'javascript',
4141
client: 'algoliasearch',
4242
key: 'javascript-algoliasearch',
4343
additionalProperties: {
44-
buildFile: 'algoliasearch',
45-
packageName: '@experimental-api-clients-automation/algoliasearch',
44+
packageName: 'algoliasearch',
4645
packageVersion: getPackageVersionDefault('javascript'),
4746
},
4847
},
4948
};
5049

5150
// Build `GENERATORS` from the openapitools file
5251
Object.entries(openapiConfig['generator-cli'].generators).forEach(
53-
([key, gen]) => {
52+
([key, { output, ...gen }]) => {
53+
const language = key.slice(0, key.indexOf('-')) as Language;
54+
5455
GENERATORS[key] = {
56+
additionalProperties: {},
5557
...gen,
56-
output: gen.output.replace('#{cwd}/', ''),
57-
...splitGeneratorKey(key),
58+
output: output.replace('#{cwd}/', ''),
59+
client: key.slice(key.indexOf('-') + 1),
60+
language,
61+
key,
5862
};
63+
64+
if (language === 'javascript') {
65+
GENERATORS[key].additionalProperties.packageName = output.substring(
66+
output.lastIndexOf('/') + 1
67+
);
68+
}
5969
}
6070
);
6171

@@ -77,17 +87,6 @@ export const CLIENTS = CLIENTS_JS.filter(
7787
(client) => client !== 'algoliasearch'
7888
);
7989

80-
/**
81-
* Takes a generator key in the form 'language-client' and returns the Generator object.
82-
*/
83-
export function splitGeneratorKey(
84-
generatorKey: string
85-
): Pick<Generator, 'client' | 'key' | 'language'> {
86-
const language = generatorKey.slice(0, generatorKey.indexOf('-')) as Language;
87-
const client = generatorKey.slice(generatorKey.indexOf('-') + 1);
88-
return { language, client, key: generatorKey };
89-
}
90-
9190
export function createGeneratorKey({
9291
language,
9392
client,

scripts/release/common.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import fsp from 'fs/promises';
12
import path from 'path';
23

34
import config from '../../config/release.config.json';
@@ -45,3 +46,31 @@ export async function cloneRepository({
4546
tempGitDir,
4647
};
4748
}
49+
50+
/**
51+
* Reads a JSON file and returns its parsed data.
52+
*
53+
* @param ppath - The absolute path to the file.
54+
*/
55+
export async function readJsonFile(
56+
ppath: string
57+
): Promise<Record<string, any>> {
58+
return JSON.parse(
59+
await fsp.readFile(ppath, {
60+
encoding: 'utf-8',
61+
})
62+
);
63+
}
64+
65+
/**
66+
* Writes `data` in a file at the given `ppath`, appends a newline at the end of the file.
67+
*
68+
* @param ppath - The absolute path to the file.
69+
* @param data - The data to store.
70+
*/
71+
export async function writeJsonFile(
72+
ppath: string,
73+
data: Record<string, any>
74+
): Promise<void> {
75+
await fsp.writeFile(ppath, JSON.stringify(data, null, 2).concat('\n'));
76+
}

0 commit comments

Comments
 (0)