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