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