netstar pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=9be1db48587ba4514a761c651645209cbfd2c830

commit 9be1db48587ba4514a761c651645209cbfd2c830
Author: Al Poole <nets...@gmail.com>
Date:   Wed Sep 6 13:08:02 2017 +0100

    build: Add status detection of all build types.
    
    This adds tracking of other build types and their exit status and
    allows us to use desktop notification for these also. Also cleaned
    up some unnecessary cleanup code.
---
 src/bin/edi_main.c                  | 28 ++++++++++++++++++++++++----
 src/bin/screens/edi_screens.c       |  2 +-
 src/lib/edi_build_provider_cargo.c  |  4 ++--
 src/lib/edi_build_provider_cmake.c  | 10 ++++------
 src/lib/edi_build_provider_make.c   | 10 ++++------
 src/lib/edi_build_provider_meson.c  |  1 +
 src/lib/edi_build_provider_python.c |  4 ++--
 src/lib/edi_exe.c                   |  8 +++-----
 8 files changed, 41 insertions(+), 26 deletions(-)

diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c
index 97009eb..7e9e3f6 100644
--- a/src/bin/edi_main.c
+++ b/src/bin/edi_main.c
@@ -712,7 +712,7 @@ _edi_build_display_status_cb(int status)
    else
      eina_strbuf_append_printf(message, "Build of project <b>%s</b> in %s was 
successful.", edi_project_name_get(), edi_project_get());
 
-   edi_screens_desktop_notify("EDI Project Build Status", 
eina_strbuf_string_get(message));
+   edi_screens_desktop_notify("EDI :: Build Status", 
eina_strbuf_string_get(message));
 
    eina_strbuf_free(message);
 }
@@ -728,6 +728,26 @@ _edi_build_project(void)
 }
 
 static void
+_edi_build_clean_project(void)
+{
+   if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb))
+     {
+        edi_consolepanel_show();
+        edi_builder_clean();
+     }
+}
+
+static void
+_edi_build_test_project(void)
+{
+   if (edi_exe_notify_handle("edi_build", _edi_build_display_status_cb))
+     {
+        edi_consolepanel_show();
+        edi_builder_test();
+     }
+}
+
+static void
 _tb_build_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
    if (_edi_build_prep(obj))
@@ -738,7 +758,7 @@ static void
 _tb_test_cb(void *data EINA_UNUSED, Evas_Object *obj, void *event_info 
EINA_UNUSED)
 {
    if (_edi_build_prep(obj))
-     edi_builder_test();
+     _edi_build_test_project();
 }
 
 static void
@@ -937,7 +957,7 @@ static void
 _edi_menu_test_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
                   void *event_info EINA_UNUSED)
 {
-   edi_builder_test();
+   _edi_build_test_project();
 }
 
 static void
@@ -951,7 +971,7 @@ static void
 _edi_menu_clean_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
                    void *event_info EINA_UNUSED)
 {
-   edi_builder_clean();
+   _edi_build_clean_project();
 }
 
 static void
diff --git a/src/bin/screens/edi_screens.c b/src/bin/screens/edi_screens.c
index 7e625f4..b86ebfa 100644
--- a/src/bin/screens/edi_screens.c
+++ b/src/bin/screens/edi_screens.c
@@ -129,7 +129,7 @@ void edi_screens_desktop_notify(const char *title, const 
char *message)
 
    command = eina_strbuf_new();
 
-   eina_strbuf_append_printf(command, "notify-send -t 10000 -i edi '%s' '%s'", 
title, message);
+   eina_strbuf_append_printf(command, "notify-send -t 7000 -i edi '%s' '%s'", 
title, message);
 
    ecore_exe_run(eina_strbuf_string_get(command), NULL);
 
diff --git a/src/lib/edi_build_provider_cargo.c 
b/src/lib/edi_build_provider_cargo.c
index 3394510..c78b8e0 100644
--- a/src/lib/edi_build_provider_cargo.c
+++ b/src/lib/edi_build_provider_cargo.c
@@ -67,7 +67,7 @@ static void
 _cargo_test(void)
 {
    if (chdir(edi_project_get()) == 0)
-     _exec_cmd("cargo test");
+     edi_exe_notify("edi_build", "cargo test");
 }
 
 static void
@@ -81,7 +81,7 @@ static void
 _cargo_clean(void)
 {
    if (chdir(edi_project_get()) == 0)
-     _exec_cmd("cargo clean");
+     edi_exe_notify("edi_build", "cargo clean");
 }
 
 Edi_Build_Provider _edi_build_provider_cargo =
