[Libosinfo] [libosinfo PATCH 1/1] osinfo-detect: print os variants info for env format

Fabiano Fidêncio fidencio at redhat.com
Fri Apr 12 09:58:42 UTC 2019


Similarly to what's been done for the plain format, let's also print
os variants' information when using --format=env.

Signed-off-by: Fabiano Fidêncio <fidencio at redhat.com>
---
 tools/osinfo-detect.c | 47 ++++++++++++++++++++++++++++++++++---------
 1 file changed, 37 insertions(+), 10 deletions(-)

diff --git a/tools/osinfo-detect.c b/tools/osinfo-detect.c
index 4eef703..2c3ced3 100644
--- a/tools/osinfo-detect.c
+++ b/tools/osinfo-detect.c
@@ -120,11 +120,16 @@ static void print_bootable(gboolean bootable)
 static void print_media(OsinfoMedia *media)
 {
     OsinfoOs *os;
+    OsinfoOsVariantList *variants;
+    gsize num_variants;
 
     g_object_get(G_OBJECT(media), "os", &os, NULL);
     if (os == NULL)
         return;
 
+    variants = osinfo_media_get_os_variants(media);
+    num_variants = osinfo_list_get_length(OSINFO_LIST(variants));
+
     if (format == OUTPUT_FORMAT_ENV) {
         const gchar *id = osinfo_entity_get_id(OSINFO_ENTITY(os));
 
@@ -134,13 +139,22 @@ static void print_media(OsinfoMedia *media)
             g_print("OSINFO_LIVE=%s\n", id);
         g_print("OSINFO_MEDIA=%s\n",
                 osinfo_entity_get_id(OSINFO_ENTITY(media)));
+        if (num_variants > 0) {
+            gsize i;
+
+            g_print("OSINFO_MEDIA_VARIANTS=");
+            for (i = 0; i < num_variants; i++) {
+                OsinfoEntity *variant;
+
+                variant = osinfo_list_get_nth(OSINFO_LIST(variants), i);
+                g_print("%s", osinfo_os_variant_get_name(OSINFO_OS_VARIANT(variant)));
+                g_print("%s", i < num_variants - 1 ? ", " : "\n");
+            }
+        }
+
     } else {
-        OsinfoOsVariantList *variants;
         const gchar *name;
-        guint num_variants;
 
-        variants = osinfo_media_get_os_variants(media);
-        num_variants = osinfo_list_get_length(OSINFO_LIST(variants));
         if (num_variants == 1) {
             OsinfoEntity *variant;
 
@@ -156,7 +170,7 @@ static void print_media(OsinfoMedia *media)
             g_print(_("Media is live media for OS '%s'\n"), name);
 
         if (num_variants > 1) {
-            guint i;
+            gsize i;
 
             g_print(_("Available OS variants on media:\n"));
             for (i = 0; i < num_variants; i++) {
@@ -175,10 +189,17 @@ static void print_media(OsinfoMedia *media)
 
 static void print_os_tree(OsinfoOs *os, OsinfoTree *tree, OsinfoTree *matched_tree)
 {
+    OsinfoOsVariantList *variants;
+    gsize num_variants;
+
     if (os == NULL)
         return;
 
+    variants = osinfo_tree_get_os_variants(matched_tree);
+    num_variants = osinfo_list_get_length(OSINFO_LIST(variants));
+
     if (format == OUTPUT_FORMAT_ENV) {
+        gsize i;
         const gchar *id = osinfo_entity_get_id(OSINFO_ENTITY(os));
         const gchar *kernel = osinfo_tree_get_kernel_path(tree);
         const gchar *initrd = osinfo_tree_get_initrd_path(tree);
@@ -200,13 +221,19 @@ static void print_os_tree(OsinfoOs *os, OsinfoTree *tree, OsinfoTree *matched_tr
             g_print("OSINFO_TREE_INITRD=%s\n", initrd);
         if (bootiso)
             g_print("OSINFO_TREE_BOOT_ISO=%s\n", bootiso);
+        if (num_variants > 0) {
+            g_print("OSINFO_TREE_VARIANTS=");
+            for (i = 0; i < num_variants; i++) {
+                OsinfoEntity *variant;
+
+                variant = osinfo_list_get_nth(OSINFO_LIST(variants), i);
+                g_print("%s", osinfo_os_variant_get_name(OSINFO_OS_VARIANT(variant)));
+                g_print("%s", i < num_variants - 1 ? ", " : "\n");
+            }
+        }
     } else {
-        OsinfoOsVariantList *variants;
         const gchar *name;
-        guint num_variants;
 
-        variants = osinfo_tree_get_os_variants(matched_tree);
-        num_variants = osinfo_list_get_length(OSINFO_LIST(variants));
         if (num_variants == 1) {
             OsinfoEntity *variant;
 
@@ -219,7 +246,7 @@ static void print_os_tree(OsinfoOs *os, OsinfoTree *tree, OsinfoTree *matched_tr
         g_print(_("Tree is an installer for OS '%s'\n"), name);
 
         if (num_variants > 1) {
-            guint i;
+            gsize i;
 
             g_print(_("Available OS variants on tree:\n"));
             for (i = 0; i < num_variants; i++) {
-- 
2.20.1




More information about the Libosinfo mailing list