deb_rs/shared/
package_with_version.rs1use super::VersionBinding;
2
3#[derive(Debug, Clone, PartialEq, Eq)]
4pub struct PackageWithVersion {
5 pub name: String,
6 pub version: String,
7 pub binding: VersionBinding,
8}
9
10impl PackageWithVersion {
11 pub fn from_str(contents: &str) -> Self {
12 let split: Vec<&str> = contents.split(')').collect::<Vec<&str>>()[0]
13 .split(" (")
14 .collect();
15
16 if split.len() == 2 {
17 let name = split[0].to_string();
18 let mut version = split[1].to_string();
19 let mut version_binding = String::new();
20 loop {
21 let first = version.chars().next().unwrap();
22
23 if !(first == '=' || first == '>' || first == '<' || first == ' ') {
24 break;
25 } else {
26 version_binding.push(first);
27 version.remove(0);
28 }
29 }
30
31 PackageWithVersion {
32 name,
33 version,
34 binding: VersionBinding::from_str(&version_binding),
35 }
36 } else {
37 let name = split[0].to_string();
38
39 PackageWithVersion {
40 name,
41 version: String::new(),
42 binding: VersionBinding::Any,
43 }
44 }
45 }
46}