fix(os) consider Fedora Kinoite and other immutable distros to be the FedoraImmutable (#638)
* fix(os) consider Fedora Kinoite to be the Fedora Silverblue distribution * fix(os) support additional Fedora immutable variants Rename FedoraSilverblue Distribution to FedoraImmutable. Add test cases for Onyx, Sericea and Silverblue. Rename upgrade method to match distribution. Fixes #637
This commit is contained in:
@@ -24,7 +24,7 @@ pub enum Distribution {
|
||||
CentOS,
|
||||
ClearLinux,
|
||||
Fedora,
|
||||
FedoraSilverblue,
|
||||
FedoraImmutable,
|
||||
Debian,
|
||||
Gentoo,
|
||||
OpenMandriva,
|
||||
@@ -54,8 +54,12 @@ impl Distribution {
|
||||
Some("clear-linux-os") => Distribution::ClearLinux,
|
||||
Some("fedora") | Some("nobara") => {
|
||||
return if let Some(variant) = variant {
|
||||
if variant.contains(&"Silverblue") {
|
||||
Ok(Distribution::FedoraSilverblue)
|
||||
if variant.contains(&"Silverblue")
|
||||
|| variant.contains(&"Kinoite")
|
||||
|| variant.contains(&"Sericea")
|
||||
|| variant.contains(&"Onyx")
|
||||
{
|
||||
Ok(Distribution::FedoraImmutable)
|
||||
} else {
|
||||
Ok(Distribution::Fedora)
|
||||
}
|
||||
@@ -131,7 +135,7 @@ impl Distribution {
|
||||
Distribution::Alpine => upgrade_alpine_linux(ctx),
|
||||
Distribution::Arch => archlinux::upgrade_arch_linux(ctx),
|
||||
Distribution::CentOS | Distribution::Fedora => upgrade_redhat(ctx),
|
||||
Distribution::FedoraSilverblue => upgrade_fedora_silverblue(ctx),
|
||||
Distribution::FedoraImmutable => upgrade_fedora_immutable(ctx),
|
||||
Distribution::ClearLinux => upgrade_clearlinux(ctx),
|
||||
Distribution::Debian => upgrade_debian(ctx),
|
||||
Distribution::Gentoo => upgrade_gentoo(ctx),
|
||||
@@ -230,7 +234,7 @@ fn upgrade_redhat(ctx: &ExecutionContext) -> Result<()> {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn upgrade_fedora_silverblue(ctx: &ExecutionContext) -> Result<()> {
|
||||
fn upgrade_fedora_immutable(ctx: &ExecutionContext) -> Result<()> {
|
||||
let ostree = require("rpm-ostree")?;
|
||||
let mut command = ctx.run_type().execute(ostree);
|
||||
command.arg("upgrade");
|
||||
@@ -1036,6 +1040,17 @@ mod tests {
|
||||
test_template(include_str!("os_release/fedora"), Distribution::Fedora);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_fedora_immutable() {
|
||||
test_template(
|
||||
include_str!("os_release/fedorasilverblue"),
|
||||
Distribution::FedoraImmutable,
|
||||
);
|
||||
test_template(include_str!("os_release/fedorakinoite"), Distribution::FedoraImmutable);
|
||||
test_template(include_str!("os_release/fedoraonyx"), Distribution::FedoraImmutable);
|
||||
test_template(include_str!("os_release/fedorasericea"), Distribution::FedoraImmutable);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_manjaro() {
|
||||
test_template(include_str!("os_release/manjaro"), Distribution::Arch);
|
||||
|
||||
Reference in New Issue
Block a user