use crate::{
docker::{RunCommandInContainer, RunCommandInContainerError},
models::Deployment,
};
pub async fn get_mongodb_secret<D: RunCommandInContainer>(
docker: &D,
deployment: &Deployment,
value: impl FnOnce(&Deployment) -> Option<&str>,
file: impl FnOnce(&Deployment) -> Option<&str>,
) -> Result<Option<String>, RunCommandInContainerError> {
if let Some(env_value) = value(deployment) {
return Ok(Some(env_value.to_string()));
}
if let Some(file_value) = file(deployment) {
let command_output = docker
.run_command_in_container(
&deployment.container_id,
vec!["cat".to_string(), file_value.to_string()],
)
.await?;
if let Some(line) = command_output.stdout.into_iter().next() {
return Ok(Some(line));
}
}
Ok(None)
}