ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=1056320432b4982cbfa6d7caf06c48d1156db586

commit 1056320432b4982cbfa6d7caf06c48d1156db586
Author: Andy Williams <[email protected]>
Date:   Mon Feb 2 23:01:23 2015 +0000

    Wait until the filtering is done to put everything in git
---
 src/lib/edi_create.c | 53 +++++++++++++++++++++++++++++++++++-----------------
 src/lib/edi_create.h |  2 ++
 2 files changed, 38 insertions(+), 17 deletions(-)

diff --git a/src/lib/edi_create.c b/src/lib/edi_create.c
index d404b6c..3ba1be4 100644
--- a/src/lib/edi_create.c
+++ b/src/lib/edi_create.c
@@ -65,6 +65,7 @@ _edi_create_filter_file(Edi_Create *create, const char *path)
    const char *template;
    int length;
 
+   create->filters++;
 // TODO speed this up - pre-cache this filter!
    template = "sed -i 
\"s|\\${edi_name}|%s|g;s|\\${Edi_Name}|%s|g;s|\\${EDI_NAME}|%s|g;s|\\${Edi_User}|%s|ig;s|\\${Edi_Email}|%s|g;s|\\${Edi_Url}|$%s|g;s|\\${Edi_Year}|%d|g\"
 %s";
    length = strlen(template) + (strlen(create->name) * 3)  + 
strlen(create->user) + strlen(create->email) + strlen(create->url) + 
strlen(path) + 4 - 16 + 1;
@@ -86,7 +87,8 @@ _edi_create_filter_file(Edi_Create *create, const char *path)
    free((void *) path);
 }
 
-static void _edi_create_free_data()
+static void
+_edi_create_free_data()
 {
    Edi_Create *create;
 
@@ -102,6 +104,12 @@ static void _edi_create_free_data()
    free(create);
 }
 
+static void
+_edi_create_done_cb(void *data EINA_UNUSED, Eio_File *file EINA_UNUSED)
+{
+   // we're using the filter processes to determine when we're done
+}
+
 static Eina_Bool
 _edi_create_project_done(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
 {
@@ -116,6 +124,28 @@ _edi_create_project_done(void *data, int type EINA_UNUSED, 
void *event EINA_UNUS
    return ECORE_CALLBACK_DONE; // or ECORE_CALLBACK_PASS_ON
 }
 
+static Eina_Bool
+_edi_create_filter_file_done(void *data, int type EINA_UNUSED, void *event 
EINA_UNUSED)
+{
+   Edi_Create *create;
+   Ecore_Event_Handler *handler;
+
+   create = (Edi_Create *)data;
+
+   if (--create->filters > 0)
+     return ECORE_CALLBACK_PASS_ON;
+
+   ecore_event_handler_del(create->handler);
+
+   handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_edi_create_project_done, data);
+   create->handler = handler;
+
+   chdir(create->path);
+   ecore_exe_run("git init && git add .", data);
+
+   return ECORE_CALLBACK_PASS_ON;
+}
+
 static void
 _edi_create_move_done_cb(void *data, Eio_File *file EINA_UNUSED)
 {
@@ -162,22 +192,6 @@ _edi_create_notify_cb(void *d, Eio_File *handler 
EINA_UNUSED, const Eio_Progress
 }
 
 static void
-_edi_create_done_cb(void *d, Eio_File *file EINA_UNUSED)
-{
-   Edi_Create *data;
-   Ecore_Event_Handler *handler;
-
-   data = (Edi_Create *) d;
-
-   handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_edi_create_project_done, data); 
-   data->handler = handler;
-
-   chdir(data->path);
-   ecore_exe_run("git init && git add .", data);
-}
-
-
-static void
 _edi_create_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, 
int error)
 
 {
@@ -191,6 +205,7 @@ edi_create_efl_project(const char *parentdir, const char 
*name, const char *url,
 {
    char source[PATH_MAX], dest[PATH_MAX];
    Edi_Create *data;
+   Ecore_Event_Handler *handler;
 
    snprintf(source, sizeof(source), "%s/skeleton/eflproject", 
elm_app_data_dir_get());
    snprintf(dest, sizeof(dest), "%s/%s", parentdir, name);
@@ -207,6 +222,10 @@ edi_create_efl_project(const char *parentdir, const char 
*name, const char *url,
    data->callback = func;
    _edi_create_data = data;
 
+   data->filters = 0;
+   handler = ecore_event_handler_add(ECORE_EXE_EVENT_DEL, 
_edi_create_filter_file_done, data);
+   data->handler = handler;
+
    eio_dir_copy(source, dest, NULL, _edi_create_notify_cb, _edi_create_done_cb,
                 _edi_create_error_cb, data);
 }
diff --git a/src/lib/edi_create.h b/src/lib/edi_create.h
index 7800451..2ec2ef4 100644
--- a/src/lib/edi_create.h
+++ b/src/lib/edi_create.h
@@ -21,6 +21,8 @@ typedef struct _Edi_Create
 
    Edi_Create_Cb callback;
    Ecore_Event_Handler *handler;
+
+   int filters;
 } Edi_Create;
 
 /**

-- 


Reply via email to