mirror of
https://github.com/Akkudoktor-EOS/EOS.git
synced 2025-04-19 00:45:22 +00:00
Read and write text files with utf8 encoding. Signed-off-by: Bobby Noelte <b0661n0e17e@gmail.com>
70 lines
1.9 KiB
Python
Executable File
70 lines
1.9 KiB
Python
Executable File
#!.venv/bin/python
|
|
"""This module generates the OpenAPI specification for the FastAPI application defined in `akkudoktoreos.server.fastapi_server`.
|
|
|
|
The script can be executed directly to generate the OpenAPI specification
|
|
either to the standard output or to a specified file.
|
|
|
|
Usage:
|
|
scripts/generate_openapi.py [--output-file OUTPUT_FILE]
|
|
|
|
Arguments:
|
|
--output-file : Optional. The file path to write the OpenAPI specification to.
|
|
|
|
Example:
|
|
scripts/generate_openapi.py --output-file openapi.json
|
|
"""
|
|
|
|
import argparse
|
|
import json
|
|
import sys
|
|
|
|
from fastapi.openapi.utils import get_openapi
|
|
|
|
from akkudoktoreos.server.fastapi_server import app
|
|
|
|
|
|
def generate_openapi() -> dict:
|
|
"""Generate the OpenAPI specification.
|
|
|
|
Returns:
|
|
openapi_spec (dict): OpenAPI specification.
|
|
"""
|
|
openapi_spec = get_openapi(
|
|
title=app.title,
|
|
version=app.version,
|
|
openapi_version=app.openapi_version,
|
|
description=app.description,
|
|
routes=app.routes,
|
|
)
|
|
|
|
return openapi_spec
|
|
|
|
|
|
def main():
|
|
"""Main function to run the generation of the OpenAPI specification."""
|
|
parser = argparse.ArgumentParser(description="Generate OpenAPI Specification")
|
|
parser.add_argument(
|
|
"--output-file", type=str, default=None, help="File to write the OpenAPI Specification to"
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
try:
|
|
openapi_spec = generate_openapi()
|
|
openapi_spec_str = json.dumps(openapi_spec, indent=2)
|
|
if args.output_file:
|
|
# Write to file
|
|
with open(args.output_file, "w", encoding="utf8") as f:
|
|
f.write(openapi_spec_str)
|
|
else:
|
|
# Write to std output
|
|
print(openapi_spec_str)
|
|
|
|
except Exception as e:
|
|
print(f"Error during OpenAPI specification generation: {e}", file=sys.stderr)
|
|
sys.exit(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|