Source code for bridge.adapters.cli.commands.github_to_biotools
"""
CLI command to extract bio.tools metadata from a GitHub repository.
"""
import asyncio
import logging
import typer
from bridge.handlers import extract_meta_from_repo
logger = logging.getLogger(__name__)
app = typer.Typer(help="GitHub -> bio.tools bridge.")
[docs]
@app.command("extract")
def extract(
owner: str = typer.Argument(..., help="The owner of the source GitHub repository."),
repo: str = typer.Argument(..., help="The name of the source GitHub repository."),
biotools_id: str | None = typer.Option(None, help="Existing bio.tools ID to update (optional)."),
):
"""
Extract bio.tools metadata from a GitHub repository.
Parameters
----------
owner : str
The owner of the source GitHub repository.
repo : str
The name of the source GitHub repository.
biotools_id : Optional[str]
Existing bio.tools ID to update, if available.
"""
logger.info(f"Extracting metadata for {owner}/{repo} to bio.tools:{biotools_id}")
async def _run():
result = await extract_meta_from_repo(
schema="biotools",
repo_type="github",
owner=owner,
repo=repo,
identifier=biotools_id,
)
typer.echo(result)
try:
asyncio.run(_run())
except Exception as e:
logger.error(f"Failed to extract metadata from GitHub repository: {e}")
typer.echo(f"Failed to extract metadata from GitHub repository: {e}", err=True)