Files
leetcode/.omp/commands/sync-solutions.md
T

35 lines
2.3 KiB
Markdown
Raw Normal View History

---
description: Sync work/ leetcode solutions into docs/solutions/ pages (gold standard format)
---
Sync every leetcode solution under `work/` into a docs page under `docs/solutions/`, formatted like the gold standard `docs/solutions/344-reverse-string.mdx`. Extra focus (optional): $@
## Run the script
The port is fully scripted — do not hand-write pages:
```
bun run sync
```
`scripts/sync.ts` does the whole pipeline:
- Globs `work/**/*.{js,py}` (`<number>.<kebab-slug>.{js,py}` under `work/<Difficulty>/<Category>/`) and groups the two language variants of a problem by leetcode number.
- Parses each file's header comment (js block comment / py docstring) into title, difficulty, statement, examples, constraints, and follow-up.
- New problems get a full page at `docs/solutions/<leetcode-number>-<kebab-slug>.mdx`: frontmatter, `<Badge>` topic (README curriculum table, falling back to the `work/` subdirectory), `::::warning` for follow-ups/special requirements, examples, constraints, and the solution code verbatim.
- The filename prefix is the leetcode problem number — it orders the sidebar numerically and is stripped from the URL (`344-reverse-string.mdx``/solutions/reverse-string`). The script renames any page whose filename drifts from `<leetcode-number>-<kebab-slug>.mdx`.
- Already-ported pages (frontmatter title starts with the leetcode number) only get their `## Solution` section regenerated — curated prose is never touched.
- Problems solved in both languages render as a `<CodeGroup>` (Python first, then JavaScript); single-language solutions render as a plain fence.
The script prints the report table: work file → docs page → created / renamed / updated / skipped (already in sync).
## Review
Skim any **created** pages — the prose transforms (backticking literals in example explanations, warning detection) are heuristic. Fix wording by editing the page prose directly; it won't be overwritten on the next sync. Never edit inside `## Solution` — that section is owned by the script and synced from `work/`.
## Verify
1. `bunx blume build --isolated` must succeed with no new warnings; confirm each new route generated (`/solutions/<slug>`).
2. Spot-check one new page's built HTML for the badge, callout (when present), and solution code.
3. `rm -rf .blume-verify` when done.