#!/usr/bin/env python from importlib.metadata import version as importlib_version from sqlalchemy.engine import create from typing_extensions import Annotated import typer cli = typer.Typer(no_args_is_help=True, help="Gisaf GIS backend") @cli.command() def create_db(): """Populate the database with a functional empty structure""" from gisaf.application import app from gisaf.database import create_db from asyncio import run print(f"Create DB...") run(create_db()) @cli.command() def serve(host: str = "localhost", port: int = 8000): """ Run the uvicorn server. Use yaml config files or environment variables for configuration. Note that you can also run gisaf with: uvicorn src.gisaf.application:app """ from uvicorn import run from gisaf.application import app run(app, host=host, port=port) def version_callback(show_version: bool): if show_version: print(importlib_version("gisaf-backend")) raise typer.Exit() @cli.callback() def main( version: Annotated[ bool | None, typer.Option("--version", callback=version_callback) ] = None ): pass if __name__ == "__main__": cli()