haystack/docs/_src/api/openapi/generate_openapi_specs.py

32 lines
932 B
Python
Raw Normal View History

import json
from pathlib import Path
import os
import sys
import shutil
sys.path.append("../../../../")
rest_path = Path("../../../../rest_api").absolute()
pipeline_path = str(rest_path / "pipeline" / "pipeline_empty.yaml")
app_path = str(rest_path / "application.py")
print(f"Loading OpenAPI specs from {app_path} with pipeline at {pipeline_path}")
os.environ["PIPELINE_YAML_PATH"] = pipeline_path
from rest_api.application import get_openapi_specs, haystack_version
# Generate the openapi specs
specs = get_openapi_specs()
# Dump the specs into a JSON file
with open("openapi.json", "w") as f:
json.dump(specs, f, indent=4)
# Remove rc versions of the specs from the folder
for specs_file in os.listdir():
if os.path.isfile(specs_file) and "rc" in specs_file and Path(specs_file).suffix == ".json":
os.remove(specs_file)
# Add versioned copy
shutil.copy("openapi.json", f"openapi-{haystack_version}.json")