From 7822e87b2dd11db20bd403fba9b61c064425f0db Mon Sep 17 00:00:00 2001 From: haixuanTao Date: Fri, 12 Aug 2022 16:56:06 +0200 Subject: [PATCH] Add python installer and run script --- examples/python-dataflow/install.sh | 10 +++++++ examples/python-dataflow/run.rs | 41 +++++++++++++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 examples/python-dataflow/install.sh create mode 100644 examples/python-dataflow/run.rs diff --git a/examples/python-dataflow/install.sh b/examples/python-dataflow/install.sh new file mode 100644 index 00000000..a95bc8a4 --- /dev/null +++ b/examples/python-dataflow/install.sh @@ -0,0 +1,10 @@ +python3 -m venv .env +. $(pwd)/.env/bin/activate +# Dev dependencies +pip install maturin +cd ../../apis/python/node +maturin develop +cd ../../../examples/python-dataflow + +# Dependencies +pip install -r requirements.txt \ No newline at end of file diff --git a/examples/python-dataflow/run.rs b/examples/python-dataflow/run.rs new file mode 100644 index 00000000..7ce73049 --- /dev/null +++ b/examples/python-dataflow/run.rs @@ -0,0 +1,41 @@ +use eyre::{bail, Context}; +use std::path::Path; + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let root = Path::new(env!("CARGO_MANIFEST_DIR")); + std::env::set_current_dir(root.join(file!()).parent().unwrap()) + .wrap_err("failed to set working dir")?; + + build_package("dora-runtime").await?; + + install_python_dependencies(root).await?; + + dora_coordinator::run(dora_coordinator::Command::Run { + dataflow: Path::new("dataflow.yml").to_owned(), + runtime: Some(root.join("target").join("release").join("dora-runtime")), + }) + .await?; + + Ok(()) +} + +async fn build_package(package: &str) -> eyre::Result<()> { + let cargo = std::env::var("CARGO").unwrap(); + let mut cmd = tokio::process::Command::new(&cargo); + cmd.arg("build").arg("--release"); + cmd.arg("--package").arg(package); + if !cmd.status().await?.success() { + bail!("failed to build {package}"); + }; + Ok(()) +} + +async fn install_python_dependencies(root: &Path) -> eyre::Result<()> { + let mut install = tokio::process::Command::new("sh"); + install.arg("./install.sh"); + if !install.status().await?.success() { + bail!("failed to create venv"); + }; + Ok(()) +}