From f6e8af186c76e742784557d6cf324377f715f5fd Mon Sep 17 00:00:00 2001 From: SteveLauC Date: Mon, 29 May 2023 19:45:11 +0800 Subject: [PATCH] feat: support Vanilla Linux (#447) --- src/steps/os/linux.rs | 33 +++++++++++++++++++++++++++++++++ src/steps/os/os_release/vanilla | 12 ++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 src/steps/os/os_release/vanilla diff --git a/src/steps/os/linux.rs b/src/steps/os/linux.rs index dabb3867..c6ef54ca 100644 --- a/src/steps/os/linux.rs +++ b/src/steps/os/linux.rs @@ -32,6 +32,7 @@ pub enum Distribution { PCLinuxOS, Suse, SuseMicro, + Vanilla, Void, Solus, Exherbo, @@ -43,6 +44,7 @@ impl Distribution { fn parse_os_release(os_release: &Ini) -> Result { let section = os_release.general_section(); let id = section.get("ID"); + let name = section.get("NAME"); let variant: Option> = section.get("VARIANT").map(|s| s.split_whitespace().collect()); let id_like: Option> = section.get("ID_LIKE").map(|s| s.split_whitespace().collect()); @@ -74,6 +76,11 @@ impl Distribution { Some("openmandriva") => Distribution::OpenMandriva, Some("pclinuxos") => Distribution::PCLinuxOS, _ => { + if let Some(name) = name { + if name.contains("Vanilla") { + return Ok(Distribution::Vanilla); + } + } if let Some(id_like) = id_like { if id_like.contains(&"debian") || id_like.contains(&"ubuntu") { return Ok(Distribution::Debian); @@ -127,6 +134,7 @@ impl Distribution { Distribution::Suse => upgrade_suse(ctx), Distribution::SuseMicro => upgrade_suse_micro(ctx), Distribution::OpenSuseTumbleweed => upgrade_opensuse_tumbleweed(ctx), + Distribution::Vanilla => upgrade_vanilla(ctx), Distribution::Void => upgrade_void(ctx), Distribution::Solus => upgrade_solus(ctx), Distribution::Exherbo => upgrade_exherbo(ctx), @@ -343,6 +351,26 @@ fn upgrade_pclinuxos(ctx: &ExecutionContext) -> Result<()> { Ok(()) } +fn upgrade_vanilla(ctx: &ExecutionContext) -> Result<()> { + let apx = require("apx")?; + + let mut update = ctx.run_type().execute(&apx); + update.args(["update", "--all"]); + if ctx.config().yes(Step::System) { + update.arg("-y"); + } + update.status_checked()?; + + let mut upgrade = ctx.run_type().execute(&apx); + update.args(["upgrade", "--all"]); + if ctx.config().yes(Step::System) { + upgrade.arg("-y"); + } + upgrade.status_checked()?; + + Ok(()) +} + fn upgrade_void(ctx: &ExecutionContext) -> Result<()> { if let Some(sudo) = ctx.sudo() { let mut command = ctx.run_type().execute(sudo); @@ -1006,4 +1034,9 @@ mod tests { fn test_deepin() { test_template(include_str!("os_release/deepin"), Distribution::Debian); } + + #[test] + fn test_vanilla() { + test_template(include_str!("os_release/vanilla"), Distribution::Vanilla); + } } diff --git a/src/steps/os/os_release/vanilla b/src/steps/os/os_release/vanilla new file mode 100644 index 00000000..b885f4d4 --- /dev/null +++ b/src/steps/os/os_release/vanilla @@ -0,0 +1,12 @@ +PRETTY_NAME="VanillaOS 22.10 all" +NAME="VanillaOS" +VERSION_ID="22.10" +VERSION="22.10 all" +VERSION_CODENAME="kinetic" +ID=ubuntu +ID_LIKE=debian +HOME_URL="https://github.com/vanilla-os" +SUPPORT_URL="https://github.com/vanilla-os" +BUG_REPORT_URL="https://github.com/vanilla-os" +PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" +UBUNTU_CODENAME="kinetic"