diff --git a/src/lib/edi_build_provider_cmake.c 
b/src/lib/edi_build_provider_cmake.c
index 31001f5..78ddfb6 100644
--- a/src/lib/edi_build_provider_cmake.c
+++ b/src/lib/edi_build_provider_cmake.c
@@ -60,9 +60,8 @@ _cmake_test(void)
 {
    if (chdir(edi_project_get()) != 0)
      ERR("Could not chdir");
-   ecore_exe_pipe_run("env CK_VERBOSITY=verbose make check", 
ECORE_EXE_PIPE_READ_LINE_BUFFERED | ECORE_EXE_PIPE_READ |
-                              ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |
-                              ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
+
+   edi_exe_notify("edi_build", "env CK_VERBOSITY=verbose make check");
 }
 
 static void
@@ -100,9 +99,8 @@ _cmake_clean(void)
 {
    if (chdir(edi_project_get()) != 0)
      ERR("Could not chdir");
-   ecore_exe_pipe_run("make clean", ECORE_EXE_PIPE_READ_LINE_BUFFERED | 
ECORE_EXE_PIPE_READ |
-                              ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |
-                              ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
+
+   edi_exe_notify("edi_build", "make clean");
 }
 
 Edi_Build_Provider _edi_build_provider_cmake =
diff --git a/src/lib/edi_build_provider_make.c 
b/src/lib/edi_build_provider_make.c
index 588a503..de65d4b 100644
--- a/src/lib/edi_build_provider_make.c
+++ b/src/lib/edi_build_provider_make.c
@@ -127,9 +127,8 @@ _make_test(void)
    if (chdir(edi_project_get()) != 0)
      ERR("Could not chdir");
    chdir(edi_project_get());
-   ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ_LINE_BUFFERED | 
ECORE_EXE_PIPE_READ |
-                              ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |
-                              ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
+
+   edi_exe_notify("edi_build", cmd);
 }
 
 static void
@@ -171,9 +170,8 @@ _make_clean(void)
 
    if (chdir(edi_project_get()) !=0)
      ERR("Could not chdir");
-   ecore_exe_pipe_run(cmd, ECORE_EXE_PIPE_READ_LINE_BUFFERED | 
ECORE_EXE_PIPE_READ |
-                              ECORE_EXE_PIPE_ERROR_LINE_BUFFERED | 
ECORE_EXE_PIPE_ERROR |
-                              ECORE_EXE_PIPE_WRITE | ECORE_EXE_USE_SH, NULL);
+
+   edi_exe_notify("edi_build", cmd);
 }
 
 Edi_Build_Provider _edi_build_provider_make =
diff --git a/src/lib/edi_build_provider_meson.c 
b/src/lib/edi_build_provider_meson.c
index 9b0ddc1..6679faf 100644
--- a/src/lib/edi_build_provider_meson.c
+++ b/src/lib/edi_build_provider_meson.c
@@ -137,6 +137,7 @@ _meson_build(void)
 static void
 _meson_test(void)
 {
+   edi_exe_notify("edi_build", "exit 1");
    ERR("Edi doesn't support test with Meson/Ninja!");
 }
 
diff --git a/src/lib/edi_build_provider_python.c 
b/src/lib/edi_build_provider_python.c
index 4dcb751..ff57b7c 100644
--- a/src/lib/edi_build_provider_python.c
+++ b/src/lib/edi_build_provider_python.c
@@ -67,7 +67,7 @@ static void
 _python_test(void)
 {
    if (chdir(edi_project_get()) == 0)
-     _exec_cmd("./setup.py test");
+     edi_exe_notify("edi_build", "./setup.py test");
 }
 
 static void
@@ -81,7 +81,7 @@ static void
 _python_clean(void)
 {
    if (chdir(edi_project_get()) == 0)
-     _exec_cmd("./setup.py clean --all");
+     edi_exe_notify("edi_build", "./setup.py clean --all");
 }
 
 Edi_Build_Provider _edi_build_provider_python =
diff --git a/src/lib/edi_exe.c b/src/lib/edi_exe.c
index a48591e..c16cedb 100644
--- a/src/lib/edi_exe.c
+++ b/src/lib/edi_exe.c
@@ -18,21 +18,16 @@ _edi_exe_notify_data_cb(void *data, int type EINA_UNUSED, 
void *event EINA_UNUSE
 {
    int *status;
    void *(*func)(int value);
-   Ecore_Con_Server *srv;
    Ecore_Con_Event_Client_Data *ev = event;
 
    status = ev->data;
    func = data;
-   srv = ecore_con_client_server_get(ev->client);
 
    func(*status);
 
    ecore_event_handler_del(_edi_exe_notify_handler);
    _edi_exe_notify_handler = NULL;
 
-   ecore_con_client_del(ev->client);
-   ecore_con_server_del(srv);
-
    return EINA_FALSE;
 }
 
@@ -41,6 +36,7 @@ edi_exe_notify_handle(const char *name, void ((*func)(int)))
 {
    if (_edi_exe_notify_handler) return EINA_FALSE;
 
+  /* These are UNIX domain sockets, no need to clean up */
    ecore_con_server_add(ECORE_CON_LOCAL_USER, name, 0, NULL);
 
    _edi_exe_notify_handler = 
ecore_event_handler_add(ECORE_CON_EVENT_CLIENT_DATA, (Ecore_Event_Handler_Cb) 
_edi_exe_notify_data_cb, func);
@@ -59,9 +55,11 @@ _edi_exe_event_done_cb(void *data EINA_UNUSED, int type 
EINA_UNUSED, void *event
 
   if (!ev->exe) return ECORE_CALLBACK_RENEW;
 
+  /* These are UNIX domain sockets, no need to clean up */
   srv = ecore_con_server_connect(ECORE_CON_LOCAL_USER, name, 0, NULL);
 
   ecore_con_server_send(srv, &ev->exit_code, sizeof(int *));
+  ecore_con_server_flush(srv);
 
   ecore_event_handler_del(_edi_exe_handler);
   _edi_exe_handler = NULL;

-- 


Reply via email to