diff --git a/supertd/Cargo.toml b/supertd/Cargo.toml index 93e066a..c14d58c 100644 --- a/supertd/Cargo.toml +++ b/supertd/Cargo.toml @@ -10,6 +10,7 @@ path = "bin/main.rs" [dependencies] anyhow = "1.0" clap = {version = "4.1.4", features = ["derive"]} +tokio = { version = "1.37", features = ["full"] } fbinit = { workspace = true } td_util = {path = "../td_util"} diff --git a/supertd/bin/main.rs b/supertd/bin/main.rs index 2937035..dfc2ccc 100644 --- a/supertd/bin/main.rs +++ b/supertd/bin/main.rs @@ -9,6 +9,8 @@ #![forbid(unsafe_code)] +use std::future::Future; + use clap::CommandFactory; use clap::FromArgMatches; use clap::Parser; @@ -60,7 +62,7 @@ pub fn main(fb: FacebookInit) -> anyhow::Result<()> { #[cfg(fbcode_build)] Args::VerifiableMatcher(args) => verifiable_matcher::main(args), #[cfg(fbcode_build)] - Args::Ranker(args) => ranker::main(args), + Args::Ranker(args) => execute_on_runtime(ranker::main(args)), #[cfg(fbcode_build)] Args::Rerun(args) => rerun::main(fb, args), #[cfg(fbcode_build)] @@ -82,6 +84,14 @@ fn get_version() -> &'static str { env!("CARGO_PKG_VERSION") } +fn execute_on_runtime(f: impl Future>) -> anyhow::Result<()> { + let rt = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .unwrap(); + rt.block_on(f) +} + #[cfg(test)] mod tests { use clap::Command;