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;
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)
{
@ -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
_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);
}

View File

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