use serde::{Deserialize, Serialize};
use std::path::PathBuf;
#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum AuthSource {
#[default]
Anonymous,
Basic { username: String, password: String },
DockerConfig,
EnvVar {
username_var: String,
password_var: String,
},
SecretStore { credential_id: String },
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct RegistryAuthConfig {
pub registry: String,
pub source: AuthSource,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
pub struct AuthConfig {
#[serde(default)]
pub registries: Vec<RegistryAuthConfig>,
#[serde(default)]
pub default: AuthSource,
pub docker_config_path: Option<PathBuf>,
}
impl Default for AuthConfig {
fn default() -> Self {
Self {
registries: Vec::new(),
default: AuthSource::DockerConfig,
docker_config_path: None,
}
}
}