الملفات
Building-API-and-Monitoring…/venv/lib/python3.12/site-packages/flasgger/commands.py
2025-09-27 23:34:33 +03:00

45 أسطر
1.2 KiB
Python

import json
import click
from flask import current_app
from flask.cli import with_appcontext
from .utils import is_openapi3
@click.command()
@click.option("-f", "--file", type=click.File("w"), default="-")
@click.option("-e", "--endpoint", default=None)
@with_appcontext
def generate_api_schema(file, endpoint):
"""Generate the swagger schema for your api."""
try:
if endpoint is None:
endpoint = current_app.swag.config["specs"][0]["endpoint"]
spec = current_app.swag.get_apispecs(endpoint)
except RuntimeError as e:
click.echo(e, err=True)
click.echo(
"Possible values for endpoint are: {}".format(
", ".join(
[
spec["endpoint"]
for spec in current_app.swag.config["specs"]
if "endpoint" in spec
]
)
),
err=True,
)
raise click.Abort
# See also: https://github.com/flasgger/flasgger/issues/267
if is_openapi3(spec.get("openapi")):
if "definitions" in spec:
del spec["definitions"]
json.dump(spec, file, indent=4)
return spec