use std::sync::Arc; use cuddle_ci::drone_templater::DroneTemplater; use cuddle_ci::rust_service::architecture::{Architecture, Os}; use cuddle_ci::rust_service::{extensions::*, RustService}; use cuddle_ci::CuddleCI; use tokio::sync::Mutex; const BIN_NAME: &str = "cuddle-rust-service-plan"; #[tokio::main] async fn main() -> eyre::Result<()> { dagger_sdk::connect(|client| async move { let service = &RustService::from(client.clone()) .with_arch(Architecture::Amd64) .with_os(Os::Linux) .with_apt(&[ "clang", "libssl-dev", "libz-dev", "libgit2-dev", "git", "openssh-client", "protobuf-compiler", ]) .with_apt_release(&["git", "openssh-client", "protobuf-compiler"]) .with_docker_cli() .with_cuddle_cli() .with_kubectl() .with_apt_ca_certificates() .with_crates(["ci", "crates/*"]) .with_mold("2.3.3") .with_bin_name(BIN_NAME) .with_deployment(false) .to_owned(); let drone_templater = &DroneTemplater::new(client, "templates/cuddle-rust-service-plan.yaml") .with_variable("bin_name", BIN_NAME) .to_owned(); CuddleCI::default() .with_pull_request(service) .with_main(service) .with_main(drone_templater) .execute(std::env::args()) .await?; Ok(()) }) .await?; Ok(()) }