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.4 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. use eyre::{bail, Context};
  2. use std::{env, path::Path};
  3. #[tokio::main]
  4. async fn main() -> eyre::Result<()> {
  5. set_up_tracing().wrap_err("failed to set up tracing subscriber")?;
  6. let root = Path::new(env!("CARGO_MANIFEST_DIR"));
  7. std::env::set_current_dir(root.join(file!()).parent().unwrap())
  8. .wrap_err("failed to set working dir")?;
  9. build_package("dora-daemon").await?;
  10. run(root).await?;
  11. Ok(())
  12. }
  13. async fn build_package(package: &str) -> eyre::Result<()> {
  14. let cargo = std::env::var("CARGO").unwrap();
  15. let mut cmd = tokio::process::Command::new(&cargo);
  16. cmd.arg("build");
  17. cmd.arg("--package").arg(package);
  18. if !cmd.status().await?.success() {
  19. bail!("failed to build {package}");
  20. };
  21. Ok(())
  22. }
  23. async fn run(_root: &Path) -> eyre::Result<()> {
  24. let mut run = tokio::process::Command::new("sh");
  25. run.arg("./run.sh");
  26. if !run.status().await?.success() {
  27. bail!("failed to run python example.");
  28. };
  29. Ok(())
  30. }
  31. fn set_up_tracing() -> eyre::Result<()> {
  32. use tracing_subscriber::prelude::__tracing_subscriber_SubscriberExt;
  33. let stdout_log = tracing_subscriber::fmt::layer().pretty();
  34. let subscriber = tracing_subscriber::Registry::default().with(stdout_log);
  35. tracing::subscriber::set_global_default(subscriber)
  36. .context("failed to set tracing global subscriber")
  37. }

DORA (Dataflow-Oriented Robotic Architecture) is middleware designed to streamline and simplify the creation of AI-based robotic applications. It offers low latency, composable, and distributed datafl