[gnome-builder] flatpak: try to guess the best config to load



commit 208941c8620462b1090397ddecccbb270361f48f
Author: Christian Hergert <chergert redhat com>
Date:   Wed Jan 24 19:28:47 2018 -0800

    flatpak: try to guess the best config to load
    
    We still want to make things stick across reloads of Builder, but this at
    least tries to prefer org.gnome.Nautilus.json over
    org.gnome.Nautils-3.24.json.

 .../flatpak/gbp-flatpak-configuration-provider.c   | 35 +++++++++++++++++++++-
 src/plugins/flatpak/gbp-flatpak-configuration.h    |  4 +--
 2 files changed, 36 insertions(+), 3 deletions(-)
---
diff --git a/src/plugins/flatpak/gbp-flatpak-configuration-provider.c 
b/src/plugins/flatpak/gbp-flatpak-configuration-provider.c
index b23ea5493..97db3fc07 100644
--- a/src/plugins/flatpak/gbp-flatpak-configuration-provider.c
+++ b/src/plugins/flatpak/gbp-flatpak-configuration-provider.c
@@ -965,6 +965,39 @@ gbp_flatpak_configuration_provider_load_async (IdeConfigurationProvider *provide
   IDE_EXIT;
 }
 
+static IdeConfiguration *
+guess_best_config (GPtrArray *ar)
+{
+  g_assert (ar != NULL);
+  g_assert (ar->len > 0);
+
+  for (guint i = 0; i < ar->len; i++)
+    {
+      GbpFlatpakConfiguration *config = g_ptr_array_index (ar, i);
+      g_autofree gchar *path = gbp_flatpak_configuration_get_manifest_path (config);
+
+      if (strstr (path, "-unstable.json") != NULL)
+        return IDE_CONFIGURATION (config);
+    }
+
+  for (guint i = 0; i < ar->len; i++)
+    {
+      GbpFlatpakConfiguration *config = g_ptr_array_index (ar, i);
+      g_autofree gchar *path = gbp_flatpak_configuration_get_manifest_path (config);
+      g_autofree gchar *base = g_path_get_basename (path);
+      const gchar *app_id = ide_configuration_get_app_id (IDE_CONFIGURATION (config));
+      g_autofree gchar *app_id_json = g_strdup_printf ("%s.json", app_id);
+
+      /* If appid.json is the same as the filename, that is the
+       * best match (after unstable) we can have. Use it.
+       */
+      if (dzl_str_equal0 (app_id_json, base))
+        return IDE_CONFIGURATION (config);
+    }
+
+  return g_ptr_array_index (ar, 0);
+}
+
 static gboolean
 gbp_flatpak_configuration_provider_load_finish (IdeConfigurationProvider  *provider,
                                                 GAsyncResult              *result,
@@ -992,7 +1025,7 @@ gbp_flatpak_configuration_provider_load_finish (IdeConfigurationProvider  *provi
 
       if (configs->len > 0)
         {
-          IdeConfiguration *config = g_ptr_array_index (configs, 0);
+          IdeConfiguration *config = guess_best_config (configs);
           IdeContext *context = ide_object_get_context (IDE_OBJECT (self));
           IdeConfigurationManager *manager = ide_context_get_configuration_manager (context);
 
diff --git a/src/plugins/flatpak/gbp-flatpak-configuration.h b/src/plugins/flatpak/gbp-flatpak-configuration.h
index f9223a9bf..7d3aab766 100644
--- a/src/plugins/flatpak/gbp-flatpak-configuration.h
+++ b/src/plugins/flatpak/gbp-flatpak-configuration.h
@@ -37,8 +37,8 @@ void                     gbp_flatpak_configuration_set_branch         (GbpFlatpa
 const gchar             *gbp_flatpak_configuration_get_command        (GbpFlatpakConfiguration *self);
 void                     gbp_flatpak_configuration_set_command        (GbpFlatpakConfiguration *self,
                                                                        const gchar             *command);
-const gchar * const      *gbp_flatpak_configuration_get_build_args    (GbpFlatpakConfiguration *self);
-void                      gbp_flatpak_configuration_set_build_args    (GbpFlatpakConfiguration *self,
+const gchar * const     *gbp_flatpak_configuration_get_build_args    (GbpFlatpakConfiguration *self);
+void                     gbp_flatpak_configuration_set_build_args    (GbpFlatpakConfiguration *self,
                                                                        const gchar *const      *build_args);
 const gchar * const     *gbp_flatpak_configuration_get_finish_args    (GbpFlatpakConfiguration *self);
 void                     gbp_flatpak_configuration_set_finish_args    (GbpFlatpakConfiguration *self,


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