use std::io::Write;
use alien_commands::test_utils::TestCommandServer;
use alien_commands::CommandTargetType;
use tokio::io::AsyncReadExt;
#[tokio::main]
async fn main() {
let server = TestCommandServer::builder().with_pull_mode().build().await;
let mut args = std::env::args().skip(1);
if let Some(resource_id) = args
.next()
.or_else(|| std::env::var("TEST_TARGET_RESOURCE_ID").ok())
{
let resource_type = args
.next()
.or_else(|| std::env::var("TEST_TARGET_RESOURCE_TYPE").ok());
let resource_type = match resource_type.as_deref() {
Some("container") => CommandTargetType::Container,
Some("worker") => CommandTargetType::Worker,
_ => CommandTargetType::Daemon,
};
server
.registry
.register_target(resource_id, resource_type)
.await
.expect("register extra target");
}
println!("READY {}", server.base_url());
std::io::stdout().flush().expect("flush READY line");
let mut stdin = tokio::io::stdin();
let mut buf = [0u8; 64];
loop {
tokio::select! {
read = stdin.read(&mut buf) => {
if matches!(read, Ok(0) | Err(_)) {
break;
}
}
_ = tokio::signal::ctrl_c() => break,
}
}
}