Skip to content

Commit 857f363

Browse files
authored
feat(clients): generate code snippets from cts (#2511)
1 parent 8cb528d commit 857f363

File tree

85 files changed

+497
-158
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+497
-158
lines changed

.github/workflows/check.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -289,7 +289,7 @@ jobs:
289289
run: yarn cli cts run javascript
290290

291291
- name: Zip artifact before storing
292-
run: zip -r -y clients-javascript.zip clients/algoliasearch-client-javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).testsToStore }} -x "**/node_modules**" "**/.yarn/cache/**" "**/.yarn/install-state.gz" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/.nx/**"
292+
run: zip -r -y clients-javascript.zip clients/algoliasearch-client-javascript ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).testsToStore }} ${{ fromJSON(needs.setup.outputs.JAVASCRIPT_DATA).snippetsToStore }} -x "**/node_modules**" "**/.yarn/cache/**" "**/.yarn/install-state.gz" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/.nx/**"
293293

294294
- name: Store javascript clients
295295
uses: actions/upload-artifact@v4
@@ -367,7 +367,7 @@ jobs:
367367
run: yarn cli cts run ${{ matrix.client.language }}
368368

369369
- name: Zip artifact before storing
370-
run: zip -r -y clients-${{ matrix.client.language }}.zip ${{ matrix.client.path }} ${{ matrix.client.testsToStore }} -x "**/node_modules**" "**/__pycache__/**" "**/.yarn/cache/**" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/vendor/**" "**/target/**" "**/.dart_tool/**"
370+
run: zip -r -y clients-${{ matrix.client.language }}.zip ${{ matrix.client.path }} ${{ matrix.client.testsToStore }} ${{ matrix.client.snippetsToStore }} -x "**/node_modules**" "**/__pycache__/**" "**/.yarn/cache/**" "**/build/**" "**/dist/**" "**/.gradle/**" "**/bin/**" "**/vendor/**" "**/target/**" "**/.dart_tool/**"
371371

372372
- name: Store ${{ matrix.client.language }} clients
373373
uses: actions/upload-artifact@v4

config/clients.config.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,10 @@
2020
"tests": {
2121
"extension": ".test.java",
2222
"outputFolder": "src/test/java/com/algolia"
23+
},
24+
"snippets": {
25+
"extension": ".java",
26+
"outputFolder": "src/test/java/com/algolia"
2327
}
2428
},
2529
"javascript": {
@@ -75,6 +79,10 @@
7579
"tests": {
7680
"extension": ".test.ts",
7781
"outputFolder": "src"
82+
},
83+
"snippets": {
84+
"extension": ".ts",
85+
"outputFolder": "src"
7886
}
7987
},
8088
"php": {
@@ -98,6 +106,10 @@
98106
"tests": {
99107
"extension": "Test.php",
100108
"outputFolder": "src"
109+
},
110+
"snippets": {
111+
"extension": ".php",
112+
"outputFolder": "src"
101113
}
102114
},
103115
"go": {
@@ -197,6 +209,10 @@
197209
"tests": {
198210
"extension": "_test.py",
199211
"outputFolder": "tests"
212+
},
213+
"snippets": {
214+
"extension": ".py",
215+
"outputFolder": ""
200216
}
201217
},
202218
"ruby": {

config/generation.config.mjs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ export const patterns = [
33
'specs/bundled/*.yml',
44

55
'clients/**',
6+
'snippets/**',
67
'!clients/README.md',
78
'!clients/**/.openapi-generator-ignore',
89

