mirror of
https://github.com/rio-labs/rio.git
synced 2025-12-18 03:04:46 -06:00
49 lines
1.2 KiB
Python
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()
|