You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

run.rs 1.8 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. use dora_core::{get_uv_path, run};
  2. use dora_tracing::set_up_tracing;
  3. use eyre::{bail, WrapErr};
  4. use std::path::Path;
  5. #[tokio::main]
  6. async fn main() -> eyre::Result<()> {
  7. set_up_tracing("python-dataflow-runner")?;
  8. let root = Path::new(env!("CARGO_MANIFEST_DIR"));
  9. std::env::set_current_dir(root.join(file!()).parent().unwrap())
  10. .wrap_err("failed to set working dir")?;
  11. let uv = get_uv_path().context("Could not get uv binary")?;
  12. run(&uv, &["venv", "-p", "3.10", "--seed"], None)
  13. .await
  14. .context("failed to create venv")?;
  15. run(&uv, &["pip", "install", "maturin"], None)
  16. .await
  17. .context("uv pip install maturin failed")?;
  18. run(
  19. &uv,
  20. &[
  21. "run",
  22. "maturin",
  23. "develop",
  24. "-m",
  25. "../../apis/python/node/Cargo.toml",
  26. "--uv",
  27. ],
  28. None,
  29. )
  30. .await
  31. .context("maturin develop failed")?;
  32. let dataflow = Path::new("dataflow.yml");
  33. run_dataflow(dataflow).await?;
  34. Ok(())
  35. }
  36. async fn run_dataflow(dataflow: &Path) -> eyre::Result<()> {
  37. let cargo = std::env::var("CARGO").unwrap();
  38. // First build the dataflow (install requirements)
  39. let mut cmd = tokio::process::Command::new(&cargo);
  40. cmd.arg("run");
  41. cmd.arg("--package").arg("dora-cli");
  42. cmd.arg("--").arg("build").arg(dataflow).arg("--uv");
  43. if !cmd.status().await?.success() {
  44. bail!("failed to run dataflow");
  45. };
  46. let mut cmd = tokio::process::Command::new(&cargo);
  47. cmd.arg("run");
  48. cmd.arg("--package").arg("dora-cli");
  49. cmd.arg("--").arg("run").arg(dataflow).arg("--uv");
  50. if !cmd.status().await?.success() {
  51. bail!("failed to run dataflow");
  52. };
  53. Ok(())
  54. }