rez_next_package/requirement/
display.rs1use std::fmt;
4
5use super::types::{EnvCondition, PlatformCondition, Requirement, VersionConstraint};
6
7impl fmt::Display for Requirement {
8 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
9 if self.conflict {
10 write!(f, "!")?;
11 } else if self.weak {
12 write!(f, "~")?;
13 }
14 if let Some(ref namespace) = self.namespace {
15 write!(f, "{}::", namespace)?;
16 }
17 write!(f, "{}", self.name)?;
18 if let Some(ref constraint) = self.version_constraint {
19 write!(f, "{}", constraint)?;
20 }
21 for condition in &self.platform_conditions {
22 write!(f, "[{}]", condition)?;
23 }
24 for condition in &self.env_conditions {
25 write!(f, "[{}]", condition)?;
26 }
27 Ok(())
28 }
29}
30
31impl fmt::Display for PlatformCondition {
32 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
33 let op = if self.negate { "!=" } else { "==" };
34 write!(
35 f,
36 "platform{}'{}'{}",
37 op,
38 self.platform,
39 self.arch
40 .as_ref()
41 .map_or(String::new(), |a| format!(" and arch=='{}'", a))
42 )
43 }
44}
45
46impl fmt::Display for EnvCondition {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 let op = if self.negate { "!=" } else { "==" };
49 match &self.expected_value {
50 Some(value) => write!(f, "env.{}{}'{}'", self.var_name, op, value),
51 None => write!(f, "env.{}", self.var_name),
52 }
53 }
54}
55
56impl fmt::Display for VersionConstraint {
57 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
58 match self {
59 VersionConstraint::Exact(v) => write!(f, "=={}", v.as_str()),
60 VersionConstraint::GreaterThan(v) => write!(f, ">{}", v.as_str()),
61 VersionConstraint::GreaterThanOrEqual(v) => write!(f, ">={}", v.as_str()),
62 VersionConstraint::LessThan(v) => write!(f, "<{}", v.as_str()),
63 VersionConstraint::LessThanOrEqual(v) => write!(f, "<={}", v.as_str()),
64 VersionConstraint::Compatible(v) => write!(f, "~={}", v.as_str()),
65 VersionConstraint::Range(min, max) => {
66 write!(f, ">={},<{}", min.as_str(), max.as_str())
67 }
68 VersionConstraint::Multiple(constraints) => {
69 let strs: Vec<String> = constraints.iter().map(|c| c.to_string()).collect();
70 write!(f, "{}", strs.join(","))
71 }
72 VersionConstraint::Alternative(constraints) => {
73 let strs: Vec<String> = constraints.iter().map(|c| c.to_string()).collect();
74 write!(f, "({})", strs.join(" || "))
75 }
76 VersionConstraint::Exclude(versions) => {
77 let strs: Vec<String> = versions
78 .iter()
79 .map(|v| format!("!={}", v.as_str()))
80 .collect();
81 write!(f, "{}", strs.join(","))
82 }
83 VersionConstraint::Wildcard(pattern) => write!(f, "=={}", pattern),
84 VersionConstraint::Prefix(v) => write!(f, "-{}", v.as_str()),
85 VersionConstraint::Any => write!(f, ""),
86 }
87 }
88}