Files
pages/packages/blog/utils.ts
Cal H. 2aabcf36ee refactor: migrate to common eslint+prettier configs (#4168)
* refactor: migrate to common eslint+prettier configs

* fix: prettier frontend

* feat: config changes

* fix: lint issues

* fix: lint

* fix: type imports

* fix: cyclical import issue

* fix: lockfile

* fix: missing dep

* fix: switch to tabs

* fix: continue switch to tabs

* fix: rustfmt parity

* fix: moderation lint issue

* fix: lint issues

* fix: ui intl

* fix: lint issues

* Revert "fix: rustfmt parity"

This reverts commit cb99d2376c321d813d4b7fc7e2a213bb30a54711.

* feat: revert last rs
2025-08-14 20:48:38 +00:00

41 lines
1.1 KiB
TypeScript

import { execSync } from 'child_process'
import * as path from 'path'
let REPO_ROOT_CACHE: string | null = null
export function getRepoRoot(): string {
if (REPO_ROOT_CACHE) return REPO_ROOT_CACHE
return (REPO_ROOT_CACHE = execSync('git rev-parse --show-toplevel').toString().trim())
}
export function repoPath(...segments: string[]): string {
return path.posix.join(getRepoRoot(), ...segments)
}
export async function copyDir(
src: string,
dest: string,
logFn: (src: string, dest: string) => void = () => {},
): Promise<void> {
const { promises: fs } = await import('fs')
await fs.mkdir(dest, { recursive: true })
const entries = await fs.readdir(src, { withFileTypes: true })
for (const entry of entries) {
const srcPath = path.posix.join(src, entry.name)
const destPath = path.posix.join(dest, entry.name)
if (entry.isDirectory()) {
await copyDir(srcPath, destPath, logFn)
} else if (entry.isFile()) {
await fs.copyFile(srcPath, destPath)
logFn(srcPath, destPath)
}
}
}
export function toVarName(file: string): string {
return file
.replace(/\.md$/, '')
.replace(/[^a-zA-Z0-9]/g, '_')
.replace(/^_+/, '')
.replace(/_+$/, '')
}