kjuulh 03d293bdc8
feat: produce new templates
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-05-25 14:08:54 +02:00

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(())
}
}