Add Git source management to WebUI
This commit is contained in:
@@ -248,6 +248,43 @@ async def sources_page(request: Request):
|
||||
return templates.TemplateResponse("sources.html", {"request": request, "sources": sources})
|
||||
|
||||
|
||||
def parse_path_list(value: str) -> List[str]:
|
||||
paths = []
|
||||
for line in value.replace(",", "\n").splitlines():
|
||||
item = line.strip()
|
||||
if item:
|
||||
paths.append(item)
|
||||
return paths
|
||||
|
||||
|
||||
@app.post("/sources/add")
|
||||
async def add_source(
|
||||
library_id: str = Form(...),
|
||||
repo_url: str = Form(...),
|
||||
name: str = Form(""),
|
||||
description: str = Form(""),
|
||||
branch: str = Form("main"),
|
||||
include_paths: str = Form("docs"),
|
||||
exclude_paths: str = Form("node_modules\n.git"),
|
||||
):
|
||||
client = get_client()
|
||||
payload = {
|
||||
"library_id": library_id,
|
||||
"repo_url": repo_url,
|
||||
"name": name or None,
|
||||
"description": description or None,
|
||||
"branch": branch or "main",
|
||||
"include_paths": parse_path_list(include_paths),
|
||||
"exclude_paths": parse_path_list(exclude_paths),
|
||||
}
|
||||
try:
|
||||
result = await client.post("/api/v1/sources", json=payload)
|
||||
body = f"<h1>Git Source Saved</h1><pre>{html.escape(str(result))}</pre><a href='/sources'>Back</a>"
|
||||
except Exception as e:
|
||||
body = f"<h1>Save Failed</h1><pre>{html.escape(str(e))}</pre><a href='/sources'>Back</a>"
|
||||
return page("Git Source Saved", body)
|
||||
|
||||
|
||||
@app.post("/sources/sync")
|
||||
async def sync_sources(override: bool = Form(False)):
|
||||
client = get_client()
|
||||
|
||||
@@ -5,7 +5,34 @@
|
||||
{% block content %}
|
||||
<h2>Git Repository Sync</h2>
|
||||
|
||||
<div class="status-message">Syncs all git repositories configured in <code>docs_sources.yaml</code>.</div>
|
||||
<div class="status-message">Add Git repositories to <code>docs_sources.yaml</code>, then sync them into searchable libraries.</div>
|
||||
|
||||
<h3>Add Git Source</h3>
|
||||
<form method="post" action="/sources/add" class="sync-form">
|
||||
<label for="library_id">Library ID:</label>
|
||||
<input type="text" id="library_id" name="library_id" placeholder="my-project" required>
|
||||
|
||||
<label for="repo_url">Repository URL:</label>
|
||||
<input type="text" id="repo_url" name="repo_url" placeholder="https://github.com/user/repo.git" required>
|
||||
|
||||
<label for="name">Display Name:</label>
|
||||
<input type="text" id="name" name="name" placeholder="My Project">
|
||||
|
||||
<label for="description">Description:</label>
|
||||
<input type="text" id="description" name="description" placeholder="Project documentation">
|
||||
|
||||
<label for="branch">Branch:</label>
|
||||
<input type="text" id="branch" name="branch" value="main">
|
||||
|
||||
<label for="include_paths">Include Paths:</label>
|
||||
<textarea id="include_paths" name="include_paths" rows="4">docs</textarea>
|
||||
|
||||
<label for="exclude_paths">Exclude Paths:</label>
|
||||
<textarea id="exclude_paths" name="exclude_paths" rows="4">node_modules
|
||||
.git</textarea>
|
||||
|
||||
<button type="submit">Save Git Source</button>
|
||||
</form>
|
||||
|
||||
<form method="post" action="/sources/sync" class="sync-form">
|
||||
<label for="override">Override existing repos:</label>
|
||||
|
||||
Reference in New Issue
Block a user