diff --git a/src/repository/dockerhub.rs b/src/repository/dockerhub.rs index a3202e0..5d626ef 100644 --- a/src/repository/dockerhub.rs +++ b/src/repository/dockerhub.rs @@ -70,35 +70,4 @@ impl DockerHub { next_page: tags.next_page, }) } - - /// checks the repo name and may add a prefix for official images - pub fn check_repo(name: &str) -> Result { - let repo = match repo::split_tag_from_repo(name) { - Err(e) => return Err(Error::Converting(format!("{}", e))), - Ok((name, _)) => name, - }; - - match repo::split_repo_without_tag(name) { - Ok(repo::Repo::Project(s)) => Ok(format!("library/{}", s)), - Ok(_) => Ok(repo.to_string()), - Err(e) => Err(Error::Converting(format!("{}", e))), - } - } -} - -#[cfg(test)] -mod tests { - use crate::repository::dockerhub::DockerHub; - #[test] - fn test_check_repo() { - assert_eq!(DockerHub::check_repo("nginx").unwrap(), "library/nginx"); - assert_eq!( - DockerHub::check_repo("library/nginx").unwrap(), - "library/nginx" - ); - assert_eq!( - DockerHub::check_repo("rocketchat/rocket.chat").unwrap(), - "rocketchat/rocket.chat" - ); - } } diff --git a/src/repository/mod.rs b/src/repository/mod.rs index 0346128..ae45c6b 100644 --- a/src/repository/mod.rs +++ b/src/repository/mod.rs @@ -1,9 +1,11 @@ -pub mod dockerhub; +mod dockerhub; use std::fmt; use chrono::DateTime; +use crate::repo; + #[derive(Debug, PartialEq)] pub enum Error { /// couldn't fetch json with reqwest @@ -148,3 +150,30 @@ fn format_time_nice(time: chrono::Duration) -> String { format!("{} Sekunden", time.num_seconds()) } } + +/// checks the repo name and may add a prefix for official images +pub fn check_repo(name: &str) -> Result { + let repo = match repo::split_tag_from_repo(name) { + Err(e) => return Err(Error::Converting(format!("{}", e))), + Ok((name, _)) => name, + }; + + match repo::split_repo_without_tag(name) { + Ok(repo::Repo::Project(s)) => Ok(format!("library/{}", s)), + Ok(_) => Ok(repo.to_string()), + Err(e) => Err(Error::Converting(format!("{}", e))), + } +} + +#[cfg(test)] +mod tests { + #[test] + fn test_check_repo() { + assert_eq!(super::check_repo("nginx").unwrap(), "library/nginx"); + assert_eq!(super::check_repo("library/nginx").unwrap(), "library/nginx"); + assert_eq!( + super::check_repo("rocketchat/rocket.chat").unwrap(), + "rocketchat/rocket.chat" + ); + } +} diff --git a/src/ui/default.rs b/src/ui/default.rs index 7a19cde..f1b333a 100644 --- a/src/ui/default.rs +++ b/src/ui/default.rs @@ -7,7 +7,7 @@ use tui::backend::TermionBackend; use tui::layout::{Constraint, Direction, Layout}; use tui::Terminal; -use crate::repository::dockerhub; +use crate::repository; use crate::widget::info; use crate::widget::repo_entry; use crate::widget::service_switcher; @@ -157,7 +157,7 @@ impl Ui { match ui.services.extract_repo() { Err(e) => ui.info.set_info(&format!("{}", e)), Ok(s) => { - let repo = match dockerhub::DockerHub::check_repo(&s) { + let repo = match repository::check_repo(&s) { Err(e) => { ui.info.set_info(&format!("{}", e)); continue; @@ -178,7 +178,7 @@ impl Ui { match ui.services.extract_repo() { Err(e) => ui.info.set_info(&format!("{}", e)), Ok(s) => { - let repo = match dockerhub::DockerHub::check_repo(&s) { + let repo = match repository::check_repo(&s) { Err(e) => { ui.info.set_info(&format!("{}", e)); continue;