diff options
author | Patrick Griffis <pgriffis@igalia.com> | 2023-02-23 14:04:43 -0600 |
---|---|---|
committer | Patrick Griffis <pgriffis@igalia.com> | 2023-02-23 14:07:02 -0600 |
commit | 543c43435b0e4bc5006da3e9bf6cd80b4dcec65b (patch) | |
tree | e1051dc31c2ee256cd07c384d22d4ea055c4e1ff | |
parent | bb730ef8b859b24d179130fec0a755244bf49d95 (diff) | |
download | flatpak-pgriffis/subsets-info.tar.gz |
Show subset information on info and remote-infopgriffis/subsets-info
-rw-r--r-- | app/flatpak-builtins-info.c | 6 | ||||
-rw-r--r-- | app/flatpak-builtins-remote-info.c | 6 | ||||
-rw-r--r-- | app/flatpak-builtins-utils.c | 21 | ||||
-rw-r--r-- | app/flatpak-builtins-utils.h | 2 |
4 files changed, 34 insertions, 1 deletions
diff --git a/app/flatpak-builtins-info.c b/app/flatpak-builtins-info.c index 5f544579..57b849ad 100644 --- a/app/flatpak-builtins-info.c +++ b/app/flatpak-builtins-info.c @@ -109,6 +109,7 @@ flatpak_builtin_info (int argc, char **argv, GCancellable *cancellable, GError * g_autofree char *formatted_size = NULL; gboolean friendly = TRUE; g_autofree const char **subpaths = NULL; + g_autofree char *subsets = NULL; int len = 0; int rows, cols; int width; @@ -211,6 +212,7 @@ flatpak_builtin_info (int argc, char **argv, GCancellable *cancellable, GError * g_printerr (_("Warning: Commit has no flatpak metadata\n")); collection_id = var_metadata_lookup_string (commit_metadata, "ostree.collection-binding", NULL); + subsets = metadata_get_subsets_string (commit_metadata); } len = 0; @@ -224,6 +226,8 @@ flatpak_builtin_info (int argc, char **argv, GCancellable *cancellable, GError * len = MAX (len, g_utf8_strlen (_("License:"), -1)); if (collection_id != NULL) len = MAX (len, g_utf8_strlen (_("Collection:"), -1)); + if (subsets != NULL) + len = MAX (len, g_utf8_strlen (_("Subsets:"), -1)); len = MAX (len, g_utf8_strlen (_("Installation:"), -1)); len = MAX (len, g_utf8_strlen (_("Installed:"), -1)); if (flatpak_decomposed_is_app (ref)) @@ -267,6 +271,8 @@ flatpak_builtin_info (int argc, char **argv, GCancellable *cancellable, GError * print_aligned (len, _("Origin:"), origin ? origin : "-"); if (collection_id) print_aligned (len, _("Collection:"), collection_id); + if (subsets) + print_aligned (len, _("Subsets:"), subsets); print_aligned (len, _("Installation:"), flatpak_dir_get_name_cached (dir)); print_aligned (len, _("Installed:"), formatted_size); if (flatpak_decomposed_is_app (ref)) diff --git a/app/flatpak-builtins-remote-info.c b/app/flatpak-builtins-remote-info.c index c15eb8a2..b761c611 100644 --- a/app/flatpak-builtins-remote-info.c +++ b/app/flatpak-builtins-remote-info.c @@ -100,6 +100,7 @@ flatpak_builtin_remote_info (int argc, char **argv, GCancellable *cancellable, G const char *collection_id = NULL; const char *eol = NULL; const char *eol_rebase = NULL; + g_autofree char *subsets = NULL; g_autoptr(GKeyFile) metakey = NULL; guint64 installed_size = 0; guint64 download_size = 0; @@ -222,6 +223,7 @@ flatpak_builtin_remote_info (int argc, char **argv, GCancellable *cancellable, G } collection_id = var_metadata_lookup_string (commit_metadata, "ostree.collection-binding", NULL); + subsets = metadata_get_subsets_string (commit_metadata); installed_size = GUINT64_FROM_BE (var_metadata_lookup_uint64 (commit_metadata, "xa.installed-size", 0)); download_size = GUINT64_FROM_BE (var_metadata_lookup_uint64 (commit_metadata, "xa.download-size", 0)); @@ -242,6 +244,8 @@ flatpak_builtin_remote_info (int argc, char **argv, GCancellable *cancellable, G len = MAX (len, g_utf8_strlen (_("License:"), -1)); if (collection_id != NULL) len = MAX (len, g_utf8_strlen (_("Collection:"), -1)); + if (subsets != NULL) + len = MAX (len, g_utf8_strlen (_("Subsets:"), -1)); if (formatted_download_size) len = MAX (len, g_utf8_strlen (_("Download:"), -1)); if (formatted_installed_size) @@ -277,6 +281,8 @@ flatpak_builtin_remote_info (int argc, char **argv, GCancellable *cancellable, G print_aligned (len, _("License:"), license); if (collection_id != NULL) print_aligned (len, _("Collection:"), collection_id); + if (subsets != NULL) + print_aligned (len, _("Subsets:"), subsets); if (formatted_download_size) print_aligned (len, _("Download:"), formatted_download_size); if (formatted_installed_size) diff --git a/app/flatpak-builtins-utils.c b/app/flatpak-builtins-utils.c index 83d46551..9294c412 100644 --- a/app/flatpak-builtins-utils.c +++ b/app/flatpak-builtins-utils.c @@ -30,6 +30,7 @@ #include "flatpak-builtins-utils.h" #include "flatpak-utils-private.h" #include "flatpak-run-private.h" +#include "flatpak-variant-impl-private.h" void @@ -68,6 +69,26 @@ ref_dir_pair_free (RefDirPair *pair) g_free (pair); } +char * +metadata_get_subsets_string (VarMetadataRef commit_metadata) +{ + VarVariantRef xa_subsets_v; + + if (var_metadata_lookup (commit_metadata, "xa.subsets", NULL, &xa_subsets_v)) + { + VarArrayofstringRef xa_subsets = var_arrayofstring_from_variant (xa_subsets_v); + gsize len = var_arrayofstring_get_length (xa_subsets); + g_autofree char **subset_strings = g_new (char *, len + 1); + + for (gsize j = 0; j < len; j++) + subset_strings[j] = (char *) var_arrayofstring_get_at (xa_subsets, j); + subset_strings[len] = NULL; + + return g_strjoinv (", ", subset_strings); + } + + return NULL; +} gboolean looks_like_branch (const char *branch) diff --git a/app/flatpak-builtins-utils.h b/app/flatpak-builtins-utils.h index 01893157..8eaa9b63 100644 --- a/app/flatpak-builtins-utils.h +++ b/app/flatpak-builtins-utils.h @@ -106,7 +106,7 @@ gboolean update_appstream (GPtrArray *dirs, char ** get_permission_tables (XdpDbusPermissionStore *store); gboolean reset_permissions_for_app (const char *app_id, GError **error); - +char * metadata_get_subsets_string (VarMetadataRef commit_metadata); /* --columns handling */ |