forked from boos/BoosAPI
42 lines
1.5 KiB
TypeScript
42 lines
1.5 KiB
TypeScript
import { cpSync, existsSync, mkdirSync, rmSync, statSync } from 'node:fs';
|
|
import { basename, dirname, resolve } from 'node:path';
|
|
import { fileURLToPath } from 'node:url';
|
|
|
|
function resolveRepoRoot(): string {
|
|
return resolve(dirname(fileURLToPath(import.meta.url)), '../..');
|
|
}
|
|
|
|
function shouldCopySharedArtifact(sourcePath: string): boolean {
|
|
if (statSync(sourcePath).isDirectory()) return true;
|
|
const filename = basename(sourcePath);
|
|
return filename.endsWith('.js') || filename.endsWith('.d.ts');
|
|
}
|
|
|
|
export function copyRuntimeDbGeneratedAssets(repoRoot: string = resolveRepoRoot()): void {
|
|
const sourceDir = resolve(repoRoot, 'src/server/db/generated');
|
|
const targetDir = resolve(repoRoot, 'dist/server/db/generated');
|
|
const sharedSourceDir = resolve(repoRoot, 'src/shared');
|
|
const sharedTargetDir = resolve(repoRoot, 'dist/shared');
|
|
|
|
if (!existsSync(sourceDir)) {
|
|
throw new Error(`Runtime DB generated assets directory does not exist: ${sourceDir}`);
|
|
}
|
|
|
|
mkdirSync(dirname(targetDir), { recursive: true });
|
|
cpSync(sourceDir, targetDir, { recursive: true, force: true });
|
|
|
|
if (existsSync(sharedSourceDir)) {
|
|
rmSync(sharedTargetDir, { recursive: true, force: true });
|
|
mkdirSync(dirname(sharedTargetDir), { recursive: true });
|
|
cpSync(sharedSourceDir, sharedTargetDir, {
|
|
recursive: true,
|
|
force: true,
|
|
filter: (sourcePath) => shouldCopySharedArtifact(sourcePath),
|
|
});
|
|
}
|
|
}
|
|
|
|
if (process.argv[1] && resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
|
copyRuntimeDbGeneratedAssets();
|
|
}
|