1
0
Fork 0
Code Issues Pull requests Projects Releases 2 Packages Wiki Activity Actions Pages

Add language-neutral project onboarding

This commit is contained in:
Andraxion 2026-07-27 15:50:33 -04:00
parent 73165c9f51
commit 09c09300b1
8 changed files with 924 additions and 9 deletions

View file

@ -12,6 +12,7 @@ from .application import CanonicalApplicationService, GenericCanonicalApplier
from .context import compile_context
from .errors import DocForgeError
from .index import ProjectIndex
from .onboarding import assess_project, scaffold_project
from .project import Project, project_root_fingerprint
from .rendering import RenderService
from .viewer_manager import ViewerManagerClient
@ -21,6 +22,12 @@ def _parser() -> argparse.ArgumentParser:
parser = argparse.ArgumentParser(prog="docforge")
parser.add_argument("--project-root", type=Path, required=True)
commands = parser.add_subparsers(dest="command", required=True)
onboard = commands.add_parser("onboard")
onboard.add_argument("--language", action="append", default=[])
onboard.add_argument("--scaffold", action="store_true")
onboard.add_argument("--project-id")
onboard.add_argument("--title")
onboard.add_argument("--content-root", default="docs/docforge/content")
commands.add_parser("info")
commands.add_parser("validate")
commands.add_parser("build")
@ -72,6 +79,21 @@ def _parser() -> argparse.ArgumentParser:
def _run(arguments: argparse.Namespace) -> dict[str, object]:
if arguments.command == "onboard":
languages = tuple(arguments.language)
if arguments.scaffold:
scaffold = scaffold_project(
arguments.project_root,
requested_languages=languages,
project_id=arguments.project_id,
title=arguments.title,
content_root=arguments.content_root,
)
project = Project.open(arguments.project_root)
build = ProjectIndex(project).build()
render = RenderService(project).render("manual")
return {**scaffold, "build": build, "render": render}
return assess_project(arguments.project_root, requested_languages=languages)
project = Project.open(arguments.project_root)
index = ProjectIndex(project)
if arguments.command == "info":