From 20c9269f6415d6858a16a5f686909f182b77eadc Mon Sep 17 00:00:00 2001 From: sjfhsjfh Date: Wed, 9 Jul 2025 00:05:13 +0800 Subject: [PATCH] chore: make run function public --- apis/python/node/src/lib.rs | 2 +- binaries/cli/src/command/mod.rs | 2 + binaries/cli/src/command/run.rs | 69 +++++++++++++++++---------------- binaries/cli/src/lib.rs | 2 + 4 files changed, 41 insertions(+), 34 deletions(-) diff --git a/apis/python/node/src/lib.rs b/apis/python/node/src/lib.rs index 18e70c3e..6b279ca1 100644 --- a/apis/python/node/src/lib.rs +++ b/apis/python/node/src/lib.rs @@ -381,7 +381,7 @@ pub fn resolve_dataflow(dataflow: String) -> eyre::Result { #[pyfunction] #[pyo3(signature = (dataflow_path, uv=None))] pub fn run(dataflow_path: String, uv: Option) -> eyre::Result<()> { - dora_cli::command::run(dataflow_path, uv.unwrap_or_default()) + dora_cli::run_func(dataflow_path, uv.unwrap_or_default()) } #[pymodule] diff --git a/binaries/cli/src/command/mod.rs b/binaries/cli/src/command/mod.rs index 7ab3804a..617f9b05 100644 --- a/binaries/cli/src/command/mod.rs +++ b/binaries/cli/src/command/mod.rs @@ -14,6 +14,8 @@ mod start; mod stop; mod up; +pub use run::run_func; + use build::Build; use check::Check; use coordinator::Coordinator; diff --git a/binaries/cli/src/command/run.rs b/binaries/cli/src/command/run.rs index 50cfd78a..61b9f0db 100644 --- a/binaries/cli/src/command/run.rs +++ b/binaries/cli/src/command/run.rs @@ -23,41 +23,44 @@ pub struct Run { uv: bool, } -impl Executable for Run { - fn execute(self) -> eyre::Result<()> { - #[cfg(feature = "tracing")] - { - let log_level = std::env::var("RUST_LOG").ok().unwrap_or("info".to_string()); - TracingBuilder::new("run") - .with_stdout(log_level) - .build() - .wrap_err("failed to set up tracing subscriber")?; - } - - let dataflow_path = - resolve_dataflow(self.dataflow).context("could not resolve dataflow")?; - let dataflow_session = DataflowSession::read_session(&dataflow_path) - .context("failed to read DataflowSession")?; - let rt = Builder::new_multi_thread() - .enable_all() +pub fn run_func(dataflow: String, uv: bool) -> eyre::Result<()> { + #[cfg(feature = "tracing")] + { + let log_level = std::env::var("RUST_LOG").ok().unwrap_or("info".to_string()); + TracingBuilder::new("run") + .with_stdout(log_level) .build() - .context("tokio runtime failed")?; + .wrap_err("failed to set up tracing subscriber")?; + } - let (log_tx, log_rx) = flume::bounded(100); - std::thread::spawn(move || { - for message in log_rx { - print_log_message(message, false, false); - } - }); + let dataflow_path = resolve_dataflow(dataflow).context("could not resolve dataflow")?; + let dataflow_session = + DataflowSession::read_session(&dataflow_path).context("failed to read DataflowSession")?; + let rt = Builder::new_multi_thread() + .enable_all() + .build() + .context("tokio runtime failed")?; - let result = rt.block_on(Daemon::run_dataflow( - &dataflow_path, - dataflow_session.build_id, - dataflow_session.local_build, - dataflow_session.session_id, - self.uv, - LogDestination::Channel { sender: log_tx }, - ))?; - handle_dataflow_result(result, None) + let (log_tx, log_rx) = flume::bounded(100); + std::thread::spawn(move || { + for message in log_rx { + print_log_message(message, false, false); + } + }); + + let result = rt.block_on(Daemon::run_dataflow( + &dataflow_path, + dataflow_session.build_id, + dataflow_session.local_build, + dataflow_session.session_id, + uv, + LogDestination::Channel { sender: log_tx }, + ))?; + handle_dataflow_result(result, None) +} + +impl Executable for Run { + fn execute(self) -> eyre::Result<()> { + run_func(self.dataflow, self.uv) } } diff --git a/binaries/cli/src/lib.rs b/binaries/cli/src/lib.rs index 03474839..868d7a5a 100644 --- a/binaries/cli/src/lib.rs +++ b/binaries/cli/src/lib.rs @@ -12,6 +12,8 @@ pub mod output; pub mod session; mod template; +pub use command::run_func; + const LOCALHOST: IpAddr = IpAddr::V4(Ipv4Addr::new(127, 0, 0, 1)); const LISTEN_WILDCARD: IpAddr = IpAddr::V4(Ipv4Addr::new(0, 0, 0, 0));