use oci_core::reference::Reference;
use crate::PusherError;
use super::state;
pub async fn resolve_registry_credentials(
registry_host: &str,
username: Option<String>,
password: Option<String>,
) -> Result<(String, String), PusherError> {
if let (Some(u), Some(p)) = (username, password) {
return Ok((u, p));
}
if let Ok(Some((u, p))) = state::load_credentials(registry_host).await {
return Ok((u, p));
}
Err(PusherError::push_error(format!(
"Credentials required for registry {}. Pass --username/--password or login first.",
registry_host
)))
}
#[allow(dead_code)]
pub fn validate_target_reference(target_ref: &Reference) -> Result<(), PusherError> {
if target_ref.repository.is_empty() {
return Err(PusherError::push_error(
"Target repository is required (e.g., 'registry.example.com/myapp')".to_string(),
));
}
Ok(())
}