/
pkopachevsky
/
langboard
Обзор
Документация
Войти
/
pkopachevsky
/
langboard
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
scripts/segmentImport/normalize.ts
56 строк
2 KB
pkopachevsky
Release 0.18.0 maintainability refactor
27 июл 2026, 23:03
27 июл 2026, 23:03
7cb5dd4
Код
Авторство
О чём код?
import { readFile } from "node:fs/promises"; import { flagString, parseArgs, readIntFlag, resolveOutputPath, writeJsonFile } from "./common.js"; import { normalizeMarkdown } from "./normalizeCore.js"; async function main() { const options = parseArgs(); const inputPath = options.positionals[0]; if (!inputPath) { throw new Error( "usage: npm run segment:normalize -- <md-path> --work <slug> --section <slug> --order <n> " + "[--segment <slug>] [--kind line|paragraph|utterance] [--section-title <title>] " + "[--source <text>] [--translation <text>] [--out <path>]", ); } const workSlug = requireFlag(options, "work"); const sectionSlug = requireFlag(options, "section"); const order = readIntFlag(options, "order"); if (order === undefined) throw new Error("--order is required"); const explicitKind = flagString(options, "kind"); const kind = explicitKind === "line" || explicitKind === "utterance" || explicitKind === "paragraph" ? explicitKind : undefined; if (explicitKind && !kind) { throw new Error("--kind must be line, paragraph, or utterance"); } const result = normalizeMarkdown({ markdown: await readFile(inputPath, "utf-8"), inputPath, workSlug, sectionSlug, order, segmentSlug: flagString(options, "segment"), sectionTitle: flagString(options, "section-title"), kind, sourceOverride: flagString(options, "source"), translationOverride: flagString(options, "translation"), }); const outputPath = resolveOutputPath(inputPath, workSlug, result.manifest.segment.slug, flagString(options, "out")); await writeJsonFile(outputPath, result.manifest); console.log(`wrote ${outputPath}`); for (const warning of result.warnings) console.warn(`warning: ${warning}`); } function requireFlag(options: ReturnType<typeof parseArgs>, key: string) { const value = flagString(options, key); if (!value) throw new Error(`--${key} is required`); return value; } main().catch((error) => { console.error(error instanceof Error ? error.message : String(error)); process.exit(1); });