use std::path::PathBuf;
use github_copilot_sdk::{CliProgram, Client, ClientOptions, Transport};
#[tokio::main(flavor = "current_thread")]
async fn main() {
let program = std::env::var("HOST_CRASH_FIXTURE_PROGRAM").expect("HOST_CRASH_FIXTURE_PROGRAM");
let prefix_args: Vec<String> = serde_json::from_str(
&std::env::var("HOST_CRASH_FIXTURE_PREFIX_ARGS_JSON")
.expect("HOST_CRASH_FIXTURE_PREFIX_ARGS_JSON"),
)
.expect("parse HOST_CRASH_FIXTURE_PREFIX_ARGS_JSON");
let cwd = std::env::var("HOST_CRASH_FIXTURE_CWD").expect("HOST_CRASH_FIXTURE_CWD");
let env_pairs: Vec<(String, String)> = serde_json::from_str(
&std::env::var("HOST_CRASH_FIXTURE_ENV_JSON").expect("HOST_CRASH_FIXTURE_ENV_JSON"),
)
.expect("parse HOST_CRASH_FIXTURE_ENV_JSON");
let pid_file = PathBuf::from(
std::env::var("HOST_CRASH_FIXTURE_PID_FILE").expect("HOST_CRASH_FIXTURE_PID_FILE"),
);
let options = ClientOptions::new()
.with_program(CliProgram::Path(PathBuf::from(program)))
.with_prefix_args(prefix_args)
.with_cwd(PathBuf::from(cwd))
.with_env(env_pairs)
.with_use_logged_in_user(false)
.with_transport(Transport::Stdio);
let client = Client::start(options).await.expect("start CLI client");
let pid = client.pid().expect("client reports spawned CLI pid");
std::fs::write(&pid_file, pid.to_string()).expect("write pid file");
std::mem::forget(client);
loop {
std::thread::sleep(std::time::Duration::from_secs(3600));
}
}