/
githubmirror
/
tldraw
Обзор
Документация
Войти
/
githubmirror
/
tldraw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
internal/scripts/lib/file.ts
90 строк
3 KB
Mime Čuvalo
chore: sort imports using oxfmt (#8330)
24 мар 2026, 15:22
Не верифицирован
24 мар 2026, 15:22
374dfed
Код
Авторство
О чём код?
import { existsSync, readFileSync } from 'fs' import { readFile, writeFile as writeFileUnchecked } from 'fs/promises' import { dirname, join, relative } from 'path' import { fileURLToPath } from 'url' import json5 from 'json5' import { format } from 'oxfmt' import { nicelog } from './nicelog' const __filename = fileURLToPath(import.meta.url) const __dirname = dirname(__filename) export const REPO_ROOT = join(__dirname, '../../..') const _rootPackageJsonPath = join(REPO_ROOT, 'package.json') if (!existsSync(_rootPackageJsonPath)) { throw new Error('expected to find package.json in REPO_ROOT') } const _rootPackageJson = JSON.parse(readFileSync(_rootPackageJsonPath, 'utf8')) if (_rootPackageJson['name'] !== '@tldraw/monorepo') { throw new Error('expected to find @tldraw/monorepo in REPO_ROOT package.json') } export async function readJsonIfExists(file: string) { const fileContents = await readFileIfExists(file) if (fileContents === null) { return null } return json5.parse(fileContents) } export async function readFileIfExists(file: string) { try { return await readFile(file, 'utf8') } catch { return null } } const oxfmtConfig = json5.parse(readFileSync(join(REPO_ROOT, '.oxfmtrc.json'), 'utf8')) export async function writeCodeFile( generator: string | null, language: 'typescript' | 'javascript', filePath: string, code: string ) { const source = generator ? ` // This file is automatically generated by ${generator}. // Do not edit manually. Or do, I'm a comment, not a cop. ${code} ` : code const ext = language === 'typescript' ? 'ts' : 'js' const result = await format(`file.${ext}`, source, oxfmtConfig) await writeStringFile(filePath, result.code) } export async function writeStringFile(filePath: string, contents: string) { await writeFile(filePath, Buffer.from(contents, 'utf-8')) } export async function writeFile(filePath: string, contents: Buffer) { if (process.env.CI && !process.env.ALLOW_REFRESH_ASSETS_CHANGES) { let existingContents: Buffer | null = null try { existingContents = await readFile(filePath) } catch { // Ignore } if (existingContents && !existingContents.equals(contents)) { nicelog( `Asset file ${relative( REPO_ROOT, filePath )} has changed. Please run this script again and commit the changes.` ) nicelog('Contents before:') nicelog(existingContents.toString('utf-8')) nicelog('\nContents after:') nicelog(contents.toString('utf-8')) process.exit(1) } } await writeFileUnchecked(filePath, contents, 'utf-8') } export async function writeJsonFile(filePath: string, contents: unknown) { await writeStringFile(filePath, JSON.stringify(contents, null, '\t') + '\n') }