From 48ad97fd6112ec7cc61fc65b7b2781325c50333b Mon Sep 17 00:00:00 2001 From: Richard Hughes Date: Sat, 9 Sep 2017 20:47:21 +0100 Subject: [PATCH] Add a human-readable title for each remote This allows us to show something useful in a GUI. --- data/remotes.d/README.md | 1 + data/remotes.d/fwupd.conf | 1 + data/remotes.d/lvfs-testing.conf | 1 + data/remotes.d/lvfs.conf | 1 + data/remotes.d/vendor.conf | 1 + libfwupd/fwupd-remote.c | 33 ++++++++++++++++++++++++++++++++ libfwupd/fwupd-remote.h | 1 + libfwupd/fwupd-self-test.c | 2 ++ src/fu-util.c | 4 ++++ 9 files changed, 45 insertions(+) diff --git a/data/remotes.d/README.md b/data/remotes.d/README.md index 7dc597dd3..705d6930a 100644 --- a/data/remotes.d/README.md +++ b/data/remotes.d/README.md @@ -4,6 +4,7 @@ Vendor Firmware These are the steps to add vendor that is installed as part of an OSTree image: * Change `/etc/fwupd/remotes.d/vendor.conf` to have `Enabled=true` +* Change `/etc/fwupd/remotes.d/vendor.conf` to have the correct `Title` * Deploy the firmware to `/usr/share/fwupd/remotes.d/vendor/firmware` * Deploy the metadata to `/usr/share/fwupd/remotes.d/vendor/vendor.xml` diff --git a/data/remotes.d/fwupd.conf b/data/remotes.d/fwupd.conf index b92f0a8e3..4a75c0491 100644 --- a/data/remotes.d/fwupd.conf +++ b/data/remotes.d/fwupd.conf @@ -2,5 +2,6 @@ # this remote provides metadata shipped with the fwupd package Enabled=true +Title=Core Keyring=none MetadataURI=file://@datadir@/fwupd/remotes.d/fwupd/metadata.xml diff --git a/data/remotes.d/lvfs-testing.conf b/data/remotes.d/lvfs-testing.conf index 92504d4d0..9191067e4 100644 --- a/data/remotes.d/lvfs-testing.conf +++ b/data/remotes.d/lvfs-testing.conf @@ -2,6 +2,7 @@ # this remote provides metadata and firmware marked as 'testing' from the LVFS Enabled=false +Title=Linux Vendor Firmware Service (testing) Keyring=gpg MetadataURI=https://s3.amazonaws.com/lvfsbucket/downloads/firmware-testing.xml.gz Username= diff --git a/data/remotes.d/lvfs.conf b/data/remotes.d/lvfs.conf index 05c1206a2..7126f0d8c 100644 --- a/data/remotes.d/lvfs.conf +++ b/data/remotes.d/lvfs.conf @@ -2,6 +2,7 @@ # this remote provides metadata and firmware marked as 'stable' from the LVFS Enabled=true +Title=Linux Vendor Firmware Service Keyring=gpg MetadataURI=https://s3.amazonaws.com/lvfsbucket/downloads/firmware.xml.gz OrderBefore=fwupd diff --git a/data/remotes.d/vendor.conf b/data/remotes.d/vendor.conf index 447ef7986..6cdf59cb7 100644 --- a/data/remotes.d/vendor.conf +++ b/data/remotes.d/vendor.conf @@ -3,5 +3,6 @@ # this remote provides metadata shipped by the OS vendor and can be found in # /usr/share/fwupd/remotes.d/vendor and /usr/share/fwupd/remotes.d/vendor/firmware Enabled=false +Title=Vendor Keyring=none MetadataURI=file://@datadir@/fwupd/remotes.d/vendor/vendor.xml.gz diff --git a/libfwupd/fwupd-remote.c b/libfwupd/fwupd-remote.c index c19ba40a3..c43bcfb2e 100644 --- a/libfwupd/fwupd-remote.c +++ b/libfwupd/fwupd-remote.c @@ -38,6 +38,7 @@ struct _FwupdRemote gchar *metadata_uri_sig; gchar *username; gchar *password; + gchar *title; gchar *filename; gchar *filename_asc; gchar *filename_cache; @@ -73,6 +74,13 @@ fwupd_remote_set_username (FwupdRemote *self, const gchar *username) soup_uri_set_user (self->uri_asc, username); } +static void +fwupd_remote_set_title (FwupdRemote *self, const gchar *title) +{ + g_free (self->title); + self->title = g_strdup (title); +} + static void fwupd_remote_set_password (FwupdRemote *self, const gchar *password) { @@ -298,6 +306,7 @@ fwupd_remote_load_from_filename (FwupdRemote *self, /* extract data */ self->enabled = g_key_file_get_boolean (kf, group, "Enabled", NULL); + self->title = g_key_file_get_string (kf, group, "Title", NULL); /* DOWNLOAD-type remotes */ if (self->kind == FWUPD_REMOTE_KIND_DOWNLOAD) { @@ -546,6 +555,23 @@ fwupd_remote_get_filename_asc (FwupdRemote *self) return self->filename_asc; } +/** + * fwupd_remote_get_title: + * @self: A #FwupdRemote + * + * Gets the remote title, e.g. "Linux Vendor Firmware Service". + * + * Returns: a string, or %NULL if unset + * + * Since: 0.9.8 + **/ +const gchar * +fwupd_remote_get_title (FwupdRemote *self) +{ + g_return_val_if_fail (FWUPD_IS_REMOTE (self), NULL); + return self->title; +} + /** * fwupd_remote_build_uri: * @self: A #FwupdRemote @@ -766,6 +792,10 @@ fwupd_remote_to_variant_builder (FwupdRemote *self, GVariantBuilder *builder) g_variant_builder_add (builder, "{sv}", "Password", g_variant_new_string (self->password)); } + if (self->title != NULL) { + g_variant_builder_add (builder, "{sv}", "Title", + g_variant_new_string (self->title)); + } if (self->metadata_uri != NULL) { g_variant_builder_add (builder, "{sv}", "Url", g_variant_new_string (self->metadata_uri)); @@ -832,6 +862,8 @@ fwupd_remote_set_from_variant_iter (FwupdRemote *self, GVariantIter *iter) fwupd_remote_set_username (self, g_variant_get_string (value, NULL)); } else if (g_strcmp0 (key, "Password") == 0) { fwupd_remote_set_password (self, g_variant_get_string (value, NULL)); + } else if (g_strcmp0 (key, "Title") == 0) { + fwupd_remote_set_title (self, g_variant_get_string (value, NULL)); } else if (g_strcmp0 (key, "Enabled") == 0) { self->enabled = g_variant_get_boolean (value); } else if (g_strcmp0 (key, "Priority") == 0) { @@ -961,6 +993,7 @@ fwupd_remote_finalize (GObject *obj) g_free (self->firmware_base_uri); g_free (self->username); g_free (self->password); + g_free (self->title); g_free (self->filename); g_free (self->filename_asc); g_free (self->filename_cache); diff --git a/libfwupd/fwupd-remote.h b/libfwupd/fwupd-remote.h index 109527a67..ad032b23e 100644 --- a/libfwupd/fwupd-remote.h +++ b/libfwupd/fwupd-remote.h @@ -44,6 +44,7 @@ const gchar *fwupd_remote_kind_to_string (FwupdRemoteKind kind); FwupdRemote *fwupd_remote_new (void); const gchar *fwupd_remote_get_id (FwupdRemote *self); +const gchar *fwupd_remote_get_title (FwupdRemote *self); const gchar *fwupd_remote_get_filename (FwupdRemote *self); const gchar *fwupd_remote_get_filename_asc (FwupdRemote *self); const gchar *fwupd_remote_get_username (FwupdRemote *self); diff --git a/libfwupd/fwupd-self-test.c b/libfwupd/fwupd-self-test.c index a1bdabed9..f2e880217 100644 --- a/libfwupd/fwupd-self-test.c +++ b/libfwupd/fwupd-self-test.c @@ -113,6 +113,7 @@ fwupd_remote_download_func (void) g_assert (fwupd_remote_get_enabled (remote)); g_assert (fwupd_remote_get_metadata_uri (remote) != NULL); g_assert (fwupd_remote_get_metadata_uri_sig (remote) != NULL); + g_assert_cmpstr (fwupd_remote_get_title (remote), ==, "Linux Vendor Firmware Service"); g_assert_cmpstr (fwupd_remote_get_filename (remote), ==, "lvfs-firmware.xml.gz"); g_assert_cmpstr (fwupd_remote_get_filename_asc (remote), ==, "lvfs-firmware.xml.gz.asc"); g_assert_cmpstr (fwupd_remote_get_filename_cache (remote), ==, @@ -167,6 +168,7 @@ fwupd_remote_local_func (void) g_assert (fwupd_remote_get_enabled (remote)); g_assert (fwupd_remote_get_metadata_uri (remote) == NULL); g_assert (fwupd_remote_get_metadata_uri_sig (remote) == NULL); + g_assert_cmpstr (fwupd_remote_get_title (remote), ==, "Core"); g_assert_cmpstr (fwupd_remote_get_filename (remote), ==, NULL); g_assert_cmpstr (fwupd_remote_get_filename_asc (remote), ==, NULL); g_assert_cmpstr (fwupd_remote_get_filename_cache (remote), ==, "@datadir@/fwupd/remotes.d/fwupd/metadata.xml"); diff --git a/src/fu-util.c b/src/fu-util.c index 343768bf2..7aee0626f 100644 --- a/src/fu-util.c +++ b/src/fu-util.c @@ -1104,6 +1104,10 @@ fu_util_get_remotes (FuUtilPrivate *priv, gchar **values, GError **error) fu_util_print_data (_("Remote ID"), fwupd_remote_get_id (remote)); + /* TRANSLATORS: remote title, e.g. "Linux Vendor Firmware Service" */ + fu_util_print_data (_("Title"), + fwupd_remote_get_title (remote)); + /* TRANSLATORS: remote type, e.g. remote or local */ fu_util_print_data (_("Type"), fwupd_remote_kind_to_string (kind));