From c7a857578b9d0bce43df1120c512e530ecf842ef Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Tue, 10 May 2022 15:39:45 +0200 Subject: [PATCH 01/15] chore(cts): accept an option to update versions --- .../codegen/cts/AlgoliaCtsGenerator.java | 10 +++++++ scripts/cts/generate.ts | 11 +++++-- scripts/index.ts | 4 ++- .../templates/javascript/package.mustache | 29 +++++++++++++++++++ 4 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 tests/CTS/methods/requests/templates/javascript/package.mustache diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index dd82f75760..3bf6a12f08 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -22,6 +22,7 @@ public class AlgoliaCtsGenerator extends DefaultCodegen { private String language; private String client; private String packageName; + private Boolean updateVersions; /** * Configures the type of generator. @@ -63,6 +64,7 @@ public void processOpts() { language = (String) additionalProperties.get("language"); client = (String) additionalProperties.get("client"); packageName = (String) additionalProperties.get("packageName"); + updateVersions = "true".equals(additionalProperties.get("updateVersions")); try { JsonNode config = Json @@ -84,6 +86,14 @@ public void processOpts() { clientName + testConfig.extension ) ); + + if (updateVersions) { + if (language.equals("javascript")) { + supportingFiles.add( + new SupportingFile("package.mustache", ".", "package.json") + ); + } + } } catch (IOException e) { e.printStackTrace(); System.exit(1); diff --git a/scripts/cts/generate.ts b/scripts/cts/generate.ts index 5473af1337..8737be9e94 100644 --- a/scripts/cts/generate.ts +++ b/scripts/cts/generate.ts @@ -7,7 +7,11 @@ import type { Generator } from '../types'; import { generateClientTests } from './client/generate'; -async function ctsGenerate(gen: Generator, verbose: boolean): Promise { +async function ctsGenerate( + gen: Generator, + updateVersions: boolean, + verbose: boolean +): Promise { createSpinner(`generating CTS for ${gen.key}`, verbose).start().info(); const spinner = createSpinner( { text: 'generating requests tests', indent: 4 }, @@ -15,7 +19,7 @@ async function ctsGenerate(gen: Generator, verbose: boolean): Promise { ).start(); await run( `yarn openapi-generator-cli --custom-generator=generators/build/libs/algolia-java-openapi-generator-1.0.0.jar generate \ - -g algolia-cts -i specs/bundled/${gen.client}.yml --additional-properties="language=${gen.language},client=${gen.client},packageName=${gen.additionalProperties.packageName}"`, + -g algolia-cts -i specs/bundled/${gen.client}.yml --additional-properties="language=${gen.language},client=${gen.client},packageName=${gen.additionalProperties.packageName},updateVersions=${updateVersions}"`, { verbose } ); spinner.succeed(); @@ -29,6 +33,7 @@ async function ctsGenerate(gen: Generator, verbose: boolean): Promise { export async function ctsGenerateMany( generators: Generator[], + updateVersions: boolean, verbose: boolean ): Promise { await buildCustomGenerators(verbose); @@ -38,7 +43,7 @@ export async function ctsGenerateMany( if (!getTestOutputFolder(gen.language)) { continue; } - await ctsGenerate(gen, verbose); + await ctsGenerate(gen, updateVersions, verbose); } const langs = [...new Set(generators.map((gen) => gen.language))]; diff --git a/scripts/index.ts b/scripts/index.ts index d42b232860..183255400a 100644 --- a/scripts/index.ts +++ b/scripts/index.ts @@ -207,17 +207,19 @@ ctsCommand ) .option('-v, --verbose', 'make the generation verbose') .option('-i, --interactive', 'open prompt to query parameters') + .option('-u, --update-versions', 'update versions of CTS') .action( async ( language: Language | 'all' | undefined, client: string[], - { verbose, interactive } + { verbose, interactive, updateVersions } ) => { language = await promptLanguage(language, interactive); client = await promptClient(client, interactive); await ctsGenerateMany( generatorList({ language, client }), + updateVersions, Boolean(verbose) ); } diff --git a/tests/CTS/methods/requests/templates/javascript/package.mustache b/tests/CTS/methods/requests/templates/javascript/package.mustache new file mode 100644 index 0000000000..5fe8ba3e22 --- /dev/null +++ b/tests/CTS/methods/requests/templates/javascript/package.mustache @@ -0,0 +1,29 @@ +{ + "name": "javascript-tests", + "version": "1.0.0", + "scripts": { + "test": "jest" + }, + "dependencies": { + "@experimental-api-clients-automation/algoliasearch-lite": "0.2.0", + "@experimental-api-clients-automation/client-abtesting": "0.2.0", + "@experimental-api-clients-automation/client-analytics": "0.2.0", + "@experimental-api-clients-automation/client-common": "0.2.0", + "@experimental-api-clients-automation/client-insights": "0.2.0", + "@experimental-api-clients-automation/client-personalization": "0.2.0", + "@experimental-api-clients-automation/client-predict": "0.2.0", + "@experimental-api-clients-automation/client-query-suggestions": "0.2.0", + "@experimental-api-clients-automation/client-search": "0.2.0", + "@experimental-api-clients-automation/client-sources": "0.2.0", + "@experimental-api-clients-automation/recommend": "0.2.0", + "@experimental-api-clients-automation/requester-node-http": "0.2.0" + }, + "devDependencies": { + "@types/jest": "27.4.1", + "@types/node": "16.11.26", + "jest": "27.5.1", + "ts-jest": "27.1.4", + "ts-node": "10.7.0", + "typescript": "4.6.3" + } +} From ea235431ee800b72e4cdc7e9b35d55d533ed7c8c Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Tue, 10 May 2022 18:10:18 +0200 Subject: [PATCH 02/15] chore: WIP --- .../codegen/cts/AlgoliaCtsGenerator.java | 78 +++++++++++++++++-- scripts/cts/generate.ts | 11 +-- scripts/index.ts | 4 +- .../templates/javascript/package.mustache | 26 ++++--- 4 files changed, 88 insertions(+), 31 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index 3bf6a12f08..cde75ac3ac 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -22,7 +22,6 @@ public class AlgoliaCtsGenerator extends DefaultCodegen { private String language; private String client; private String packageName; - private Boolean updateVersions; /** * Configures the type of generator. @@ -64,7 +63,6 @@ public void processOpts() { language = (String) additionalProperties.get("language"); client = (String) additionalProperties.get("client"); packageName = (String) additionalProperties.get("packageName"); - updateVersions = "true".equals(additionalProperties.get("updateVersions")); try { JsonNode config = Json @@ -87,12 +85,10 @@ public void processOpts() { ) ); - if (updateVersions) { - if (language.equals("javascript")) { - supportingFiles.add( - new SupportingFile("package.mustache", ".", "package.json") - ); - } + if (language.equals("javascript")) { + supportingFiles.add( + new SupportingFile("package.mustache", ".", "package.json") + ); } } catch (IOException e) { e.printStackTrace(); @@ -124,6 +120,67 @@ protected Builder addMustacheLambdas() { return lambdas; } + private Map getPackageVersionMap() { + HashMap packageVersionMap = new HashMap<>(); + JsonNode openApiToolsConfig = null; + try { + openApiToolsConfig = + Json.mapper().readTree(new File("config/openapitools.json")); + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + + Iterator generatorIterator = openApiToolsConfig + .get("generator-cli") + .get("generators") + .elements(); + while (generatorIterator.hasNext()) { + JsonNode generator = generatorIterator.next(); + JsonNode additionalProperties = generator.get("additionalProperties"); + packageVersionMap.put( + additionalProperties.get("packageName").asText(), + additionalProperties.get("packageVersion").asText() + ); + } + + return packageVersionMap; + } + + private String getJavaScriptUtilsPackageVersion() { + JsonNode openApiToolsConfig = null; + try { + openApiToolsConfig = + Json.mapper().readTree(new File("config/openapitools.json")); + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + + JsonNode clientsConfig = null; + try { + clientsConfig = + Json.mapper().readTree(new File("config/clients.config.json")); + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + String mainPackage = clientsConfig + .get("javascript") + .get("mainPackage") + .asText(); + + String utilsPackageVersion = openApiToolsConfig + .get("generator-cli") + .get("generators") + .get(mainPackage) + .get("additionalProperties") + .get("utilsPackageVersion") + .asText(); + + return utilsPackageVersion; + } + @Override public Map postProcessSupportingFileData( Map objs @@ -157,6 +214,11 @@ public Map postProcessSupportingFileData( bundle.put("hasRegionalHost", hasRegionalHost); bundle.put("defaultRegion", client.equals("predict") ? "ew" : "us"); bundle.put("lambda", lambda); + bundle.put("packageVersionMap", this.getPackageVersionMap()); + bundle.put( + "utilsPackageVersion", + this.getJavaScriptUtilsPackageVersion() + ); List blocks = new ArrayList<>(); ParametersWithDataType paramsType = new ParametersWithDataType( diff --git a/scripts/cts/generate.ts b/scripts/cts/generate.ts index 8737be9e94..5473af1337 100644 --- a/scripts/cts/generate.ts +++ b/scripts/cts/generate.ts @@ -7,11 +7,7 @@ import type { Generator } from '../types'; import { generateClientTests } from './client/generate'; -async function ctsGenerate( - gen: Generator, - updateVersions: boolean, - verbose: boolean -): Promise { +async function ctsGenerate(gen: Generator, verbose: boolean): Promise { createSpinner(`generating CTS for ${gen.key}`, verbose).start().info(); const spinner = createSpinner( { text: 'generating requests tests', indent: 4 }, @@ -19,7 +15,7 @@ async function ctsGenerate( ).start(); await run( `yarn openapi-generator-cli --custom-generator=generators/build/libs/algolia-java-openapi-generator-1.0.0.jar generate \ - -g algolia-cts -i specs/bundled/${gen.client}.yml --additional-properties="language=${gen.language},client=${gen.client},packageName=${gen.additionalProperties.packageName},updateVersions=${updateVersions}"`, + -g algolia-cts -i specs/bundled/${gen.client}.yml --additional-properties="language=${gen.language},client=${gen.client},packageName=${gen.additionalProperties.packageName}"`, { verbose } ); spinner.succeed(); @@ -33,7 +29,6 @@ async function ctsGenerate( export async function ctsGenerateMany( generators: Generator[], - updateVersions: boolean, verbose: boolean ): Promise { await buildCustomGenerators(verbose); @@ -43,7 +38,7 @@ export async function ctsGenerateMany( if (!getTestOutputFolder(gen.language)) { continue; } - await ctsGenerate(gen, updateVersions, verbose); + await ctsGenerate(gen, verbose); } const langs = [...new Set(generators.map((gen) => gen.language))]; diff --git a/scripts/index.ts b/scripts/index.ts index 183255400a..d42b232860 100644 --- a/scripts/index.ts +++ b/scripts/index.ts @@ -207,19 +207,17 @@ ctsCommand ) .option('-v, --verbose', 'make the generation verbose') .option('-i, --interactive', 'open prompt to query parameters') - .option('-u, --update-versions', 'update versions of CTS') .action( async ( language: Language | 'all' | undefined, client: string[], - { verbose, interactive, updateVersions } + { verbose, interactive } ) => { language = await promptLanguage(language, interactive); client = await promptClient(client, interactive); await ctsGenerateMany( generatorList({ language, client }), - updateVersions, Boolean(verbose) ); } diff --git a/tests/CTS/methods/requests/templates/javascript/package.mustache b/tests/CTS/methods/requests/templates/javascript/package.mustache index 5fe8ba3e22..c482f8da31 100644 --- a/tests/CTS/methods/requests/templates/javascript/package.mustache +++ b/tests/CTS/methods/requests/templates/javascript/package.mustache @@ -5,18 +5,20 @@ "test": "jest" }, "dependencies": { - "@experimental-api-clients-automation/algoliasearch-lite": "0.2.0", - "@experimental-api-clients-automation/client-abtesting": "0.2.0", - "@experimental-api-clients-automation/client-analytics": "0.2.0", - "@experimental-api-clients-automation/client-common": "0.2.0", - "@experimental-api-clients-automation/client-insights": "0.2.0", - "@experimental-api-clients-automation/client-personalization": "0.2.0", - "@experimental-api-clients-automation/client-predict": "0.2.0", - "@experimental-api-clients-automation/client-query-suggestions": "0.2.0", - "@experimental-api-clients-automation/client-search": "0.2.0", - "@experimental-api-clients-automation/client-sources": "0.2.0", - "@experimental-api-clients-automation/recommend": "0.2.0", - "@experimental-api-clients-automation/requester-node-http": "0.2.0" + {{#packageVersionMap}} + "@experimental-api-clients-automation/algoliasearch-lite": "{{@experimental-api-clients-automation/algoliasearch-lite}}", + "@experimental-api-clients-automation/client-abtesting": "{{@experimental-api-clients-automation/client-abtesting}}", + "@experimental-api-clients-automation/client-analytics": "{{@experimental-api-clients-automation/client-analytics}}", + "@experimental-api-clients-automation/client-common": "{{utilsPackageVersion}}", + "@experimental-api-clients-automation/client-insights": "{{@experimental-api-clients-automation/client-insights}}", + "@experimental-api-clients-automation/client-personalization": "{{@experimental-api-clients-automation/client-personalization}}", + "@experimental-api-clients-automation/client-predict": "{{@experimental-api-clients-automation/client-predict}}", + "@experimental-api-clients-automation/client-query-suggestions": "{{@experimental-api-clients-automation/client-query-suggestions}}", + "@experimental-api-clients-automation/client-search": "{{@experimental-api-clients-automation/client-search}}", + "@experimental-api-clients-automation/client-sources": "{{@experimental-api-clients-automation/client-sources}}", + "@experimental-api-clients-automation/recommend": "{{@experimental-api-clients-automation/recommend}}", + "@experimental-api-clients-automation/requester-node-http": "{{utilsPackageVersion}}" + {{/packageVersionMap}} }, "devDependencies": { "@types/jest": "27.4.1", From 8e15f43965b07222ca0c5d5b6787360416b814b9 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Wed, 11 May 2022 16:36:04 +0200 Subject: [PATCH 03/15] chore: extract to Utils --- .../main/java/com/algolia/codegen/Utils.java | 15 +++++++++ .../codegen/cts/AlgoliaCtsGenerator.java | 31 +++++-------------- 2 files changed, 22 insertions(+), 24 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/Utils.java b/generators/src/main/java/com/algolia/codegen/Utils.java index 3e9c1477b8..686e2056ea 100644 --- a/generators/src/main/java/com/algolia/codegen/Utils.java +++ b/generators/src/main/java/com/algolia/codegen/Utils.java @@ -1,7 +1,11 @@ package com.algolia.codegen; +import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.Sets; +import io.swagger.v3.core.util.Json; +import java.io.File; import java.io.FileInputStream; +import java.io.IOException; import java.net.URL; import java.util.*; import org.openapitools.codegen.CodegenOperation; @@ -149,4 +153,15 @@ public static void generateServer( System.exit(1); } } + + public static JsonNode readJsonFile(String filePath) { + JsonNode json = null; + try { + json = Json.mapper().readTree(new File(filePath)); + } catch (IOException e) { + e.printStackTrace(); + System.exit(1); + } + return json; + } } diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index cde75ac3ac..b497cd13c2 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -122,14 +122,9 @@ protected Builder addMustacheLambdas() { private Map getPackageVersionMap() { HashMap packageVersionMap = new HashMap<>(); - JsonNode openApiToolsConfig = null; - try { - openApiToolsConfig = - Json.mapper().readTree(new File("config/openapitools.json")); - } catch (IOException e) { - e.printStackTrace(); - System.exit(1); - } + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); Iterator generatorIterator = openApiToolsConfig .get("generator-cli") @@ -148,23 +143,11 @@ private Map getPackageVersionMap() { } private String getJavaScriptUtilsPackageVersion() { - JsonNode openApiToolsConfig = null; - try { - openApiToolsConfig = - Json.mapper().readTree(new File("config/openapitools.json")); - } catch (IOException e) { - e.printStackTrace(); - System.exit(1); - } + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); + JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); - JsonNode clientsConfig = null; - try { - clientsConfig = - Json.mapper().readTree(new File("config/clients.config.json")); - } catch (IOException e) { - e.printStackTrace(); - System.exit(1); - } String mainPackage = clientsConfig .get("javascript") .get("mainPackage") From 1d88899c73c0127a5539ce76940a3efc4abc6324 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Wed, 11 May 2022 16:39:58 +0200 Subject: [PATCH 04/15] chore: if condition for js --- .../com/algolia/codegen/cts/AlgoliaCtsGenerator.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index b497cd13c2..25eecd13a3 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -198,10 +198,12 @@ public Map postProcessSupportingFileData( bundle.put("defaultRegion", client.equals("predict") ? "ew" : "us"); bundle.put("lambda", lambda); bundle.put("packageVersionMap", this.getPackageVersionMap()); - bundle.put( - "utilsPackageVersion", - this.getJavaScriptUtilsPackageVersion() - ); + if (language.equals("javascript")) { + bundle.put( + "utilsPackageVersion", + this.getJavaScriptUtilsPackageVersion() + ); + } List blocks = new ArrayList<>(); ParametersWithDataType paramsType = new ParametersWithDataType( From de0c7701a711ac8b3e3ddc2b62e9f25399956f7c Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Wed, 11 May 2022 17:04:57 +0200 Subject: [PATCH 05/15] chore: clean up duplicated code --- .../codegen/cts/AlgoliaCtsGenerator.java | 53 ++++++++++--------- 1 file changed, 27 insertions(+), 26 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index 25eecd13a3..214fd2a89a 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -2,6 +2,7 @@ import com.algolia.codegen.Utils; import com.fasterxml.jackson.core.JsonParseException; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.google.common.collect.ImmutableMap.Builder; @@ -64,36 +65,36 @@ public void processOpts() { client = (String) additionalProperties.get("client"); packageName = (String) additionalProperties.get("packageName"); + JsonNode config = Utils.readJsonFile("config/clients.config.json"); + TestConfig testConfig = null; try { - JsonNode config = Json - .mapper() - .readTree(new File("config/clients.config.json")); - TestConfig testConfig = Json - .mapper() - .treeToValue(config.get(language).get("tests"), TestConfig.class); - - setTemplateDir("tests/CTS/methods/requests/templates/" + language); - setOutputDir("tests/output/" + language); - String clientName = language.equals("php") - ? Utils.createClientName(client, language) - : client; - supportingFiles.add( - new SupportingFile( - "requests.mustache", - testConfig.outputFolder + "/methods/requests", - clientName + testConfig.extension - ) - ); - - if (language.equals("javascript")) { - supportingFiles.add( - new SupportingFile("package.mustache", ".", "package.json") - ); - } - } catch (IOException e) { + testConfig = + Json + .mapper() + .treeToValue(config.get(language).get("tests"), TestConfig.class); + } catch (JsonProcessingException e) { e.printStackTrace(); System.exit(1); } + + setTemplateDir("tests/CTS/methods/requests/templates/" + language); + setOutputDir("tests/output/" + language); + String clientName = language.equals("php") + ? Utils.createClientName(client, language) + : client; + supportingFiles.add( + new SupportingFile( + "requests.mustache", + testConfig.outputFolder + "/methods/requests", + clientName + testConfig.extension + ) + ); + + if (language.equals("javascript")) { + supportingFiles.add( + new SupportingFile("package.mustache", ".", "package.json") + ); + } } @Override From e5324555bce6ecbfb78ec7ce54a9227e960c7c98 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 15:21:26 +0200 Subject: [PATCH 06/15] chore: introduce CtsManager --- .../codegen/cts/AlgoliaCtsGenerator.java | 41 ++----- .../com/algolia/codegen/cts/CtsManager.java | 42 +++++++ .../codegen/cts/CtsManagerFactory.java | 108 ++++++++++++++++++ .../templates/javascript/package.mustache | 13 +-- tests/output/javascript/package.json | 12 +- 5 files changed, 164 insertions(+), 52 deletions(-) create mode 100644 generators/src/main/java/com/algolia/codegen/cts/CtsManager.java create mode 100644 generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index 214fd2a89a..8f749277f3 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -1,6 +1,8 @@ package com.algolia.codegen.cts; import com.algolia.codegen.Utils; +import com.algolia.codegen.cts.CtsManager; +import com.algolia.codegen.cts.CtsManagerFactory; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; @@ -23,6 +25,7 @@ public class AlgoliaCtsGenerator extends DefaultCodegen { private String language; private String client; private String packageName; + private CtsManager ctsManager; /** * Configures the type of generator. @@ -64,6 +67,7 @@ public void processOpts() { language = (String) additionalProperties.get("language"); client = (String) additionalProperties.get("client"); packageName = (String) additionalProperties.get("packageName"); + ctsManager = CtsManagerFactory.getManager(language); JsonNode config = Utils.readJsonFile("config/clients.config.json"); TestConfig testConfig = null; @@ -90,11 +94,7 @@ public void processOpts() { ) ); - if (language.equals("javascript")) { - supportingFiles.add( - new SupportingFile("package.mustache", ".", "package.json") - ); - } + ctsManager.addSupportingFiles(supportingFiles); } @Override @@ -143,28 +143,6 @@ private Map getPackageVersionMap() { return packageVersionMap; } - private String getJavaScriptUtilsPackageVersion() { - JsonNode openApiToolsConfig = Utils.readJsonFile( - "config/openapitools.json" - ); - JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); - - String mainPackage = clientsConfig - .get("javascript") - .get("mainPackage") - .asText(); - - String utilsPackageVersion = openApiToolsConfig - .get("generator-cli") - .get("generators") - .get(mainPackage) - .get("additionalProperties") - .get("utilsPackageVersion") - .asText(); - - return utilsPackageVersion; - } - @Override public Map postProcessSupportingFileData( Map objs @@ -198,13 +176,8 @@ public Map postProcessSupportingFileData( bundle.put("hasRegionalHost", hasRegionalHost); bundle.put("defaultRegion", client.equals("predict") ? "ew" : "us"); bundle.put("lambda", lambda); - bundle.put("packageVersionMap", this.getPackageVersionMap()); - if (language.equals("javascript")) { - bundle.put( - "utilsPackageVersion", - this.getJavaScriptUtilsPackageVersion() - ); - } + bundle.put("packageDependencies", ctsManager.getPackageDependencies()); + ctsManager.addExtraToBundle(bundle); List blocks = new ArrayList<>(); ParametersWithDataType paramsType = new ParametersWithDataType( diff --git a/generators/src/main/java/com/algolia/codegen/cts/CtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/CtsManager.java new file mode 100644 index 0000000000..1411cd0707 --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/CtsManager.java @@ -0,0 +1,42 @@ +package com.algolia.codegen.cts; + +import com.algolia.codegen.Utils; +import com.fasterxml.jackson.databind.JsonNode; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +abstract class CtsManager { + + public abstract void addSupportingFiles(List supportingFiles); + + public abstract String getPackageDependencies(); + + public void addExtraToBundle(Map bundle) {} + + protected Map getFilteredPackageVersionMap( + List packages + ) { + HashMap result = new HashMap<>(); + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); + + Iterator generatorIterator = openApiToolsConfig + .get("generator-cli") + .get("generators") + .elements(); + while (generatorIterator.hasNext()) { + JsonNode generator = generatorIterator.next(); + JsonNode additionalProperties = generator.get("additionalProperties"); + String packageName = additionalProperties.get("packageName").asText(); + String packageVersion = additionalProperties + .get("packageVersion") + .asText(); + if (packages.contains(packageName)) { + result.put(packageName, packageVersion); + } + } + + return result; + } +} diff --git a/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java new file mode 100644 index 0000000000..d0818c54f0 --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java @@ -0,0 +1,108 @@ +package com.algolia.codegen.cts; + +import com.algolia.codegen.Utils; +import com.algolia.codegen.cts.CtsManager; +import com.fasterxml.jackson.databind.JsonNode; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +public class CtsManagerFactory { + + public static CtsManager getManager(String language) { + if (language == null) { + return null; + } + switch (language) { + case "javascript": + return new JavaScriptCtsManager(); + case "java": + return new JavaCtsManager(); + case "php": + return new PhpCtsManager(); + } + return null; + } + + public static class JavaScriptCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) { + supportingFiles.add( + new SupportingFile("package.mustache", ".", "package.json") + ); + } + + public String getPackageDependencies() { + return String.join( + ",\n", + this.getFilteredPackageVersionMap( + List.of( + "@experimental-api-clients-automation/algoliasearch-lite", + "@experimental-api-clients-automation/client-abtesting", + "@experimental-api-clients-automation/client-analytics", + "@experimental-api-clients-automation/client-common", + "@experimental-api-clients-automation/client-insights", + "@experimental-api-clients-automation/client-personalization", + "@experimental-api-clients-automation/client-predict", + "@experimental-api-clients-automation/client-query-suggestions", + "@experimental-api-clients-automation/client-search", + "@experimental-api-clients-automation/client-sources", + "@experimental-api-clients-automation/recommend", + "@experimental-api-clients-automation/requester-node-http" + ) + ) + .entrySet() + .stream() + .map(entry -> { + return ( + " \"" + entry.getKey() + "\": \"" + entry.getValue() + "\"" + ); + }) + .toArray(String[]::new) + ); + } + + public void addExtraToBundle(Map bundle) { + bundle.put("utilsPackageVersion", this.getUtilsPackageVersion()); + } + + private String getUtilsPackageVersion() { + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); + JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); + + String mainPackage = clientsConfig + .get("javascript") + .get("mainPackage") + .asText(); + + String utilsPackageVersion = openApiToolsConfig + .get("generator-cli") + .get("generators") + .get(mainPackage) + .get("additionalProperties") + .get("utilsPackageVersion") + .asText(); + + return utilsPackageVersion; + } + } + + public static class JavaCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) {} + + public String getPackageDependencies() { + return null; + } + } + + public static class PhpCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) {} + + public String getPackageDependencies() { + return null; + } + } +} diff --git a/tests/CTS/methods/requests/templates/javascript/package.mustache b/tests/CTS/methods/requests/templates/javascript/package.mustache index c482f8da31..2a63380e25 100644 --- a/tests/CTS/methods/requests/templates/javascript/package.mustache +++ b/tests/CTS/methods/requests/templates/javascript/package.mustache @@ -5,20 +5,9 @@ "test": "jest" }, "dependencies": { - {{#packageVersionMap}} - "@experimental-api-clients-automation/algoliasearch-lite": "{{@experimental-api-clients-automation/algoliasearch-lite}}", - "@experimental-api-clients-automation/client-abtesting": "{{@experimental-api-clients-automation/client-abtesting}}", - "@experimental-api-clients-automation/client-analytics": "{{@experimental-api-clients-automation/client-analytics}}", +{{{packageDependencies}}}, "@experimental-api-clients-automation/client-common": "{{utilsPackageVersion}}", - "@experimental-api-clients-automation/client-insights": "{{@experimental-api-clients-automation/client-insights}}", - "@experimental-api-clients-automation/client-personalization": "{{@experimental-api-clients-automation/client-personalization}}", - "@experimental-api-clients-automation/client-predict": "{{@experimental-api-clients-automation/client-predict}}", - "@experimental-api-clients-automation/client-query-suggestions": "{{@experimental-api-clients-automation/client-query-suggestions}}", - "@experimental-api-clients-automation/client-search": "{{@experimental-api-clients-automation/client-search}}", - "@experimental-api-clients-automation/client-sources": "{{@experimental-api-clients-automation/client-sources}}", - "@experimental-api-clients-automation/recommend": "{{@experimental-api-clients-automation/recommend}}", "@experimental-api-clients-automation/requester-node-http": "{{utilsPackageVersion}}" - {{/packageVersionMap}} }, "devDependencies": { "@types/jest": "27.4.1", diff --git a/tests/output/javascript/package.json b/tests/output/javascript/package.json index 5fe8ba3e22..2fed954231 100644 --- a/tests/output/javascript/package.json +++ b/tests/output/javascript/package.json @@ -5,17 +5,17 @@ "test": "jest" }, "dependencies": { + "@experimental-api-clients-automation/client-insights": "0.2.0", + "@experimental-api-clients-automation/recommend": "0.2.0", + "@experimental-api-clients-automation/client-search": "0.2.0", "@experimental-api-clients-automation/algoliasearch-lite": "0.2.0", + "@experimental-api-clients-automation/client-sources": "0.2.0", + "@experimental-api-clients-automation/client-personalization": "0.2.0", "@experimental-api-clients-automation/client-abtesting": "0.2.0", "@experimental-api-clients-automation/client-analytics": "0.2.0", - "@experimental-api-clients-automation/client-common": "0.2.0", - "@experimental-api-clients-automation/client-insights": "0.2.0", - "@experimental-api-clients-automation/client-personalization": "0.2.0", "@experimental-api-clients-automation/client-predict": "0.2.0", "@experimental-api-clients-automation/client-query-suggestions": "0.2.0", - "@experimental-api-clients-automation/client-search": "0.2.0", - "@experimental-api-clients-automation/client-sources": "0.2.0", - "@experimental-api-clients-automation/recommend": "0.2.0", + "@experimental-api-clients-automation/client-common": "0.2.0", "@experimental-api-clients-automation/requester-node-http": "0.2.0" }, "devDependencies": { From b136ec64e74f7dff69468610cf468384eb6c1edf Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 15:27:45 +0200 Subject: [PATCH 07/15] chore: run formatter on java generators --- .../main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java | 2 -- .../main/java/com/algolia/codegen/cts/CtsManagerFactory.java | 1 - 2 files changed, 3 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index 8f749277f3..fe7b34e06f 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -1,8 +1,6 @@ package com.algolia.codegen.cts; import com.algolia.codegen.Utils; -import com.algolia.codegen.cts.CtsManager; -import com.algolia.codegen.cts.CtsManagerFactory; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; diff --git a/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java index d0818c54f0..fea72534bd 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java +++ b/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java @@ -1,7 +1,6 @@ package com.algolia.codegen.cts; import com.algolia.codegen.Utils; -import com.algolia.codegen.cts.CtsManager; import com.fasterxml.jackson.databind.JsonNode; import java.util.*; import org.openapitools.codegen.SupportingFile; From e271b226f2a88b57a04296a0c427667054eaeb43 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 16:05:02 +0200 Subject: [PATCH 08/15] chore: split classes into multiple files --- .../codegen/cts/AlgoliaCtsGenerator.java | 2 + .../codegen/cts/CtsManagerFactory.java | 107 ------------------ .../codegen/cts/{ => manager}/CtsManager.java | 21 ++-- .../cts/manager/CtsManagerFactory.java | 25 ++++ .../codegen/cts/manager/JavaCtsManager.java | 14 +++ .../cts/manager/JavaScriptCtsManager.java | 61 ++++++++++ .../codegen/cts/manager/PhpCtsManager.java | 14 +++ .../templates/javascript/package.mustache | 4 +- 8 files changed, 133 insertions(+), 115 deletions(-) delete mode 100644 generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java rename generators/src/main/java/com/algolia/codegen/cts/{ => manager}/CtsManager.java (67%) create mode 100644 generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java create mode 100644 generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java create mode 100644 generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java create mode 100644 generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index fe7b34e06f..e756ac9ef2 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -1,6 +1,8 @@ package com.algolia.codegen.cts; import com.algolia.codegen.Utils; +import com.algolia.codegen.cts.manager.CtsManager; +import com.algolia.codegen.cts.manager.CtsManagerFactory; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.JsonMappingException; diff --git a/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java deleted file mode 100644 index fea72534bd..0000000000 --- a/generators/src/main/java/com/algolia/codegen/cts/CtsManagerFactory.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.algolia.codegen.cts; - -import com.algolia.codegen.Utils; -import com.fasterxml.jackson.databind.JsonNode; -import java.util.*; -import org.openapitools.codegen.SupportingFile; - -public class CtsManagerFactory { - - public static CtsManager getManager(String language) { - if (language == null) { - return null; - } - switch (language) { - case "javascript": - return new JavaScriptCtsManager(); - case "java": - return new JavaCtsManager(); - case "php": - return new PhpCtsManager(); - } - return null; - } - - public static class JavaScriptCtsManager extends CtsManager { - - public void addSupportingFiles(List supportingFiles) { - supportingFiles.add( - new SupportingFile("package.mustache", ".", "package.json") - ); - } - - public String getPackageDependencies() { - return String.join( - ",\n", - this.getFilteredPackageVersionMap( - List.of( - "@experimental-api-clients-automation/algoliasearch-lite", - "@experimental-api-clients-automation/client-abtesting", - "@experimental-api-clients-automation/client-analytics", - "@experimental-api-clients-automation/client-common", - "@experimental-api-clients-automation/client-insights", - "@experimental-api-clients-automation/client-personalization", - "@experimental-api-clients-automation/client-predict", - "@experimental-api-clients-automation/client-query-suggestions", - "@experimental-api-clients-automation/client-search", - "@experimental-api-clients-automation/client-sources", - "@experimental-api-clients-automation/recommend", - "@experimental-api-clients-automation/requester-node-http" - ) - ) - .entrySet() - .stream() - .map(entry -> { - return ( - " \"" + entry.getKey() + "\": \"" + entry.getValue() + "\"" - ); - }) - .toArray(String[]::new) - ); - } - - public void addExtraToBundle(Map bundle) { - bundle.put("utilsPackageVersion", this.getUtilsPackageVersion()); - } - - private String getUtilsPackageVersion() { - JsonNode openApiToolsConfig = Utils.readJsonFile( - "config/openapitools.json" - ); - JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); - - String mainPackage = clientsConfig - .get("javascript") - .get("mainPackage") - .asText(); - - String utilsPackageVersion = openApiToolsConfig - .get("generator-cli") - .get("generators") - .get(mainPackage) - .get("additionalProperties") - .get("utilsPackageVersion") - .asText(); - - return utilsPackageVersion; - } - } - - public static class JavaCtsManager extends CtsManager { - - public void addSupportingFiles(List supportingFiles) {} - - public String getPackageDependencies() { - return null; - } - } - - public static class PhpCtsManager extends CtsManager { - - public void addSupportingFiles(List supportingFiles) {} - - public String getPackageDependencies() { - return null; - } - } -} diff --git a/generators/src/main/java/com/algolia/codegen/cts/CtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java similarity index 67% rename from generators/src/main/java/com/algolia/codegen/cts/CtsManager.java rename to generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java index 1411cd0707..a769bd5fbc 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/CtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java @@ -1,21 +1,19 @@ -package com.algolia.codegen.cts; +package com.algolia.codegen.cts.manager; import com.algolia.codegen.Utils; import com.fasterxml.jackson.databind.JsonNode; import java.util.*; import org.openapitools.codegen.SupportingFile; -abstract class CtsManager { +public abstract class CtsManager { public abstract void addSupportingFiles(List supportingFiles); - public abstract String getPackageDependencies(); + public abstract Object[] getPackageDependencies(); public void addExtraToBundle(Map bundle) {} - protected Map getFilteredPackageVersionMap( - List packages - ) { + protected Object[] getFilteredPackageVersions(List packages) { HashMap result = new HashMap<>(); JsonNode openApiToolsConfig = Utils.readJsonFile( "config/openapitools.json" @@ -37,6 +35,15 @@ protected Map getFilteredPackageVersionMap( } } - return result; + return result + .entrySet() + .stream() + .map(entry -> { + Map newEntry = new HashMap<>(); + newEntry.put("packageName", entry.getKey()); + newEntry.put("packageVersion", entry.getValue()); + return newEntry; + }) + .toArray(Object[]::new); } } diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java new file mode 100644 index 0000000000..85cc9b7c4a --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java @@ -0,0 +1,25 @@ +package com.algolia.codegen.cts.manager; + +import com.algolia.codegen.Utils; +import com.algolia.codegen.cts.manager.*; +import com.fasterxml.jackson.databind.JsonNode; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +public class CtsManagerFactory { + + public static CtsManager getManager(String language) { + if (language == null) { + return null; + } + switch (language) { + case "javascript": + return new JavaScriptCtsManager(); + case "java": + return new JavaCtsManager(); + case "php": + return new PhpCtsManager(); + } + return null; + } +} diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java new file mode 100644 index 0000000000..ad35a8ff82 --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java @@ -0,0 +1,14 @@ +package com.algolia.codegen.cts.manager; + +import com.algolia.codegen.cts.manager.CtsManager; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +public class JavaCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) {} + + public Object[] getPackageDependencies() { + return null; + } +} diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java new file mode 100644 index 0000000000..23fc046394 --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java @@ -0,0 +1,61 @@ +package com.algolia.codegen.cts.manager; + +import com.algolia.codegen.Utils; +import com.algolia.codegen.cts.manager.CtsManager; +import com.fasterxml.jackson.databind.JsonNode; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +public class JavaScriptCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) { + supportingFiles.add( + new SupportingFile("package.mustache", ".", "package.json") + ); + } + + public Object[] getPackageDependencies() { + return this.getFilteredPackageVersions( + List.of( + "@experimental-api-clients-automation/algoliasearch-lite", + "@experimental-api-clients-automation/client-abtesting", + "@experimental-api-clients-automation/client-analytics", + "@experimental-api-clients-automation/client-common", + "@experimental-api-clients-automation/client-insights", + "@experimental-api-clients-automation/client-personalization", + "@experimental-api-clients-automation/client-predict", + "@experimental-api-clients-automation/client-query-suggestions", + "@experimental-api-clients-automation/client-search", + "@experimental-api-clients-automation/client-sources", + "@experimental-api-clients-automation/recommend", + "@experimental-api-clients-automation/requester-node-http" + ) + ); + } + + public void addExtraToBundle(Map bundle) { + bundle.put("utilsPackageVersion", this.getUtilsPackageVersion()); + } + + private String getUtilsPackageVersion() { + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); + JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); + + String mainPackage = clientsConfig + .get("javascript") + .get("mainPackage") + .asText(); + + String utilsPackageVersion = openApiToolsConfig + .get("generator-cli") + .get("generators") + .get(mainPackage) + .get("additionalProperties") + .get("utilsPackageVersion") + .asText(); + + return utilsPackageVersion; + } +} diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java new file mode 100644 index 0000000000..defe671b55 --- /dev/null +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java @@ -0,0 +1,14 @@ +package com.algolia.codegen.cts.manager; + +import com.algolia.codegen.cts.manager.CtsManager; +import java.util.*; +import org.openapitools.codegen.SupportingFile; + +public class PhpCtsManager extends CtsManager { + + public void addSupportingFiles(List supportingFiles) {} + + public Object[] getPackageDependencies() { + return null; + } +} diff --git a/tests/CTS/methods/requests/templates/javascript/package.mustache b/tests/CTS/methods/requests/templates/javascript/package.mustache index 2a63380e25..bb4a76c5ca 100644 --- a/tests/CTS/methods/requests/templates/javascript/package.mustache +++ b/tests/CTS/methods/requests/templates/javascript/package.mustache @@ -5,7 +5,9 @@ "test": "jest" }, "dependencies": { -{{{packageDependencies}}}, + {{#packageDependencies}} + "{{{packageName}}}": "{{packageVersion}}", + {{/packageDependencies}} "@experimental-api-clients-automation/client-common": "{{utilsPackageVersion}}", "@experimental-api-clients-automation/requester-node-http": "{{utilsPackageVersion}}" }, From 7c434506d7d6f23f044841024b0dbc8e9af26514 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 16:09:45 +0200 Subject: [PATCH 09/15] chore: remove unused code and run formatter --- .../codegen/cts/AlgoliaCtsGenerator.java | 22 ------------------- .../cts/manager/CtsManagerFactory.java | 4 ---- .../codegen/cts/manager/JavaCtsManager.java | 1 - .../cts/manager/JavaScriptCtsManager.java | 1 - .../codegen/cts/manager/PhpCtsManager.java | 1 - 5 files changed, 29 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index e756ac9ef2..cf216f1024 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -121,28 +121,6 @@ protected Builder addMustacheLambdas() { return lambdas; } - private Map getPackageVersionMap() { - HashMap packageVersionMap = new HashMap<>(); - JsonNode openApiToolsConfig = Utils.readJsonFile( - "config/openapitools.json" - ); - - Iterator generatorIterator = openApiToolsConfig - .get("generator-cli") - .get("generators") - .elements(); - while (generatorIterator.hasNext()) { - JsonNode generator = generatorIterator.next(); - JsonNode additionalProperties = generator.get("additionalProperties"); - packageVersionMap.put( - additionalProperties.get("packageName").asText(), - additionalProperties.get("packageVersion").asText() - ); - } - - return packageVersionMap; - } - @Override public Map postProcessSupportingFileData( Map objs diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java index 85cc9b7c4a..b4bb57bf24 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java @@ -1,10 +1,6 @@ package com.algolia.codegen.cts.manager; -import com.algolia.codegen.Utils; -import com.algolia.codegen.cts.manager.*; -import com.fasterxml.jackson.databind.JsonNode; import java.util.*; -import org.openapitools.codegen.SupportingFile; public class CtsManagerFactory { diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java index ad35a8ff82..c074005fb5 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java @@ -1,6 +1,5 @@ package com.algolia.codegen.cts.manager; -import com.algolia.codegen.cts.manager.CtsManager; import java.util.*; import org.openapitools.codegen.SupportingFile; diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java index 23fc046394..e8163867f1 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java @@ -1,7 +1,6 @@ package com.algolia.codegen.cts.manager; import com.algolia.codegen.Utils; -import com.algolia.codegen.cts.manager.CtsManager; import com.fasterxml.jackson.databind.JsonNode; import java.util.*; import org.openapitools.codegen.SupportingFile; diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java index defe671b55..2d43570e20 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java @@ -1,6 +1,5 @@ package com.algolia.codegen.cts.manager; -import com.algolia.codegen.cts.manager.CtsManager; import java.util.*; import org.openapitools.codegen.SupportingFile; From d3c14dc59c8f6c2c7b5a485bb99b90c751b6a958 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 16:21:50 +0200 Subject: [PATCH 10/15] chore: update formatter to include json --- scripts/cts/generate.ts | 6 +----- scripts/formatter.ts | 2 +- tests/output/javascript/package.json | 12 ++++++------ 3 files changed, 8 insertions(+), 12 deletions(-) diff --git a/scripts/cts/generate.ts b/scripts/cts/generate.ts index 5473af1337..2178f45e77 100644 --- a/scripts/cts/generate.ts +++ b/scripts/cts/generate.ts @@ -46,10 +46,6 @@ export async function ctsGenerateMany( if (!getTestOutputFolder(lang)) { continue; } - await formatter( - lang, - toAbsolutePath(`tests/output/${lang}/${getTestOutputFolder(lang)}`), - verbose - ); + await formatter(lang, toAbsolutePath(`tests/output/${lang}`), verbose); } } diff --git a/scripts/formatter.ts b/scripts/formatter.ts index c93ce7d92b..812eac9e77 100644 --- a/scripts/formatter.ts +++ b/scripts/formatter.ts @@ -13,7 +13,7 @@ export async function formatter( let cmd = ''; switch (language) { case 'javascript': - cmd = `yarn eslint --ext=ts ${folder} --fix --no-error-on-unmatched-pattern`; + cmd = `yarn eslint --ext=ts,json ${folder} --fix --no-error-on-unmatched-pattern`; break; case 'java': cmd = `find ${folder} -type f -name "*.java" | xargs java --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED \ diff --git a/tests/output/javascript/package.json b/tests/output/javascript/package.json index 2fed954231..5fe8ba3e22 100644 --- a/tests/output/javascript/package.json +++ b/tests/output/javascript/package.json @@ -5,17 +5,17 @@ "test": "jest" }, "dependencies": { - "@experimental-api-clients-automation/client-insights": "0.2.0", - "@experimental-api-clients-automation/recommend": "0.2.0", - "@experimental-api-clients-automation/client-search": "0.2.0", "@experimental-api-clients-automation/algoliasearch-lite": "0.2.0", - "@experimental-api-clients-automation/client-sources": "0.2.0", - "@experimental-api-clients-automation/client-personalization": "0.2.0", "@experimental-api-clients-automation/client-abtesting": "0.2.0", "@experimental-api-clients-automation/client-analytics": "0.2.0", + "@experimental-api-clients-automation/client-common": "0.2.0", + "@experimental-api-clients-automation/client-insights": "0.2.0", + "@experimental-api-clients-automation/client-personalization": "0.2.0", "@experimental-api-clients-automation/client-predict": "0.2.0", "@experimental-api-clients-automation/client-query-suggestions": "0.2.0", - "@experimental-api-clients-automation/client-common": "0.2.0", + "@experimental-api-clients-automation/client-search": "0.2.0", + "@experimental-api-clients-automation/client-sources": "0.2.0", + "@experimental-api-clients-automation/recommend": "0.2.0", "@experimental-api-clients-automation/requester-node-http": "0.2.0" }, "devDependencies": { From 7a8512b7a6536e6870119ecbbf43eb9a1068f2c0 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 16:23:30 +0200 Subject: [PATCH 11/15] chore: remove redundant check --- .../com/algolia/codegen/cts/manager/CtsManagerFactory.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java index b4bb57bf24..0e9c97ed76 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManagerFactory.java @@ -5,9 +5,6 @@ public class CtsManagerFactory { public static CtsManager getManager(String language) { - if (language == null) { - return null; - } switch (language) { case "javascript": return new JavaScriptCtsManager(); From 62fc1bbac27aefb2213d2f2c8c3e99a9a5d5a424 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Thu, 12 May 2022 16:45:23 +0200 Subject: [PATCH 12/15] chore: adjust to the latest main branch --- config/clients.config.json | 2 ++ .../codegen/cts/manager/CtsManager.java | 21 ++++++++++++++++++- .../cts/manager/JavaScriptCtsManager.java | 8 +------ 3 files changed, 23 insertions(+), 8 deletions(-) diff --git a/config/clients.config.json b/config/clients.config.json index 9a299d5690..8e9f189399 100644 --- a/config/clients.config.json +++ b/config/clients.config.json @@ -1,6 +1,7 @@ { "java": { "folder": "clients/algoliasearch-client-java-2", + "packageName": "algoliasearch-client-java-2", "packageVersion": "0.0.1", "modelFolder": "algoliasearch-core/src/main/java/com/algolia/model", "apiFolder": "algoliasearch-core/src/main/java/com/algolia/api", @@ -22,6 +23,7 @@ }, "php": { "folder": "clients/algoliasearch-client-php", + "packageName": "algoliasearch-client-php", "packageVersion": "0.0.1", "modelFolder": "lib/Model", "customGenerator": "algolia-php", diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java index a769bd5fbc..953764f69f 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java @@ -15,10 +15,11 @@ public void addExtraToBundle(Map bundle) {} protected Object[] getFilteredPackageVersions(List packages) { HashMap result = new HashMap<>(); + + // Read config/openapitools.js for JavaScript JsonNode openApiToolsConfig = Utils.readJsonFile( "config/openapitools.json" ); - Iterator generatorIterator = openApiToolsConfig .get("generator-cli") .get("generators") @@ -26,6 +27,9 @@ protected Object[] getFilteredPackageVersions(List packages) { while (generatorIterator.hasNext()) { JsonNode generator = generatorIterator.next(); JsonNode additionalProperties = generator.get("additionalProperties"); + if (!additionalProperties.has("packageVersion")) { + continue; + } String packageName = additionalProperties.get("packageName").asText(); String packageVersion = additionalProperties .get("packageVersion") @@ -35,6 +39,21 @@ protected Object[] getFilteredPackageVersions(List packages) { } } + JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); + Iterator clientsIterator = clientsConfig.elements(); + while (clientsIterator.hasNext()) { + JsonNode client = clientsIterator.next(); + + if (!client.has("packageVersion")) { + continue; + } + String packageName = client.get("packageName").asText(); + String packageVersion = client.get("packageVersion").asText(); + if (packages.contains(packageName)) { + result.put(packageName, packageVersion); + } + } + return result .entrySet() .stream() diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java index e8163867f1..024ca01138 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java @@ -40,17 +40,11 @@ private String getUtilsPackageVersion() { JsonNode openApiToolsConfig = Utils.readJsonFile( "config/openapitools.json" ); - JsonNode clientsConfig = Utils.readJsonFile("config/clients.config.json"); - - String mainPackage = clientsConfig - .get("javascript") - .get("mainPackage") - .asText(); String utilsPackageVersion = openApiToolsConfig .get("generator-cli") .get("generators") - .get(mainPackage) + .get("javascript-search") .get("additionalProperties") .get("utilsPackageVersion") .asText(); From 0303223adbc55d44e44905b864f5060e4fb5eac6 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Mon, 16 May 2022 10:55:19 +0200 Subject: [PATCH 13/15] chore: wrap with addDataToBundle --- .../java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java | 3 +-- .../java/com/algolia/codegen/cts/manager/CtsManager.java | 7 ++++++- .../algolia/codegen/cts/manager/JavaScriptCtsManager.java | 2 +- 3 files changed, 8 insertions(+), 4 deletions(-) diff --git a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java index cf216f1024..a4039848c9 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java +++ b/generators/src/main/java/com/algolia/codegen/cts/AlgoliaCtsGenerator.java @@ -154,8 +154,7 @@ public Map postProcessSupportingFileData( bundle.put("hasRegionalHost", hasRegionalHost); bundle.put("defaultRegion", client.equals("predict") ? "ew" : "us"); bundle.put("lambda", lambda); - bundle.put("packageDependencies", ctsManager.getPackageDependencies()); - ctsManager.addExtraToBundle(bundle); + ctsManager.addDataToBundle(bundle); List blocks = new ArrayList<>(); ParametersWithDataType paramsType = new ParametersWithDataType( diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java index 953764f69f..33c4bcb40a 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java @@ -11,7 +11,12 @@ public abstract class CtsManager { public abstract Object[] getPackageDependencies(); - public void addExtraToBundle(Map bundle) {} + protected void addExtraToBundle(Map bundle) {} + + public void addDataToBundle(Map bundle) { + bundle.put("packageDependencies", this.getPackageDependencies()); + this.addExtraToBundle(bundle); + } protected Object[] getFilteredPackageVersions(List packages) { HashMap result = new HashMap<>(); diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java index 024ca01138..3bfd8ce80b 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java @@ -32,7 +32,7 @@ public Object[] getPackageDependencies() { ); } - public void addExtraToBundle(Map bundle) { + protected void addExtraToBundle(Map bundle) { bundle.put("utilsPackageVersion", this.getUtilsPackageVersion()); } From 2d04ade1062094347b480fc07930441b8d6b8157 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Mon, 16 May 2022 11:20:41 +0200 Subject: [PATCH 14/15] move the implementation of getPackageDependencies to the js level --- config/clients.config.json | 2 - .../codegen/cts/manager/CtsManager.java | 4 +- .../codegen/cts/manager/JavaCtsManager.java | 4 -- .../cts/manager/JavaScriptCtsManager.java | 46 ++++++++++++------- .../codegen/cts/manager/PhpCtsManager.java | 4 -- 5 files changed, 32 insertions(+), 28 deletions(-) diff --git a/config/clients.config.json b/config/clients.config.json index 8e9f189399..9a299d5690 100644 --- a/config/clients.config.json +++ b/config/clients.config.json @@ -1,7 +1,6 @@ { "java": { "folder": "clients/algoliasearch-client-java-2", - "packageName": "algoliasearch-client-java-2", "packageVersion": "0.0.1", "modelFolder": "algoliasearch-core/src/main/java/com/algolia/model", "apiFolder": "algoliasearch-core/src/main/java/com/algolia/api", @@ -23,7 +22,6 @@ }, "php": { "folder": "clients/algoliasearch-client-php", - "packageName": "algoliasearch-client-php", "packageVersion": "0.0.1", "modelFolder": "lib/Model", "customGenerator": "algolia-php", diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java index 33c4bcb40a..16ab7eeef1 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/CtsManager.java @@ -9,7 +9,9 @@ public abstract class CtsManager { public abstract void addSupportingFiles(List supportingFiles); - public abstract Object[] getPackageDependencies(); + public List getPackageDependencies() { + return null; + } protected void addExtraToBundle(Map bundle) {} diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java index c074005fb5..5ab7457afe 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaCtsManager.java @@ -6,8 +6,4 @@ public class JavaCtsManager extends CtsManager { public void addSupportingFiles(List supportingFiles) {} - - public Object[] getPackageDependencies() { - return null; - } } diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java index 3bfd8ce80b..38b2e27750 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/JavaScriptCtsManager.java @@ -13,23 +13,35 @@ public void addSupportingFiles(List supportingFiles) { ); } - public Object[] getPackageDependencies() { - return this.getFilteredPackageVersions( - List.of( - "@experimental-api-clients-automation/algoliasearch-lite", - "@experimental-api-clients-automation/client-abtesting", - "@experimental-api-clients-automation/client-analytics", - "@experimental-api-clients-automation/client-common", - "@experimental-api-clients-automation/client-insights", - "@experimental-api-clients-automation/client-personalization", - "@experimental-api-clients-automation/client-predict", - "@experimental-api-clients-automation/client-query-suggestions", - "@experimental-api-clients-automation/client-search", - "@experimental-api-clients-automation/client-sources", - "@experimental-api-clients-automation/recommend", - "@experimental-api-clients-automation/requester-node-http" - ) - ); + public List getPackageDependencies() { + List result = new ArrayList(); + + JsonNode openApiToolsConfig = Utils.readJsonFile( + "config/openapitools.json" + ); + Iterator> fieldIterator = openApiToolsConfig + .get("generator-cli") + .get("generators") + .fields(); + + while (fieldIterator.hasNext()) { + Map.Entry field = fieldIterator.next(); + if (!field.getKey().startsWith("javascript-")) { + continue; + } + JsonNode generator = field.getValue(); + JsonNode additionalProperties = generator.get("additionalProperties"); + String packageName = additionalProperties.get("packageName").asText(); + String packageVersion = additionalProperties + .get("packageVersion") + .asText(); + + Map newEntry = new HashMap<>(); + newEntry.put("packageName", packageName); + newEntry.put("packageVersion", packageVersion); + result.add(newEntry); + } + return result; } protected void addExtraToBundle(Map bundle) { diff --git a/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java index 2d43570e20..d3c2565bb9 100644 --- a/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java +++ b/generators/src/main/java/com/algolia/codegen/cts/manager/PhpCtsManager.java @@ -6,8 +6,4 @@ public class PhpCtsManager extends CtsManager { public void addSupportingFiles(List supportingFiles) {} - - public Object[] getPackageDependencies() { - return null; - } } From 70fdd8688eb5ffab39e68f718d5d126949e80b29 Mon Sep 17 00:00:00 2001 From: Eunjae Lee Date: Mon, 16 May 2022 12:01:44 +0200 Subject: [PATCH 15/15] chore: update generation list --- config/generation.config.js | 1 + 1 file changed, 1 insertion(+) diff --git a/config/generation.config.js b/config/generation.config.js index 408ff73a0e..59444df796 100644 --- a/config/generation.config.js +++ b/config/generation.config.js @@ -29,6 +29,7 @@ module.exports = { '!clients/algoliasearch-client-javascript/packages/requester-*/**', '!clients/algoliasearch-client-javascript/packages/client-common/**', + 'tests/output/javascript/package.json', 'tests/output/javascript/src/methods/**', 'tests/output/javascript/src/client/**',