in src/doc_builder/commands/preview.py [0:0]
def preview_command(args):
if not is_watchdog_available():
raise ImportError(
"Please install `watchdog` to run `doc-builder preview` command.\nYou can do so through pip: `pip install watchdog`"
)
read_doc_config(args.path_to_docs)
# Error at the beginning if node is not properly installed.
check_node_is_available()
# Error at the beginning if we can't locate the kit folder
kit_folder = locate_kit_folder()
if kit_folder is None:
raise EnvironmentError(
"Requires the kit subfolder of the doc-builder repo. We couldn't find it with "
"the doc-builder package installed, so you need to run the command from inside the doc-builder repo."
)
with tempfile.TemporaryDirectory() as tmp_dir:
output_path = Path(tmp_dir) / args.library_name / args.version / args.language
print("Initial build docs for", args.library_name, args.path_to_docs, output_path)
source_files_mapping = build_doc(
args.library_name,
args.path_to_docs,
output_path,
clean=True,
version=args.version,
language=args.language,
is_python_module=not args.not_python_module,
)
# convert the MDX files into HTML files.
tmp_dir = Path(tmp_dir)
# Copy everything in a tmp dir
shutil.copytree(kit_folder, tmp_dir / "kit")
# Manual copy and overwrite from output_path to tmp_dir / "kit" / "src" / "routes"
# We don't use shutil.copytree as tmp_dir / "kit" / "src" / "routes" exists and contains important files.
kit_routes_folder = tmp_dir / "kit" / "src" / "routes"
# files/folders cannot have a name that starts with `__` since it is a reserved Sveltekit keyword
for p in output_path.glob("**/*__*"):
if p.exists():
p.rmdir if p.is_dir() else p.unlink()
for f in output_path.iterdir():
dest = kit_routes_folder / f.name
if f.is_dir():
# Remove the dest folder if it exists
if dest.is_dir():
shutil.rmtree(dest)
shutil.copytree(f, dest)
else:
shutil.copy(f, dest)
# make mdx file paths comply with the sveltekit 1.0 routing mechanism
# see more: https://learn.svelte.dev/tutorial/pages
for mdx_file_path in kit_routes_folder.rglob("*.mdx"):
new_path = sveltify_file_route(mdx_file_path)
parent_path = os.path.dirname(new_path)
os.makedirs(parent_path, exist_ok=True)
shutil.move(mdx_file_path, new_path)
# Node
env = os.environ.copy()
env["DOCS_LIBRARY"] = env["package_name"] or args.library_name if "package_name" in env else args.library_name
env["DOCS_VERSION"] = args.version
env["DOCS_LANGUAGE"] = args.language
Thread(target=start_sveltekit_dev, args=(tmp_dir, env, args)).start()
git_folder = find_root_git(args.path_to_docs)
event_handler = WatchEventHandler(args, source_files_mapping, kit_routes_folder)
start_watcher(git_folder, event_handler)