Some checks failed
📦 Build / build (push) Has been cancelled
🧪 CI Test / test shard (1/4) (push) Has been cancelled
🧪 CI Test / test shard (2/4) (push) Has been cancelled
🧪 CI Test / test shard (3/4) (push) Has been cancelled
🧪 CI Test / test shard (4/4) (push) Has been cancelled
🧪 CI Test / test (push) Has been cancelled
🧪 CI Test / eslint (push) Has been cancelled
🧪 CI Test / typecheck (push) Has been cancelled
🔫 Sync to Pro / dispatch-sync (push) Has been cancelled
🔮 Sync Mirror / sync (push) Has been cancelled
65 lines
1.9 KiB
TypeScript
65 lines
1.9 KiB
TypeScript
/**
|
|
* Copyright 2023-present DreamNum Co., Ltd.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
import fs from 'node:fs';
|
|
import path from 'node:path';
|
|
import process from 'node:process';
|
|
|
|
function snackToPascal(snack: string) {
|
|
return snack
|
|
.split('-')
|
|
.filter(Boolean)
|
|
.map((part) => part[0].toUpperCase() + part.slice(1))
|
|
.join('');
|
|
}
|
|
|
|
const GENERATED_FILE_PATH = path.join(
|
|
process.cwd(),
|
|
'src/components/docs/layout/hyphenation/pattern-loaders.gen.ts'
|
|
);
|
|
|
|
const PATTERNS_DIR = path.join(
|
|
process.cwd(),
|
|
'src/components/docs/layout/hyphenation/patterns'
|
|
);
|
|
|
|
const files = fs.readdirSync(PATTERNS_DIR)
|
|
.filter((file) => file.endsWith('.ts'))
|
|
.map((file) => file.replace(/\.ts$/, ''))
|
|
.sort((a, b) => a.localeCompare(b));
|
|
|
|
const entries = files
|
|
.map((stem) => {
|
|
const key = snackToPascal(stem);
|
|
return ` [Lang.${key}]: () => import('./patterns/${stem}'),`;
|
|
})
|
|
.join('\n');
|
|
|
|
const content = [
|
|
'/* eslint-disable */',
|
|
"import { Lang } from './lang';",
|
|
'',
|
|
'// Generated by scripts/generate-hyphen-pattern-loaders.mts',
|
|
'export const PATTERN_LOADERS: Partial<Record<Lang, () => Promise<unknown>>> = {',
|
|
entries,
|
|
'};',
|
|
'',
|
|
].join('\n');
|
|
|
|
fs.mkdirSync(path.dirname(GENERATED_FILE_PATH), { recursive: true });
|
|
fs.writeFileSync(GENERATED_FILE_PATH, content);
|
|
console.log(`Updated ${GENERATED_FILE_PATH}`);
|