[gnome-builder] flatpak: add helper to locate deploy dir for a runtime by id
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] flatpak: add helper to locate deploy dir for a runtime by id
- Date: Thu, 16 Feb 2017 19:40:21 +0000 (UTC)
commit b4684968d1df69863f5994e4b0f1c8bfc94aa68d
Author: Christian Hergert <chergert redhat com>
Date: Thu Feb 16 11:39:10 2017 -0800
flatpak: add helper to locate deploy dir for a runtime by id
This is useful when we need to discover the deploy dir for a runtime by
id which happens when we need the SDK deploy dir instead of the platform
deploy dir.
plugins/flatpak/gbp-flatpak-application-addin.c | 54 +++++++++++++++++++++++
plugins/flatpak/gbp-flatpak-application-addin.h | 4 ++
2 files changed, 58 insertions(+), 0 deletions(-)
---
diff --git a/plugins/flatpak/gbp-flatpak-application-addin.c b/plugins/flatpak/gbp-flatpak-application-addin.c
index 1ecfdd1..9652a28 100644
--- a/plugins/flatpak/gbp-flatpak-application-addin.c
+++ b/plugins/flatpak/gbp-flatpak-application-addin.c
@@ -918,3 +918,57 @@ gbp_flatpak_application_addin_locate_sdk_finish (GbpFlatpakApplicationAddin *se
IDE_RETURN (ret);
}
+
+static FlatpakInstalledRef *
+gbp_flatpak_application_addin_find_ref (GbpFlatpakApplicationAddin *self,
+ const gchar *id,
+ const gchar *arch,
+ const gchar *branch)
+{
+ for (guint i = 0; i < self->installations->len; i++)
+ {
+ InstallInfo *info = g_ptr_array_index (self->installations, i);
+ g_autoptr(GPtrArray) ar = NULL;
+
+ ar = flatpak_installation_list_installed_refs_by_kind (info->installation,
+ FLATPAK_REF_KIND_RUNTIME,
+ NULL,
+ NULL);
+
+ if (ar != NULL)
+ {
+ for (guint j = 0; j < ar->len; j++)
+ {
+ FlatpakRef *ref = g_ptr_array_index (ar, j);
+
+ if (g_strcmp0 (id, flatpak_ref_get_name (ref)) == 0 &&
+ g_strcmp0 (arch, flatpak_ref_get_arch (ref)) == 0 &&
+ g_strcmp0 (branch, flatpak_ref_get_branch (ref)) == 0)
+ return g_object_ref (ref);
+ }
+ }
+ }
+
+ return NULL;
+}
+
+gchar *
+gbp_flatpak_application_addin_get_deploy_dir (GbpFlatpakApplicationAddin *self,
+ const gchar *id,
+ const gchar *arch,
+ const gchar *branch)
+{
+ g_autoptr(FlatpakInstalledRef) ref = NULL;
+
+ g_return_val_if_fail (GBP_IS_FLATPAK_APPLICATION_ADDIN (self), NULL);
+ g_return_val_if_fail (id, NULL);
+ g_return_val_if_fail (arch, NULL);
+ g_return_val_if_fail (branch, NULL);
+
+ ref = gbp_flatpak_application_addin_find_ref (self, id, arch, branch);
+
+ if (ref != NULL)
+ return g_strdup (flatpak_installed_ref_get_deploy_dir (ref));
+
+ return NULL;
+}
diff --git a/plugins/flatpak/gbp-flatpak-application-addin.h b/plugins/flatpak/gbp-flatpak-application-addin.h
index 69f23e3..1e5cd27 100644
--- a/plugins/flatpak/gbp-flatpak-application-addin.h
+++ b/plugins/flatpak/gbp-flatpak-application-addin.h
@@ -58,6 +58,10 @@ gboolean gbp_flatpak_application_addin_locate_sdk_finish
gchar
**sdk_arch,
gchar
**sdk_branch,
GError
**error);
+gchar *gbp_flatpak_application_addin_get_deploy_dir (GbpFlatpakApplicationAddin
*self,
+ const gchar
*id,
+ const gchar
*arch,
+ const gchar
*branch);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]