Wait until the filtering is done to put everything in git

This commit is contained in:
Andy Williams 2015-02-02 23:01:23 +00:00
parent 4edcc6ba16
commit 1056320432
2 changed files with 38 additions and 17 deletions

View File

@ -65,6 +65,7 @@ _edi_create_filter_file(Edi_Create *create, const char *path)
const char *template; const char *template;
int length; int length;
create->filters++;
// TODO speed this up - pre-cache this filter! // 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"; 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; 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); free((void *) path);
} }
static void _edi_create_free_data() static void
_edi_create_free_data()
{ {
Edi_Create *create; Edi_Create *create;
@ -102,6 +104,12 @@ static void _edi_create_free_data()
free(create); 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 static Eina_Bool
_edi_create_project_done(void *data, int type EINA_UNUSED, void *event EINA_UNUSED) _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 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 static void
_edi_create_move_done_cb(void *data, Eio_File *file EINA_UNUSED) _edi_create_move_done_cb(void *data, Eio_File *file EINA_UNUSED)
{ {
@ -161,22 +191,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 static void
_edi_create_error_cb(void *data EINA_UNUSED, Eio_File *handler EINA_UNUSED, int error) _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]; char source[PATH_MAX], dest[PATH_MAX];
Edi_Create *data; Edi_Create *data;
Ecore_Event_Handler *handler;
snprintf(source, sizeof(source), "%s/skeleton/eflproject", elm_app_data_dir_get()); snprintf(source, sizeof(source), "%s/skeleton/eflproject", elm_app_data_dir_get());
snprintf(dest, sizeof(dest), "%s/%s", parentdir, name); 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; data->callback = func;
_edi_create_data = data; _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, eio_dir_copy(source, dest, NULL, _edi_create_notify_cb, _edi_create_done_cb,
_edi_create_error_cb, data); _edi_create_error_cb, data);
} }

View File

@ -21,6 +21,8 @@ typedef struct _Edi_Create
Edi_Create_Cb callback; Edi_Create_Cb callback;
Ecore_Event_Handler *handler; Ecore_Event_Handler *handler;
int filters;
} Edi_Create; } Edi_Create;
/** /**