| from __future__ import annotations |
|
|
| import argparse |
| import json |
| from pathlib import Path |
|
|
| import requests |
|
|
|
|
| def index_local(api_url: str, path: str) -> dict: |
| response = requests.post( |
| f"{api_url.rstrip('/')}/repos/local", |
| json={"path": str(Path(path).resolve())}, |
| timeout=240, |
| ) |
| response.raise_for_status() |
| return response.json() |
|
|
|
|
| def index_github(api_url: str, url: str) -> dict: |
| response = requests.post( |
| f"{api_url.rstrip('/')}/repos/github", |
| json={"url": url}, |
| timeout=300, |
| ) |
| response.raise_for_status() |
| return response.json() |
|
|
|
|
| def main() -> None: |
| parser = argparse.ArgumentParser(description="Seed the app by indexing a repository.") |
| parser.add_argument("--api-url", default="http://localhost:8000/api") |
| group = parser.add_mutually_exclusive_group(required=True) |
| group.add_argument("--local-path", help="Local repository path to index.") |
| group.add_argument("--github-url", help="GitHub repository URL to clone and index.") |
| args = parser.parse_args() |
|
|
| if args.local_path: |
| summary = index_local(args.api_url, args.local_path) |
| else: |
| summary = index_github(args.api_url, args.github_url) |
|
|
| print(json.dumps(summary, indent=2)) |
|
|
|
|
| if __name__ == "__main__": |
| main() |
|
|