[gnome-builder] context: add helper to get path in project



commit 85003b37f3afc3e163ae4754bb55d435f86d3c26
Author: Christian Hergert <chergert redhat com>
Date:   Tue Jan 23 20:07:43 2018 -0800

    context: add helper to get path in project
    
    This is a helper that will let us reduce how much we have to get the
    workdir from a vcs.

 src/libide/ide-context.c | 46 ++++++++++++++++++++++++++++++++++++++++++++++
 src/libide/ide-context.h |  4 ++++
 2 files changed, 50 insertions(+)
---
diff --git a/src/libide/ide-context.c b/src/libide/ide-context.c
index 58838c458..ba780aaa8 100644
--- a/src/libide/ide-context.c
+++ b/src/libide/ide-context.c
@@ -2737,3 +2737,49 @@ ide_context_get_monitor (IdeContext *self)
 
   return self->monitor;
 }
+
+/**
+ * ide_context_build_filename:
+ * @self: a #IdeContext
+ * @first_part: first path part
+ *
+ * Creates a new path that starts from the working directory of the
+ * loaded project.
+ *
+ * Returns: (transfer full): a string containing the new path
+ *
+ * Since: 3.28
+ */
+gchar *
+ide_context_build_filename (IdeContext  *self,
+                            const gchar *first_part,
+                            ...)
+{
+  g_autoptr(GPtrArray) ar = NULL;
+  g_autofree gchar *base = NULL;
+  const gchar *part = first_part;
+  GFile *workdir;
+  va_list args;
+
+  g_return_val_if_fail (IDE_IS_CONTEXT (self), NULL);
+  g_return_val_if_fail (first_part != NULL, NULL);
+
+  workdir = ide_vcs_get_working_directory (self->vcs);
+  base = g_file_get_path (workdir);
+
+  ar = g_ptr_array_new ();
+  g_ptr_array_add (ar, base);
+
+  va_start (args, first_part);
+  do
+    {
+      g_ptr_array_add (ar, (gchar *)part);
+      part = va_arg (args, const gchar *);
+    }
+  while (part != NULL);
+  va_end (args);
+
+  g_ptr_array_add (ar, NULL);
+
+  return g_build_filenamev ((gchar **)ar->pdata);
+}
diff --git a/src/libide/ide-context.h b/src/libide/ide-context.h
index 9386a361c..ad0d318df 100644
--- a/src/libide/ide-context.h
+++ b/src/libide/ide-context.h
@@ -128,6 +128,10 @@ void                      ide_context_emit_log                  (IdeContext
                                                                  const gchar          *message,
                                                                  gssize                message_len);
 IDE_AVAILABLE_IN_3_28
+gchar                    *ide_context_build_filename            (IdeContext           *self,
+                                                                 const gchar          *first_part,
+                                                                 ...) G_GNUC_NULL_TERMINATED;
+IDE_AVAILABLE_IN_3_28
 GFile                    *ide_context_cache_file                (IdeContext           *self,
                                                                  const gchar          *first_part,
                                                                  ...) G_GNUC_NULL_TERMINATED;


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