[gnome-boxes/better-parse-unusual-medias] util-app: Improve serialization of OS media names




commit bb9289a8191281a745ded8bfe121e238dcc91d61
Author: Felipe Borges <felipeborges gnome org>
Date:   Tue Mar 2 11:59:31 2021 +0100

    util-app: Improve serialization of OS media names
    
    This parsing is far from ideal, but we plan on solidifying the
    variant_id information in libosinfo in order to get rid of this
    parsing all together.
    
    For now, this patch fixes the issues causing duplicate entries in
    the media list for the lack of matches for os variant metadata.
    
    This specifically impacts the detection of CentOS and OpenBSD medias.
    
    Fixes #648

 src/util-app.vala | 26 +++++++++++++++++++++-----
 1 file changed, 21 insertions(+), 5 deletions(-)
---
diff --git a/src/util-app.vala b/src/util-app.vala
index 8acb1451..b3ec5376 100644
--- a/src/util-app.vala
+++ b/src/util-app.vala
@@ -128,12 +128,24 @@ public string serialize_os_title (Osinfo.Media media) {
         var variant = "";
         var variants = media.get_os_variants ();
         var product = media.os as Osinfo.Product;
+
+        var media_url = "";
+        if (media.url != null) {
+            media_url = media.url.ascii_down ();
+        }
+
+        var variant_id = "";
         if (variants.get_length () > 0) {
             var os_variant = variants.get_nth (0) as Osinfo.OsVariant;
             variant = os_variant.get_name ();
-        } else if (product.name != null) {
+
+            variant_id = os_variant.get_param_value ("id");
+        }
+
+        if (variant == "" && product.name != null) {
             variant = product.name;
-            if (media.url != null && media.url.contains ("server"))
+            if (variant_id.contains ("server") ||
+                (media.url != null && media_url.contains ("server")))
                 variant += " Server";
         } else {
             if (media.url != null) {
@@ -143,13 +155,17 @@ public string serialize_os_title (Osinfo.Media media) {
         }
 
         var subvariant = "";
+        if (variant_id.contains ("netinst"))
+            subvariant = "(netinst)";
+        else if (variant_id.contains ("minimal"))
+            subvariant = "(minimal)";
 
-        if (media.url != null) {
+        if (subvariant == "" && media.url != null) {
             if (media.url.contains ("netinst"))
                 subvariant = "(netinst)";
-            else if (media.url.contains ("minimal"))
+            else if (media_url.contains ("minimal"))
                 subvariant = "(minimal)";
-            else if (media.url.contains ("dvd"))
+            else if (media_url.contains ("dvd"))
                 subvariant = "(DVD)";
         }
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]