Skip to content

Commit 0ec7fc8

Browse files
committed
fix(docs-bundle): dedupe dotenv loader, drop compat re-export, serialize CDN uploads
Move loadDotenvIfAvailable into oss-cdn.mjs instead of defining it twice in upload-openapi.mjs and upload-docs-bundle.mjs. Drop upload-openapi.mjs's re-export of requiredEnv/validateRequiredEnv now that its test imports validateRequiredEnv from oss-cdn.mjs directly. Add a concurrency group to docs-bundle-upload.yml so two pushes to the same branch in quick succession can't finish out of order and leave a stale tarball on the CDN.
1 parent 9c5f5ae commit 0ec7fc8

5 files changed

Lines changed: 21 additions & 27 deletions

File tree

‎.github/workflows/docs-bundle-upload.yml‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ name: Upload docs bundle to OSS
33
env:
44
CDN_URL: 'https://docs-cdn.flashcat.cloud'
55

6+
concurrency:
7+
group: docs-bundle-upload-${{ github.ref }}
8+
cancel-in-progress: true
9+
610
on:
711
push:
812
branches: [main, test]

‎integration-docs/scripts/oss-cdn.mjs‎

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,3 +51,16 @@ export async function refreshCdnCache(cdnRuntime, url) {
5151
await cdnRuntime.client.refreshObjectCaches(request);
5252
console.log(`Refreshed CDN cache: ${url}`);
5353
}
54+
55+
// Load .env for local runs. Tolerate 'dotenv' not being installed (e.g. a
56+
// pruned install) rather than failing scripts that get their env from CI.
57+
export async function loadDotenvIfAvailable() {
58+
try {
59+
const { default: dotenv } = await import('dotenv');
60+
dotenv.config();
61+
} catch (err) {
62+
if (err.code !== 'ERR_MODULE_NOT_FOUND') {
63+
throw err;
64+
}
65+
}
66+
}

‎integration-docs/scripts/upload-docs-bundle.mjs‎

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import { buildCdnUrl } from './cdn-url.mjs';
55
import {
66
createCdnRuntime,
77
createOssClient,
8+
loadDotenvIfAvailable,
89
normalizeCdnDir,
910
refreshCdnCache,
1011
validateRequiredEnv
@@ -54,17 +55,6 @@ export async function uploadDocsBundle({
5455
return cdnUrl;
5556
}
5657

57-
async function loadDotenvIfAvailable() {
58-
try {
59-
const { default: dotenv } = await import('dotenv');
60-
dotenv.config();
61-
} catch (err) {
62-
if (err.code !== 'ERR_MODULE_NOT_FOUND') {
63-
throw err;
64-
}
65-
}
66-
}
67-
6858
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
6959
await loadDotenvIfAvailable();
7060
await uploadDocsBundle();

‎integration-docs/scripts/upload-openapi.mjs‎

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ import { buildCdnUrl } from './cdn-url.mjs';
55
import {
66
createCdnRuntime,
77
createOssClient,
8+
loadDotenvIfAvailable,
89
normalizeCdnDir,
910
refreshCdnCache,
10-
requiredEnv,
1111
validateRequiredEnv
1212
} from './oss-cdn.mjs';
1313

@@ -18,8 +18,6 @@ const defaultApiReferenceDir = path.join(repoRoot, 'api-reference');
1818
const docsBaseUrl = 'https://docs.flashcat.cloud';
1919
const httpMethods = ['get', 'post', 'put', 'patch', 'delete', 'head', 'options', 'trace'];
2020

21-
export { requiredEnv, validateRequiredEnv };
22-
2321
export function listOpenapiJsonFiles(apiReferenceDir = defaultApiReferenceDir) {
2422
if (!fs.existsSync(apiReferenceDir)) {
2523
throw new Error(`OpenAPI directory does not exist: ${apiReferenceDir}`);
@@ -137,17 +135,6 @@ export async function uploadOpenapiJsonFiles({
137135
console.log(`Uploaded ${files.length} OpenAPI JSON files and manifest from ${apiReferenceDir}`);
138136
}
139137

140-
async function loadDotenvIfAvailable() {
141-
try {
142-
const { default: dotenv } = await import('dotenv');
143-
dotenv.config();
144-
} catch (err) {
145-
if (err.code !== 'ERR_MODULE_NOT_FOUND') {
146-
throw err;
147-
}
148-
}
149-
}
150-
151138
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
152139
await loadDotenvIfAvailable();
153140
await uploadOpenapiJsonFiles();

‎integration-docs/scripts/upload-openapi.test.mjs‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,12 @@ import os from 'node:os';
44
import path from 'node:path';
55
import test from 'node:test';
66

7+
import { validateRequiredEnv } from './oss-cdn.mjs';
78
import {
89
buildOpenapiReferenceIndex,
910
buildOssFilePath,
1011
listOpenapiJsonFiles,
11-
uploadOpenapiJsonFiles,
12-
validateRequiredEnv
12+
uploadOpenapiJsonFiles
1313
} from './upload-openapi.mjs';
1414

1515
test('listOpenapiJsonFiles returns only direct JSON files sorted by name', () => {

0 commit comments

Comments
 (0)