summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorhjoaquim <henriquecjoaquim@gmail.com>2024-05-16 16:55:16 +0100
committerhjoaquim <henriquecjoaquim@gmail.com>2024-05-16 16:55:16 +0100
commit6d7e792a0c647d0bec11e072e3904883aae4b20b (patch)
treed4410d7fcb871734bec62fc5cd51cc762f23361d
parent35d5b63e4f4b20ada010a5d2ca87febaa04974c8 (diff)
adding --cli to the dev installbugfix/dev_install-tomlkit
-rw-r--r--openbb_platform/dev_install.py45
1 files changed, 45 insertions, 0 deletions
diff --git a/openbb_platform/dev_install.py b/openbb_platform/dev_install.py
index 21cb7541c8c..1a18d7925e4 100644
--- a/openbb_platform/dev_install.py
+++ b/openbb_platform/dev_install.py
@@ -9,6 +9,9 @@ from tomlkit import dumps, load, loads
PLATFORM_PATH = Path(__file__).parent.resolve()
LOCK = PLATFORM_PATH / "poetry.lock"
PYPROJECT = PLATFORM_PATH / "pyproject.toml"
+CLI_PATH = Path(__file__).parent.parent.resolve() / "cli"
+CLI_PYPROJECT = CLI_PATH / "pyproject.toml"
+CLI_LOCK = CLI_PATH / "poetry.lock"
LOCAL_DEPS = """
[tool.poetry.dependencies]
@@ -140,7 +143,49 @@ def install_platform_local(_extras: bool = False):
f.write(original_lock)
+def install_platform_cli():
+ """Install the CLI locally for development purposes."""
+ original_lock = CLI_LOCK.read_text()
+ original_pyproject = CLI_PYPROJECT.read_text()
+
+ with open(CLI_PYPROJECT) as f:
+ pyproject_toml = load(f)
+
+ # remove "openbb" from dependencies
+ pyproject_toml.get("tool", {}).get("poetry", {}).get("dependencies", {}).pop(
+ "openbb", None
+ )
+
+ TEMP_PYPROJECT = dumps(pyproject_toml)
+
+ try:
+ with open(CLI_PYPROJECT, "w", encoding="utf-8", newline="\n") as f:
+ f.write(TEMP_PYPROJECT)
+
+ CMD = [sys.executable, "-m", "poetry"]
+
+ subprocess.run(
+ CMD + ["lock", "--no-update"], cwd=CLI_PATH, check=True # noqa: S603
+ )
+ subprocess.run(CMD + ["install"], cwd=CLI_PATH, check=True) # noqa: S603
+
+ except (Exception, KeyboardInterrupt) as e:
+ print(e) # noqa: T201
+ print("Restoring pyproject.toml and poetry.lock") # noqa: T201
+
+ finally:
+ # Revert pyproject.toml and poetry.lock to their original state.
+ with open(CLI_PYPROJECT, "w", encoding="utf-8", newline="\n") as f:
+ f.write(original_pyproject)
+
+ with open(CLI_LOCK, "w", encoding="utf-8", newline="\n") as f:
+ f.write(original_lock)
+
+
if __name__ == "__main__":
args = sys.argv[1:]
extras = any(arg.lower() in ["-e", "--extras"] for arg in args)
+ cli = any(arg.lower() in ["-c", "--cli"] for arg in args)
install_platform_local(extras)
+ if cli:
+ install_platform_cli()