#!/usr/bin/env node
/**
 * Copy `docs/changelog.md` → `ordinis-admin-ui/src/changelog-public.md`.
 *
 * Why: public CHANGELOG лежит в `docs/` (single source of truth, читается
 * mkdocs/Diplodoc для /docs/changelog.html). admin-ui WhatsNewButton тоже
 * импортирует его через Vite `?raw`, но Docker build context = admin-ui/,
 * `docs/` снаружи. Скрипт вызывается через `predev` / `prebuild` npm
 * hooks — копирует файл в admin-ui/src/ перед start'ом vite.
 *
 * В CI копию делает `.gitlab-ci.yml` `docker-admin-ui:before_script:` —
 * перед docker build файл уже в context'е, Dockerfile `COPY . .` подхватит.
 *
 * **Critical name choice:** `changelog-public.md`, не `changelog.md`. macOS
 * по умолчанию case-insensitive filesystem (APFS / HFS+) — `changelog.md` ≡
 * `CHANGELOG.md` ≡ existing internal CHANGELOG.md → overwrite. Suffix
 * `-public` устраняет конфликт + явно показывает purpose. Plus файл живёт
 * в `src/` (не root) чтобы Vite `?raw` ресолвил по relative path без `..`.
 *
 * `src/changelog-public.md` — generated, gitignored.
 */
import { copyFileSync, existsSync, mkdirSync } from 'node:fs'
import { dirname, resolve } from 'node:path'
import { fileURLToPath } from 'node:url'

const __dirname = dirname(fileURLToPath(import.meta.url))
const SRC = resolve(__dirname, '..', '..', 'docs', 'changelog.md')
const DST = resolve(__dirname, '..', 'src', 'changelog-public.md')

if (!existsSync(SRC)) {
  console.error(`copy-changelog: source missing ${SRC}`)
  process.exit(0)
}

mkdirSync(dirname(DST), { recursive: true })
copyFileSync(SRC, DST)
console.log(`copy-changelog: ${SRC} → ${DST}`)
