(args: argparse.Namespace)
| 259 | |
| 260 | |
| 261 | def sync_docs(args: argparse.Namespace) -> None: |
| 262 | if args.source_root is None: |
| 263 | raise ValueError("--source-root is required when --operation=sync") |
| 264 | source_root = args.source_root.resolve() |
| 265 | docs_root = args.docs_website_root.resolve() |
| 266 | source_docs = source_root / "docs" |
| 267 | source_fern = source_root / "fern" |
| 268 | target_fern = docs_root / "fern" |
| 269 | |
| 270 | ensure_existing(source_docs, "source docs") |
| 271 | ensure_existing(source_fern, "source fern config") |
| 272 | ensure_existing(target_fern, "docs website fern directory") |
| 273 | |
| 274 | channel = clean_input(args.channel) |
| 275 | source_ref = clean_input(args.source_ref) |
| 276 | if not source_ref: |
| 277 | raise ValueError("--source-ref is required when --operation=sync") |
| 278 | version_slug = clean_input(args.version_slug) |
| 279 | display_override = clean_input(args.display_name) |
| 280 | slug = resolve_slug(channel, version_slug) |
| 281 | display_name = resolve_display_name(channel, slug, source_ref, display_override) |
| 282 | pages_dir = f"pages-{slug}" |
| 283 | refresh_shared = channel in {"dev", "latest"} |
| 284 | |
| 285 | reset_directory( |
| 286 | source_docs, |
| 287 | target_fern / pages_dir, |
| 288 | preserve_components=not refresh_shared, |
| 289 | ) |
| 290 | merge_directory( |
| 291 | source_fern / "assets", target_fern / "assets", overwrite=refresh_shared |
| 292 | ) |
| 293 | merge_directory( |
| 294 | source_fern / "components", target_fern / "components", overwrite=refresh_shared |
| 295 | ) |
| 296 | if refresh_shared: |
| 297 | copy_if_exists(source_fern / "main.css", target_fern / "main.css") |
| 298 | copy_if_exists( |
| 299 | source_fern / "fern.config.json", target_fern / "fern.config.json" |
| 300 | ) |
| 301 | |
| 302 | versions_dir = target_fern / "versions" |
| 303 | versions_dir.mkdir(parents=True, exist_ok=True) |
| 304 | write_yaml( |
| 305 | versions_dir / f"{slug}.yml", |
| 306 | version_navigation(source_docs / "index.yml", pages_dir), |
| 307 | ) |
| 308 | |
| 309 | update_docs_yml( |
| 310 | target_fern / "docs.yml", |
| 311 | VersionEntry( |
| 312 | slug=slug, |
| 313 | display_name=display_name, |
| 314 | path=f"./versions/{slug}.yml", |
| 315 | ), |
| 316 | target_fern, |
| 317 | ) |
| 318 |
no test coverage detected