[gnome-builder] autotools: ignore special user directories when mining projects
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] autotools: ignore special user directories when mining projects
- Date: Tue, 16 Feb 2016 21:04:13 +0000 (UTC)
commit baebc380c8fd0de46b4ecd14fd058406434711c5
Author: Christian Hergert <christian hergert me>
Date: Tue Feb 16 13:04:01 2016 -0800
autotools: ignore special user directories when mining projects
This should help avoid walking too much of the users home directory. We
still want to be smarter about this long term.
plugins/autotools/ide-autotools-project-miner.c | 35 +++++++++++++++++++++++
1 files changed, 35 insertions(+), 0 deletions(-)
---
diff --git a/plugins/autotools/ide-autotools-project-miner.c b/plugins/autotools/ide-autotools-project-miner.c
index 311e3e7..a824baf 100644
--- a/plugins/autotools/ide-autotools-project-miner.c
+++ b/plugins/autotools/ide-autotools-project-miner.c
@@ -33,6 +33,8 @@ struct _IdeAutotoolsProjectMiner
static void project_miner_iface_init (IdeProjectMinerInterface *iface);
+static GPtrArray *ignored_directories;
+
G_DEFINE_TYPE_EXTENDED (IdeAutotoolsProjectMiner, ide_autotools_project_miner, G_TYPE_OBJECT, 0,
G_IMPLEMENT_INTERFACE (IDE_TYPE_PROJECT_MINER, project_miner_iface_init))
@@ -171,6 +173,22 @@ ide_autotools_project_miner_discovered (IdeAutotoolsProjectMiner *self,
IDE_EXIT;
}
+static gboolean
+directory_is_ignored (GFile *directory)
+{
+ g_assert (G_IS_FILE (directory));
+
+ for (guint i = 0; i < ignored_directories->len; i++)
+ {
+ GFile *ignored_directory = g_ptr_array_index (ignored_directories, i);
+
+ if (g_file_equal (directory, ignored_directory))
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
static void
ide_autotools_project_miner_mine_directory (IdeAutotoolsProjectMiner *self,
GFile *directory,
@@ -188,6 +206,9 @@ ide_autotools_project_miner_mine_directory (IdeAutotoolsProjectMiner *self,
if (depth == MAX_MINE_DEPTH)
return;
+ if (directory_is_ignored (directory))
+ return;
+
#ifdef IDE_ENABLE_TRACE
{
g_autofree gchar *uri = NULL;
@@ -382,6 +403,7 @@ static void
ide_autotools_project_miner_class_init (IdeAutotoolsProjectMinerClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
+ g_autoptr(GFile) home = NULL;
object_class->finalize = ide_autotools_project_miner_finalize;
object_class->get_property = ide_autotools_project_miner_get_property;
@@ -395,6 +417,19 @@ ide_autotools_project_miner_class_init (IdeAutotoolsProjectMinerClass *klass)
(G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
g_object_class_install_properties (object_class, LAST_PROP, properties);
+
+ ignored_directories = g_ptr_array_new ();
+ home = g_file_new_for_path (g_get_home_dir ());
+
+ for (guint i = 0; i < G_USER_N_DIRECTORIES; i++)
+ {
+ GFile *dir = g_file_new_for_path (g_get_user_special_dir (i));
+
+ if (g_file_equal (dir, home))
+ g_clear_object (&dir);
+ else
+ g_ptr_array_add (ignored_directories, dir);
+ }
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]