use crate::manager::*;
use async_trait::async_trait;
use std::sync::Arc;
#[derive(Clone, Debug)]
pub struct DockerManager {
pub docker: Arc<Docker>,
pub docker_default_config: Config<String>,
pub docker_credentials: DockerCredentials,
}
impl DockerManager {
pub fn new(docker: Arc<Docker>, default_docker_config: Option<Config<String>>) -> Self {
Self {
docker,
docker_credentials: DockerCredentials {
username: Some(std::env::var("DOCKER_USER").unwrap_or(String::new())),
password: Some(std::env::var("DOCKER_KEY").unwrap_or(String::new())),
..Default::default()
},
docker_default_config: default_docker_config.unwrap_or(get_default_docker_config()),
}
}
}
#[async_trait]
impl ContainerManager for DockerManager {
fn docker(&self) -> &Arc<Docker> {
&self.docker
}
fn docker_credentials(&self) -> &DockerCredentials {
&self.docker_credentials
}
fn docker_default_config(&self) -> &Config<String> {
&self.docker_default_config
}
}