@@ -16,6 +17,7 @@ export const patterns = [
1617
'tests/output/java/build.gradle',
1718

1819
// JavaScript
20+
'!snippets/javascript/*.json',
1921
'!clients/algoliasearch-client-javascript/*',
2022
'!clients/algoliasearch-client-javascript/.github/**',
2123
'!clients/algoliasearch-client-javascript/.yarn/**',
@@ -78,6 +80,7 @@ export const patterns = [
7880
'!clients/algoliasearch-client-dart/packages/algoliasearch/lib/algoliasearch.dart',
7981

8082
// Python
83+
'!snippets/python/pyproject.toml',
8184
'clients/algoliasearch-client-python/**',
8285
'!clients/algoliasearch-client-python/algoliasearch/http/**',
8386
'!clients/algoliasearch-client-python/algoliasearch/py.typed',

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.algolia.codegen.cts.lambda.*;
44
import com.algolia.codegen.cts.manager.CTSManager;
55
import com.algolia.codegen.cts.manager.CTSManagerFactory;
6+
import com.algolia.codegen.cts.snippets.*;
67
import com.algolia.codegen.cts.tests.*;
78
import com.algolia.codegen.exceptions.*;
89
import com.algolia.codegen.utils.*;
@@ -53,12 +54,12 @@ public void processOpts() {
5354
String outputFolder = Helpers.getClientConfigField(language, "tests", "outputFolder");
5455
String extension = Helpers.getClientConfigField(language, "tests", "extension");
5556

56-
setTemplateDir("templates/" + language + "/tests");
57-
setOutputDir("tests/output/" + language);
57+
setTemplateDir("templates/" + language);
5858
ctsManager.addSupportingFiles(supportingFiles);
5959

6060
testsGenerators.add(new TestsRequest(language, client));
6161
testsGenerators.add(new TestsClient(language, client));
62+
testsGenerators.add(new SnippetsGenerator(language, client));
6263

6364
for (TestsGenerator testGen : testsGenerators) {
6465
testGen.addSupportingFiles(supportingFiles, outputFolder, extension);

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,9 @@
22

33
import com.algolia.codegen.exceptions.GeneratorException;
44
import com.algolia.codegen.utils.*;
5-
import java.util.List;
65
import java.util.Map;
76
import org.apache.commons.lang3.StringUtils;
87
import org.apache.commons.text.WordUtils;
9-
import org.openapitools.codegen.SupportingFile;
108

119
public class DartCTSManager implements CTSManager {
1210

@@ -16,11 +14,6 @@ public DartCTSManager(String clientName) {
1614
this.clientName = clientName;
1715
}
1816

19-
@Override
20-
public void addSupportingFiles(List<SupportingFile> supportingFiles) {
21-
// NO-OP
22-
}
23-
2417
@Override
2518
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
2619
bundle.put("packageVersion", Helpers.getClientConfigField("dart", "packageVersion"));

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public class GoCTSManager implements CTSManager {
88

99
@Override
1010
public void addSupportingFiles(List<SupportingFile> supportingFiles) {
11-
supportingFiles.add(new SupportingFile("common.mustache", "tests/requests", "common.go"));
11+
supportingFiles.add(new SupportingFile("tests/common.mustache", "tests/output/go/tests/requests", "common.go"));
1212
}
1313

1414
@Override

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ public JavaCTSManager(String client) {
1515

1616
@Override
1717
public void addSupportingFiles(List<SupportingFile> supportingFiles) {
18-
supportingFiles.add(new SupportingFile("build.mustache", "", "build.gradle"));
18+
supportingFiles.add(new SupportingFile("tests/build.mustache", "tests/output/java", "build.gradle"));
19+
supportingFiles.add(new SupportingFile("tests/build.mustache", "snippets/java", "build.gradle"));
1920
}
2021

2122
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public JavascriptCTSManager(String client) {
1616

1717
@Override
1818
public void addSupportingFiles(List<SupportingFile> supportingFiles) {
19-
supportingFiles.add(new SupportingFile("package.mustache", "", "package.json"));
19+
supportingFiles.add(new SupportingFile("tests/package.mustache", "tests/output/javascript", "package.json"));
2020
}
2121

2222
@Override

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

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22

33
import com.algolia.codegen.exceptions.GeneratorException;
44
import com.algolia.codegen.utils.*;
5-
import java.util.List;
65
import java.util.Map;
7-
import org.openapitools.codegen.SupportingFile;
86

97
public class KotlinCTSManager implements CTSManager {
108

@@ -14,11 +12,6 @@ public KotlinCTSManager(String client) {
1412
this.client = client;
1513
}
1614

17-
@Override
18-
public void addSupportingFiles(List<SupportingFile> supportingFiles) {
19-
// NO-OP
20-
}
21-
2215
@Override
2316
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {
2417
bundle.put("packageVersion", Helpers.getClientConfigField("kotlin", "packageVersion"));
Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,5 @@
11
package com.algolia.codegen.cts.manager;
22

3-
import com.algolia.codegen.exceptions.GeneratorException;
43
import java.util.*;
5-
import org.openapitools.codegen.SupportingFile;
64

7-
public class PhpCTSManager implements CTSManager {
8-
9-
@Override
10-
public void addSupportingFiles(List<SupportingFile> supportingFiles) {}
11-
12-
@Override
13-
public void addDataToBundle(Map<String, Object> bundle) throws GeneratorException {}
14-
}
5+
public class PhpCTSManager implements CTSManager {}

0 commit comments

Comments
 (0)