74 lines
2.1 KiB
Rust
74 lines
2.1 KiB
Rust
use async_trait::async_trait;
|
|
use cuddle_ci::cuddle_file::CuddleFile;
|
|
use cuddle_ci::cuddle_releaser::CuddleReleaser;
|
|
use cuddle_ci::rust_service::architecture::{Architecture, Os};
|
|
use cuddle_ci::rust_service::RustService;
|
|
use cuddle_ci::rust_service::{extensions::*, RustServiceContext};
|
|
use cuddle_ci::{Context, CuddleCI, MainAction, PullRequestAction};
|
|
|
|
#[tokio::main]
|
|
async fn main() -> eyre::Result<()> {
|
|
tracing_subscriber::fmt::init();
|
|
|
|
let client = dagger_sdk::connect().await?;
|
|
let cuddle_file = CuddleFile::from_cuddle_file().await?;
|
|
|
|
let service = &RustService::from(client.clone())
|
|
.with_cuddle_file(&cuddle_file)
|
|
.with_arch(Architecture::Amd64)
|
|
.with_os(Os::Linux)
|
|
.with_apt(&["libssl-dev", "libz-dev", "libpq-dev", "protobuf-compiler"])
|
|
.with_apt_release(&["libssl-dev", "libz-dev", "libpq-dev"])
|
|
.with_apt_ca_certificates()
|
|
.with_workspace_crates()
|
|
.await
|
|
.with_mold("2.3.3")
|
|
.to_owned();
|
|
|
|
let render = &RustServiceRender::default();
|
|
let deployment = &CuddleReleaser::new(client).await?;
|
|
|
|
CuddleCI::default()
|
|
.with_pull_request(service)
|
|
//.with_pull_request(render.clone())
|
|
//.with_pull_request(deployment.clone())
|
|
.with_main(service)
|
|
.with_main(render)
|
|
.with_main(deployment)
|
|
.execute(std::env::args())
|
|
.await?;
|
|
|
|
Ok(())
|
|
}
|
|
|
|
#[derive(Default, Clone)]
|
|
struct RustServiceRender {}
|
|
|
|
impl RustServiceRender {
|
|
async fn render_templates(&self) -> eyre::Result<()> {
|
|
cuddle_clusters::process()
|
|
.await
|
|
.map_err(|e| eyre::anyhow!("failed to process templates: {}", e.to_string()))?;
|
|
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
#[async_trait]
|
|
impl MainAction for RustServiceRender {
|
|
async fn execute_main(&self, ctx: &mut Context) -> eyre::Result<()> {
|
|
self.render_templates().await?;
|
|
|
|
Ok(())
|
|
}
|
|
}
|
|
|
|
#[async_trait]
|
|
impl PullRequestAction for RustServiceRender {
|
|
async fn execute_pull_request(&self, ctx: &mut Context) -> eyre::Result<()> {
|
|
self.render_templates().await?;
|
|
|
|
Ok(())
|
|
}
|
|
}
|