Skip to content

Commit 371c3ba

Browse files
committed
Fix target's OS variant structure
1 parent aadc95f commit 371c3ba

File tree

4 files changed

+27
-44
lines changed

4 files changed

+27
-44
lines changed

src/configs/migrate.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ fn migrate_target_v3_to_v4(target: &TargetDescriptionV3) -> TargetDescription {
6666
TargetDescription {
6767
arch: target.arch.clone(),
6868
os: match &target.os {
69-
OsVariantV3::Android => OsVariant::Android,
70-
OsVariantV3::iOS => OsVariant::iOS,
71-
OsVariantV3::Linux => OsVariant::Linux,
72-
OsVariantV3::UnixLike(_) => OsVariant::UnixLike,
73-
OsVariantV3::Windows => OsVariant::Windows,
74-
OsVariantV3::macOS => OsVariant::macOS,
75-
OsVariantV3::Other(v) => OsVariant::Other(v.clone()),
69+
OsVariantV3::Android => OsVariant("android".to_string()),
70+
OsVariantV3::iOS => OsVariant("ios".to_string()),
71+
OsVariantV3::Linux => OsVariant("linux".to_string()),
72+
OsVariantV3::UnixLike(_) => OsVariant("unix".to_string()),
73+
OsVariantV3::Windows => OsVariant("windows".to_string()),
74+
OsVariantV3::macOS => OsVariant("macos".to_string()),
75+
OsVariantV3::Other(v) => OsVariant(v.to_string()),
7676
},
7777
os_derivative: target.derivative.clone(),
7878
os_version: match &target.version {

src/entities/targets.rs

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,8 @@ pub struct TargetDescription {
3535
///
3636
/// Unix-like is related to `BSD` and other POSIX-compatible systems.
3737
#[derive(Deserialize, Serialize, PartialEq, Clone, Debug)]
38-
#[serde(rename_all = "snake_case", untagged)]
39-
pub enum OsVariant {
40-
Android,
41-
#[allow(non_camel_case_types)]
42-
iOS,
43-
Linux,
44-
UnixLike,
45-
Windows,
46-
#[allow(non_camel_case_types)]
47-
macOS,
48-
Other(String),
49-
}
38+
#[serde(rename_all = "snake_case")]
39+
pub struct OsVariant(pub String);
5040

5141
/// OS version specification.
5242
///
@@ -69,22 +59,15 @@ pub enum OsVersionSpecification {
6959

7060
impl std::fmt::Display for TargetDescription {
7161
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
72-
let os = match &self.os {
73-
OsVariant::Android => "android",
74-
OsVariant::iOS => "ios",
75-
OsVariant::Linux => "linux",
76-
OsVariant::UnixLike => "unix",
77-
OsVariant::Windows => "windows",
78-
OsVariant::macOS => "macos",
79-
OsVariant::Other(other) => other,
80-
};
81-
8262
let os_ver = match &self.os_version {
8363
OsVersionSpecification::No => "any",
8464
OsVersionSpecification::Weak { version } => &format!("^{}", version),
8565
OsVersionSpecification::Strong { version } => version,
8666
};
8767

88-
f.write_str(&format!("{}/{}@{}@{}", self.arch, os, self.os_derivative, os_ver))
68+
f.write_str(&format!(
69+
"{}/{}@{}@{}",
70+
self.arch, self.os.0, self.os_derivative, os_ver
71+
))
8972
}
9073
}

src/tui/add.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -812,15 +812,15 @@ impl TargetDescription {
812812
.prompt()?;
813813

814814
let os_variant = match os {
815-
"Android" => OsVariant::Android,
816-
"iOS" => OsVariant::iOS,
817-
"Linux" => OsVariant::Linux,
818-
"Unix-like" => OsVariant::UnixLike,
819-
"Windows" => OsVariant::Windows,
820-
"macOS" => OsVariant::macOS,
815+
"Android" => OsVariant("android".to_string()),
816+
"iOS" => OsVariant("ios".to_string()),
817+
"Linux" => OsVariant("linux".to_string()),
818+
"Unix-like" => OsVariant("unix".to_string()),
819+
"Windows" => OsVariant("windows".to_string()),
820+
"macOS" => OsVariant("macos".to_string()),
821821
"Other" => {
822822
let name = Text::new(i18n::TARGET_OS_OTHER).prompt()?;
823-
OsVariant::Other(name)
823+
OsVariant(name.to_lowercase())
824824
}
825825
_ => unreachable!(),
826826
};

src/tui/edit.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1120,15 +1120,15 @@ impl TargetDescription {
11201120
.prompt()?;
11211121

11221122
self.os = match os {
1123-
"Android" => OsVariant::Android,
1124-
"iOS" => OsVariant::iOS,
1125-
"Linux" => OsVariant::Linux,
1126-
"Unix-like" => OsVariant::UnixLike,
1127-
"Windows" => OsVariant::Windows,
1128-
"macOS" => OsVariant::macOS,
1123+
"Android" => OsVariant("android".to_string()),
1124+
"iOS" => OsVariant("ios".to_string()),
1125+
"Linux" => OsVariant("linux".to_string()),
1126+
"Unix-like" => OsVariant("unix-like".to_string()),
1127+
"Windows" => OsVariant("windows".to_string()),
1128+
"macOS" => OsVariant("macos".to_string()),
11291129
"Other" => {
11301130
let name = Text::new(i18n::TARGET_OS_OTHER).prompt()?;
1131-
OsVariant::Other(name)
1131+
OsVariant(name.to_lowercase())
11321132
}
11331133
_ => unreachable!(),
11341134
};

0 commit comments

Comments
 (0)