Skip to content

Commit 6c0d9c9

Browse files
committed
chore: programmatic file discovery
1 parent fe9d94e commit 6c0d9c9

File tree

1 file changed

+40
-33
lines changed

1 file changed

+40
-33
lines changed

scripts/ci/codegen/pushToAlgoliaWeb.ts

Lines changed: 40 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,51 +1,56 @@
11
import fsp from 'fs/promises';
2-
32
import { resolve } from 'path';
43

54
import {
65
configureGitHubAuthor,
76
ensureGitHubToken,
7+
exists,
88
getOctokit,
99
gitBranchExists,
1010
gitCommit,
11+
LANGUAGES,
1112
OWNER,
1213
run,
1314
setVerbose,
1415
toAbsolutePath,
1516
} from '../../common.js';
1617
import { getNbGitDiff } from '../utils.js';
1718

19+
import {} from 'fs';
20+
import { getClientsConfigField } from '../../config.js';
1821
import { commitStartRelease } from './text.js';
1922

20-
const languageFiles = {
21-
csharp: 'guides/csharp/src/saveObjectsMovies.cs',
22-
go: 'guides/go/src/saveObjectsMovies.go',
23-
java: 'guides/java/src/test/java/com/algolia/saveObjectsMovies.java',
24-
javascript: 'guides/javascript/src/saveObjectsMovies.ts',
25-
kotlin: 'guides/kotlin/src/main/kotlin/com/algolia/snippets/saveObjectsMovies.kt',
26-
php: 'guides/php/src/saveObjectsMovies.php',
27-
python: 'guides/python/saveObjectsMovies.py',
28-
ruby: 'guides/ruby/saveObjectsMovies.rb',
29-
scala: 'guides/scala/src/main/scala/saveObjectsMovies.scala',
30-
swift: 'guides/swift/Sources/saveObjectsMovies.swift',
31-
};
32-
const generateJSON = async (outputFile: string): Promise<void> => {
33-
const filesPromises = Object.entries(languageFiles).map(async (p) => {
34-
const snippet = await fsp.readFile(toAbsolutePath(p[1]), 'utf-8');
35-
36-
return [
37-
[p[0]],
38-
snippet
23+
async function generateJSON(outputFile: string): Promise<void> {
24+
const guides = {};
25+
for (const language of LANGUAGES) {
26+
if (!(await exists(toAbsolutePath(`docs/guides/${language}`)))) {
27+
continue;
28+
}
29+
30+
const pathToGuides = toAbsolutePath(
31+
`docs/guides/${language}/${getClientsConfigField(language, ['snippets', 'outputFolder'])}`,
32+
);
33+
const files = await fsp.readdir(pathToGuides);
34+
for (const file of files) {
35+
const extension = getClientsConfigField(language, ['snippets', 'extension']);
36+
if (!file.endsWith(extension)) {
37+
continue;
38+
}
39+
40+
const guideName = file.replaceAll(extension, '');
41+
if (!guides[guideName]) {
42+
guides[guideName] = {};
43+
}
44+
45+
guides[guideName][language] = (await fsp.readFile(`${pathToGuides}/${file}`, 'utf-8'))
3946
.replace('ALGOLIA_APPLICATION_ID', 'YourApplicationID')
4047
.replace('ALGOLIA_API_KEY', 'YourWriteAPIKey')
41-
.replace('<YOUR_INDEX_NAME>', 'movies_index'),
42-
];
43-
});
44-
45-
const files = await Promise.all(filesPromises);
48+
.replace('<YOUR_INDEX_NAME>', 'movies_index');
49+
}
50+
}
4651

47-
await fsp.writeFile(outputFile, JSON.stringify(Object.fromEntries(files), null, 2));
48-
};
52+
await fsp.writeFile(outputFile, JSON.stringify(guides, null, 2));
53+
}
4954

5055
async function pushToAlgoliaWeb(): Promise<void> {
5156
const githubToken = ensureGitHubToken();
@@ -62,23 +67,25 @@ async function pushToAlgoliaWeb(): Promise<void> {
6267
return;
6368
}
6469

65-
console.log(`Pushing to ${OWNER}/${repository}`);
66-
6770
const targetBranch = 'feat/automated-update-from-api-clients-automation-repository';
6871
const githubURL = `https://${githubToken}:${githubToken}@github.com/${OWNER}/${repository}`;
6972
const tempGitDir = resolve(process.env.RUNNER_TEMP! || toAbsolutePath('foo/local/test'), repository);
7073
await fsp.rm(tempGitDir, { force: true, recursive: true });
7174
await run(`git clone --depth 1 ${githubURL} ${tempGitDir}`);
75+
76+
const outputFile = toAbsolutePath(`${tempGitDir}/_client/src/routes/launchpad/onboarding-snippets.json`);
77+
78+
console.log(`Generating JSON output file from guides at path ${outputFile}`);
79+
80+
await generateJSON(outputFile);
81+
82+
console.log(`Pushing to ${OWNER}/${repository}`);
7283
if (await gitBranchExists(targetBranch, tempGitDir)) {
7384
await run(`git fetch origin ${targetBranch}`, { cwd: tempGitDir });
7485
await run(`git push -d origin ${targetBranch}`, { cwd: tempGitDir });
7586
}
7687
await run(`git checkout -B ${targetBranch}`, { cwd: tempGitDir });
7788

78-
const pathToSnippets = toAbsolutePath(`${tempGitDir}/_client/src/routes/launchpad/onboarding-snippets.json`);
79-
80-
await generateJSON(pathToSnippets);
81-
8289
if ((await getNbGitDiff({ head: null, cwd: tempGitDir })) === 0) {
8390
console.log('❎ Skipping push to AlgoliaWeb because there is no change.');
8491

0 commit comments

Comments
 (0)