Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 | import {existsSync, mkdirSync, readFileSync, writeFileSync} from 'fs'; import {basename, dirname, join} from 'path'; import {globSync} from 'tinyglobby'; export async function createRealm( destUrl: string, logger?: {warn?: (message: string) => void}, ): Promise<string[]> { const result = []; const url = import.meta.resolve('@feasibleone/blong-kopi/package.json'); const cwd = url.startsWith('file://') ? dirname(url.slice(7)) : url; destUrl = destUrl.startsWith('file://') ? dirname(destUrl.slice(7)) : destUrl; const subject = basename(destUrl); const replace = (str: string): string => str.replaceAll('$subject', subject).replaceAll('$Subject', subject.toUpperCase()); logger?.warn?.(`Creating realm ${destUrl} from ${cwd}`); for (const file of globSync(['**/*.ts'], { cwd, ignore: ['**/node_modules/**', '.*'], })) { const [source, dest] = [join(cwd, file), join(destUrl, replace(file))]; if (!existsSync(dest) || readFileSync(dest, 'utf8').startsWith('import unchanged')) { mkdirSync(dirname(dest), {recursive: true}); writeFileSync( dest, "import unchanged from '@feasibleone/blong';\r" + replace(readFileSync(source, 'utf8')), ); result.push(dest); } } writeFileSync( join(destUrl, 'package.json'), readFileSync(join(cwd, 'package.json'), 'utf8').replace('@feasibleone/blong-kopi', subject), ); return result; } |