diff options
| author | John Turner <jturner.usa@gmail.com> | 2025-11-18 01:26:17 +0000 |
|---|---|---|
| committer | John Turner <jturner.usa@gmail.com> | 2025-11-18 01:27:29 +0000 |
| commit | db02762ee1b012a137bb48a51e90ddf8826fe449 (patch) | |
| tree | 360811323ea53c5861a5d2cae64714459c71b631 /src/atom/mod.rs | |
| parent | d4fd6cd211dc684d1ab096ca2a52264e18021bc4 (diff) | |
| download | gentoo-utils-db02762ee1b012a137bb48a51e90ddf8826fe449.tar.gz | |
version wildcard comes after the version expression
Diffstat (limited to 'src/atom/mod.rs')
| -rw-r--r-- | src/atom/mod.rs | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/atom/mod.rs b/src/atom/mod.rs index 8da7468..3be42bb 100644 --- a/src/atom/mod.rs +++ b/src/atom/mod.rs @@ -67,6 +67,9 @@ pub struct Version { } #[derive(Clone, Copy, Debug, PartialEq, Eq)] +pub struct Wildcard; + +#[derive(Clone, Copy, Debug, PartialEq, Eq)] pub enum SlotOperator { Eq, Star, @@ -127,7 +130,7 @@ pub struct Atom { blocker: Option<Blocker>, category: Category, name: Name, - version: Option<(VersionOperator, Version)>, + version: Option<(VersionOperator, Version, Option<Wildcard>)>, slot: Option<Slot>, #[get(kind = "deref")] usedeps: Vec<UseDep>, @@ -146,7 +149,7 @@ impl Cpv { impl Atom { #[must_use] pub fn version_operator(&self) -> Option<VersionOperator> { - self.version.clone().map(|(oper, _)| oper) + self.version.clone().map(|(oper, _, _)| oper) } #[must_use] @@ -160,7 +163,7 @@ impl Atom { #[must_use] pub fn into_cpv(self) -> Option<Cpv> { match self.version { - Some((_, version)) => Some(Cpv { + Some((_, version, _)) => Some(Cpv { category: self.category, name: self.name, version, @@ -639,8 +642,10 @@ impl fmt::Display for Atom { write!(f, "/")?; write!(f, "{}", self.name)?; - if let Some((_, version)) = self.version.as_ref() { + if let Some((_, version, None)) = self.version() { write!(f, "-{version}")?; + } else if let Some((_, version, Some(_))) = self.version() { + write!(f, "-{version}*")?; } if let Some(slot) = self.slot.as_ref() { |
