From 35e92e4055b8a6c6294602627896cc22d234c0bd Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Tue, 23 Apr 2019 16:49:30 +0200 Subject: Split types into module and submodules Without breaking the build because we reexport the private submodule types in the crate::v1::types module. --- librepology/src/v1/types.rs | 277 --------------------------------- librepology/src/v1/types/category.rs | 14 ++ librepology/src/v1/types/download.rs | 16 ++ librepology/src/v1/types/effname.rs | 14 ++ librepology/src/v1/types/license.rs | 14 ++ librepology/src/v1/types/maintainer.rs | 14 ++ librepology/src/v1/types/mod.rs | 28 ++++ librepology/src/v1/types/name.rs | 14 ++ librepology/src/v1/types/package.rs | 71 +++++++++ librepology/src/v1/types/problem.rs | 41 +++++ librepology/src/v1/types/repo.rs | 14 ++ librepology/src/v1/types/status.rs | 44 ++++++ librepology/src/v1/types/summary.rs | 14 ++ librepology/src/v1/types/version.rs | 14 ++ librepology/src/v1/types/www.rs | 15 ++ 15 files changed, 327 insertions(+), 277 deletions(-) delete mode 100644 librepology/src/v1/types.rs create mode 100644 librepology/src/v1/types/category.rs create mode 100644 librepology/src/v1/types/download.rs create mode 100644 librepology/src/v1/types/effname.rs create mode 100644 librepology/src/v1/types/license.rs create mode 100644 librepology/src/v1/types/maintainer.rs create mode 100644 librepology/src/v1/types/mod.rs create mode 100644 librepology/src/v1/types/name.rs create mode 100644 librepology/src/v1/types/package.rs create mode 100644 librepology/src/v1/types/problem.rs create mode 100644 librepology/src/v1/types/repo.rs create mode 100644 librepology/src/v1/types/status.rs create mode 100644 librepology/src/v1/types/summary.rs create mode 100644 librepology/src/v1/types/version.rs create mode 100644 librepology/src/v1/types/www.rs diff --git a/librepology/src/v1/types.rs b/librepology/src/v1/types.rs deleted file mode 100644 index bd47471..0000000 --- a/librepology/src/v1/types.rs +++ /dev/null @@ -1,277 +0,0 @@ -use std::ops::Deref; - -use url::Url; - -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Package { - /// name of repository for this package - repo: Repo, - - /// name - name: Name, - - /// version - version: Version, - - /// package status, one of newest, devel, unique, outdated, legacy, rolling, noscheme, incorrect, untrusted, ignored - status: Option, - - /// one-line description of the package - summary: Option, - - /// list of package licenses - licenses: Option>, - - /// list of package maintainers - maintainers: Option>, - - /// list of package webpages - www: Option>, - - /// list of package downloads - downloads: Option>, -} - -impl Package { - pub fn repo(&self) -> &Repo { - &self.repo - } - - pub fn name(&self) -> &Name { - &self.name - } - - pub fn version(&self) -> &Version { - &self.version - } - - pub fn status(&self) -> Option<&Status> { - self.status.as_ref() - } - - pub fn summary(&self) -> Option<&Summary> { - self.summary.as_ref() - } - - pub fn licenses(&self) -> Option<&Vec> { - self.licenses.as_ref() - } - - pub fn maintainers(&self) -> Option<&Vec> { - self.maintainers.as_ref() - } - - pub fn www(&self) -> Option<&Vec> { - self.www.as_ref() - } - - pub fn downloads(&self) -> Option<&Vec> { - self.downloads.as_ref() - } - -} - -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Problem { - #[serde(rename = "repo")] - repo: Repo, - - #[serde(rename = "name")] - name: Name, - - #[serde(rename = "effname")] - effname: EffName, - - #[serde(rename = "maintainer")] - maintainer: Maintainer, - - #[serde(rename = "problem")] - problem: String, -} - -impl Problem { - pub fn repo(&self) -> &Repo { - &self.repo - } - - pub fn name(&self) -> &Name { - &self.name - } - - pub fn effname(&self) -> &EffName { - &self.effname - } - - pub fn maintainer(&self) -> &Maintainer { - &self.maintainer - } - - pub fn problem_description(&self) -> &String { - &self.problem - } -} - -// name of repository for this package -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Repo(String); - -impl Deref for Repo { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// package name as in repository (if different from version) -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Name(String); - -impl Deref for Name { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// package version (sanitized) -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Version(String); - -impl Deref for Version { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// package status -#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize, Display)] -pub enum Status { - #[serde(rename = "newest")] - #[display(fmt = "newest")] - Newest, - - #[serde(rename = "devel")] - #[display(fmt = "devel")] - Devel, - - #[serde(rename = "unique")] - #[display(fmt = "unique")] - Unique, - - #[serde(rename = "outdated")] - #[display(fmt = "outdated")] - Outdated, - - #[serde(rename = "legacy")] - #[display(fmt = "legacy")] - Legacy, - - #[serde(rename = "rolling")] - #[display(fmt = "rolling")] - Rolling, - - #[serde(rename = "noscheme")] - #[display(fmt = "noscheme")] - Noscheme, - - #[serde(rename = "incorrect")] - #[display(fmt = "incorrect")] - Incorrect, - - #[serde(rename = "untrusted")] - #[display(fmt = "untrusted")] - Untrusted, - - #[serde(rename = "ignored")] - #[display(fmt = "ignored")] - Ignored, -} - -// one-line description of the package -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Summary(String); - -impl Deref for Summary { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package categories -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Category(String); - -impl Deref for Category { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package licenses -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct License(String); - -impl Deref for License { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package maintainers -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct Maintainer(String); - -impl Deref for Maintainer { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package webpages -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Www(#[serde(with = "url_serde")] Url); - -impl Deref for Www { - type Target = Url; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package downloads -#[derive(Clone, Debug, Serialize, Deserialize)] -pub struct Download(#[serde(with = "url_serde")] Url); - -impl Deref for Download { - type Target = Url; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -// list of package downloads -#[derive(Eq, PartialEq, PartialOrd, Ord, Clone, Debug, Serialize, Deserialize)] -pub struct EffName(String); - -impl Deref for EffName { - type Target = String; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - diff --git a/librepology/src/v1/types/category.rs b/librepology/src/v1/types/category.rs new file mode 100644 index 0000000..1bc8c02 --- /dev/null +++ b/librepology/src/v1/types/category.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// list of package categories +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Category(String); + +impl Deref for Category { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/download.rs b/librepology/src/v1/types/download.rs new file mode 100644 index 0000000..e337baa --- /dev/null +++ b/librepology/src/v1/types/download.rs @@ -0,0 +1,16 @@ +use std::ops::Deref; + +use url::Url; + +// list of package downloads +#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize)] +pub struct Download(#[serde(with = "url_serde")] Url); + +impl Deref for Download { + type Target = Url; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/effname.rs b/librepology/src/v1/types/effname.rs new file mode 100644 index 0000000..ae38fd7 --- /dev/null +++ b/librepology/src/v1/types/effname.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// list of package downloads +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct EffName(String); + +impl Deref for EffName { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/license.rs b/librepology/src/v1/types/license.rs new file mode 100644 index 0000000..7d67a2e --- /dev/null +++ b/librepology/src/v1/types/license.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// list of package licenses +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct License(String); + +impl Deref for License { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/maintainer.rs b/librepology/src/v1/types/maintainer.rs new file mode 100644 index 0000000..d76c879 --- /dev/null +++ b/librepology/src/v1/types/maintainer.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// list of package maintainers +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Maintainer(String); + +impl Deref for Maintainer { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/mod.rs b/librepology/src/v1/types/mod.rs new file mode 100644 index 0000000..4e97b44 --- /dev/null +++ b/librepology/src/v1/types/mod.rs @@ -0,0 +1,28 @@ +mod category; +mod download; +mod effname; +mod license; +mod maintainer; +mod name; +mod package; +mod problem; +mod repo; +mod status; +mod summary; +mod version; +mod www; + +pub use category::Category; +pub use download::Download; +pub use effname::EffName; +pub use license::License; +pub use maintainer::Maintainer; +pub use name::Name; +pub use package::Package; +pub use problem::Problem; +pub use repo::Repo; +pub use status::Status; +pub use summary::Summary; +pub use version::Version; +pub use www::Www; + diff --git a/librepology/src/v1/types/name.rs b/librepology/src/v1/types/name.rs new file mode 100644 index 0000000..649e70d --- /dev/null +++ b/librepology/src/v1/types/name.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// package name as in repository (if different from version) +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Name(String); + +impl Deref for Name { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/package.rs b/librepology/src/v1/types/package.rs new file mode 100644 index 0000000..fc66faa --- /dev/null +++ b/librepology/src/v1/types/package.rs @@ -0,0 +1,71 @@ +use crate::v1::types::*; + +#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize)] +pub struct Package { + /// name of repository for this package + repo: Repo, + + /// name + name: Name, + + /// version + version: Version, + + /// package status, one of newest, devel, unique, outdated, legacy, rolling, noscheme, incorrect, untrusted, ignored + status: Option, + + /// one-line description of the package + summary: Option, + + /// list of package licenses + licenses: Option>, + + /// list of package maintainers + maintainers: Option>, + + /// list of package webpages + www: Option>, + + /// list of package downloads + downloads: Option>, +} + +impl Package { + pub fn repo(&self) -> &Repo { + &self.repo + } + + pub fn name(&self) -> &Name { + &self.name + } + + pub fn version(&self) -> &Version { + &self.version + } + + pub fn status(&self) -> Option<&Status> { + self.status.as_ref() + } + + pub fn summary(&self) -> Option<&Summary> { + self.summary.as_ref() + } + + pub fn licenses(&self) -> Option<&Vec> { + self.licenses.as_ref() + } + + pub fn maintainers(&self) -> Option<&Vec> { + self.maintainers.as_ref() + } + + pub fn www(&self) -> Option<&Vec> { + self.www.as_ref() + } + + pub fn downloads(&self) -> Option<&Vec> { + self.downloads.as_ref() + } + +} + diff --git a/librepology/src/v1/types/problem.rs b/librepology/src/v1/types/problem.rs new file mode 100644 index 0000000..60c7cc4 --- /dev/null +++ b/librepology/src/v1/types/problem.rs @@ -0,0 +1,41 @@ +use crate::v1::types::*; + +#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize)] +pub struct Problem { + #[serde(rename = "repo")] + repo: Repo, + + #[serde(rename = "name")] + name: Name, + + #[serde(rename = "effname")] + effname: EffName, + + #[serde(rename = "maintainer")] + maintainer: Maintainer, + + #[serde(rename = "problem")] + problem: String, +} + +impl Problem { + pub fn repo(&self) -> &Repo { + &self.repo + } + + pub fn name(&self) -> &Name { + &self.name + } + + pub fn effname(&self) -> &EffName { + &self.effname + } + + pub fn maintainer(&self) -> &Maintainer { + &self.maintainer + } + + pub fn problem_description(&self) -> &String { + &self.problem + } +} diff --git a/librepology/src/v1/types/repo.rs b/librepology/src/v1/types/repo.rs new file mode 100644 index 0000000..7305ec6 --- /dev/null +++ b/librepology/src/v1/types/repo.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// name of repository for this package +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Repo(String); + +impl Deref for Repo { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/status.rs b/librepology/src/v1/types/status.rs new file mode 100644 index 0000000..c42d510 --- /dev/null +++ b/librepology/src/v1/types/status.rs @@ -0,0 +1,44 @@ +// package status +#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize, Display)] +pub enum Status { + #[serde(rename = "newest")] + #[display(fmt = "newest")] + Newest, + + #[serde(rename = "devel")] + #[display(fmt = "devel")] + Devel, + + #[serde(rename = "unique")] + #[display(fmt = "unique")] + Unique, + + #[serde(rename = "outdated")] + #[display(fmt = "outdated")] + Outdated, + + #[serde(rename = "legacy")] + #[display(fmt = "legacy")] + Legacy, + + #[serde(rename = "rolling")] + #[display(fmt = "rolling")] + Rolling, + + #[serde(rename = "noscheme")] + #[display(fmt = "noscheme")] + Noscheme, + + #[serde(rename = "incorrect")] + #[display(fmt = "incorrect")] + Incorrect, + + #[serde(rename = "untrusted")] + #[display(fmt = "untrusted")] + Untrusted, + + #[serde(rename = "ignored")] + #[display(fmt = "ignored")] + Ignored, +} + diff --git a/librepology/src/v1/types/summary.rs b/librepology/src/v1/types/summary.rs new file mode 100644 index 0000000..494e671 --- /dev/null +++ b/librepology/src/v1/types/summary.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// one-line description of the package +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Summary(String); + +impl Deref for Summary { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/version.rs b/librepology/src/v1/types/version.rs new file mode 100644 index 0000000..cad703a --- /dev/null +++ b/librepology/src/v1/types/version.rs @@ -0,0 +1,14 @@ +use std::ops::Deref; + +// package version (sanitized) +#[derive(Eq, PartialEq, Ord, PartialOrd, Clone, Debug, Serialize, Deserialize)] +pub struct Version(String); + +impl Deref for Version { + type Target = String; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + diff --git a/librepology/src/v1/types/www.rs b/librepology/src/v1/types/www.rs new file mode 100644 index 0000000..a59ef02 --- /dev/null +++ b/librepology/src/v1/types/www.rs @@ -0,0 +1,15 @@ +use std::ops::Deref; +use url::Url; + +// list of package webpages +#[derive(Eq, PartialEq, Clone, Debug, Serialize, Deserialize)] +pub struct Www(#[serde(with = "url_serde")] Url); + +impl Deref for Www { + type Target = Url; + + fn deref(&self) -> &Self::Target { + &self.0 + } +} + -- cgit v1.2.3