Files
rio/scripts/build_rio_api_client.py

49 lines
1.2 KiB
Python

import shutil
import subprocess
from pathlib import Path
PROJECT_ROOT_DIR = Path(__file__).parent.parent.absolute()
assert (PROJECT_ROOT_DIR / "pyproject.toml").exists()
def main() -> None:
output_parent_dir = PROJECT_ROOT_DIR / "rio" / "cli"
output_tmp_dir = output_parent_dir / "rio_api_tmp"
output_final_dir = output_parent_dir / "rio_api_client"
# Wipe any files from previous runs
try:
shutil.rmtree(output_tmp_dir)
except FileNotFoundError:
pass
try:
shutil.rmtree(output_final_dir)
except FileNotFoundError:
pass
# Generate a HTTP wrapper for Rio's API
subprocess.run(
[
"openapi-python-client",
"generate",
"--url",
"http://localhost:8001/openapi.json",
"--output-path",
str(output_tmp_dir),
],
check=True,
)
# The command above creates an entire huge project. Rip out just the Python
# module
shutil.move(
output_tmp_dir / "fast_api_client",
output_final_dir,
)
shutil.rmtree(output_tmp_dir)
if __name__ == "__main__":
main()