diff --git a/crates/cuddle-ci/src/cuddle_file.rs b/crates/cuddle-ci/src/cuddle_file.rs index 6f05683..5978b86 100644 --- a/crates/cuddle-ci/src/cuddle_file.rs +++ b/crates/cuddle-ci/src/cuddle_file.rs @@ -13,7 +13,7 @@ pub struct CuddleVars { pub service: String, pub registry: String, - pub clusters: CuddleClusters, + pub clusters: Option, } #[derive(Clone, Debug, Deserialize, Serialize, PartialEq)] @@ -116,7 +116,7 @@ scripts: vars: CuddleVars { service: "infrastructure-example".into(), registry: "kasperhermansen".into(), - clusters: CuddleClusters(clusters), + clusters: Some(CuddleClusters(clusters)), }, deployment: Some(crate::cuddle_file::CuddleDeployment { registry: "git@git.front.kjuulh.io:kjuulh/clank-cluster".into(), diff --git a/crates/cuddle-ci/src/cuddle_releaser.rs b/crates/cuddle-ci/src/cuddle_releaser.rs index c062198..f7760ce 100644 --- a/crates/cuddle-ci/src/cuddle_releaser.rs +++ b/crates/cuddle-ci/src/cuddle_releaser.rs @@ -1,3 +1,5 @@ +use std::fmt::Display; + use async_trait::async_trait; use eyre::Context; @@ -23,11 +25,11 @@ pub enum CuddleEnv { Dev, } -impl ToString for CuddleEnv { - fn to_string(&self) -> String { +impl Display for CuddleEnv { + fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { - CuddleEnv::Prod => "prod".into(), - CuddleEnv::Dev => "dev".into(), + CuddleEnv::Prod => f.write_str("prod"), + CuddleEnv::Dev => f.write_str("dev"), } } } @@ -83,55 +85,57 @@ impl CuddleReleaser { None => return Ok(()), }; - let cluster = match self.cuddle_file.vars.clusters.0.get(chosen_cluster) { - Some(c) => c, - None => eyre::bail!("no cluster found for: {}", chosen_cluster), - }; + if let Some(clusters) = &self.cuddle_file.vars.clusters { + let cluster = match clusters.0.get(chosen_cluster) { + Some(c) => c, + None => eyre::bail!("no cluster found for: {}", chosen_cluster), + }; - let options = CuddleReleaserOptions { - cluster: chosen_cluster.clone(), - namespace: cluster.namespace.clone(), - app: self.cuddle_file.vars.service.clone(), - upstream: self - .cuddle_file - .deployment - .as_ref() - .unwrap() - .registry - .clone(), - }; + let options = CuddleReleaserOptions { + cluster: chosen_cluster.clone(), + namespace: cluster.namespace.clone(), + app: self.cuddle_file.vars.service.clone(), + upstream: self + .cuddle_file + .deployment + .as_ref() + .unwrap() + .registry + .clone(), + }; - let cuddle_releaser_image = "docker.io/kasperhermansen/cuddle-releaser:main-1706726858"; + let cuddle_releaser_image = "docker.io/kasperhermansen/cuddle-releaser:main-1706726858"; - let folder = client.host().directory(&self.folder); + let folder = client.host().directory(&self.folder); - let ssh_sock = std::env::var("SSH_AUTH_SOCK").context("SSH_AUTH_SOCK not set")?; + let ssh_sock = std::env::var("SSH_AUTH_SOCK").context("SSH_AUTH_SOCK not set")?; - let cuddle_releaser = client - .container() - .from(cuddle_releaser_image) - .with_env_variable("RUST_LOG", "trace") - .with_directory("/mnt/templates", folder) - .with_unix_socket( - ssh_sock.clone(), - client.host().unix_socket(ssh_sock.clone()), - ); + let cuddle_releaser = client + .container() + .from(cuddle_releaser_image) + .with_env_variable("RUST_LOG", "trace") + .with_directory("/mnt/templates", folder) + .with_unix_socket( + ssh_sock.clone(), + client.host().unix_socket(ssh_sock.clone()), + ); - let time = chrono::Local::now(); + let time = chrono::Local::now(); - cuddle_releaser - .with_exec(vec!["echo", &time.to_rfc3339()]) - .with_exec(vec![ - "cuddle-releaser", - "release", - &format!("--upstream={}", options.upstream), - &format!("--folder={}", "/mnt/templates/k8s"), - &format!("--cluster={}", options.cluster), - &format!("--namespace={}", options.namespace), - &format!("--app={}", options.app), - ]) - .sync() - .await?; + cuddle_releaser + .with_exec(vec!["echo", &time.to_rfc3339()]) + .with_exec(vec![ + "cuddle-releaser", + "release", + &format!("--upstream={}", options.upstream), + &format!("--folder={}", "/mnt/templates/k8s"), + &format!("--cluster={}", options.cluster), + &format!("--namespace={}", options.namespace), + &format!("--app={}", options.app), + ]) + .sync() + .await?; + } Ok(()) } diff --git a/crates/cuddle-ci/src/rust_lib.rs b/crates/cuddle-ci/src/rust_lib.rs index 9408caf..5c61c96 100644 --- a/crates/cuddle-ci/src/rust_lib.rs +++ b/crates/cuddle-ci/src/rust_lib.rs @@ -1,9 +1,9 @@ -use std::{path::PathBuf}; +use std::path::PathBuf; use async_trait::async_trait; use dagger_rust::source::RustSource; use dagger_sdk::Container; -use futures::{StreamExt}; +use futures::StreamExt; use crate::{ cli,