ajwillia-ms pushed a commit to branch master. http://git.enlightenment.org/tools/edi.git/commit/?id=25d5c6b7e678d56b2904240a656b99f3a72f38b2
commit 25d5c6b7e678d56b2904240a656b99f3a72f38b2 Author: Andy Williams <[email protected]> Date: Fri Feb 10 00:13:55 2017 +0000 cmdline: Add a little user feedback --- src/bin/edi_build_main.c | 55 +++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 10 deletions(-) diff --git a/src/bin/edi_build_main.c b/src/bin/edi_build_main.c index 283730f..8fade98 100644 --- a/src/bin/edi_build_main.c +++ b/src/bin/edi_build_main.c @@ -18,6 +18,7 @@ #include "edi_private.h" #define COPYRIGHT "Copyright © 2014 Andy Williams <[email protected]> and various contributors (see AUTHORS)." +#define EXIT_NOACTION -2 static int _exit_code; @@ -75,6 +76,38 @@ _edi_build_create_done_cb(const char *path, Eina_Bool success) } static void +_edi_build_print_start(Edi_Build_Provider *provider, const char *action) +{ + printf("Building \"%s\" target [%s] using [%s].\n", edi_project_name_get(), action, provider->id); +} + +static void +_edi_build_print_noop(Edi_Build_Provider *provider, const char *action) +{ + printf("Target [%s] not supported for builder [%s].\n", action, provider->id); +} + +static int +_edi_build_action_try(Edi_Build_Provider *provider, void (*action)(void), const char *name, const char *request) +{ + if (strncmp(name, request, strlen(name))) + return EXIT_NOACTION; + + if (action) + { + _edi_build_print_start(provider, name); + action(); + } + else + { + _edi_build_print_noop(provider, name); + return EXIT_FAILURE; + } + + return EXIT_SUCCESS; +} + +static void _edi_build_create_start(int argc, int arg0, char **argv) { elm_init(argc, argv); @@ -85,9 +118,10 @@ _edi_build_create_start(int argc, int arg0, char **argv) EAPI_MAIN int main(int argc, char **argv) { - int args; + int args, ret; char path[PATH_MAX], *build_type = NULL; Eina_Bool quit_option = EINA_FALSE; + Edi_Build_Provider *provider; Ecore_Getopt_Value values[] = { ECORE_GETOPT_VALUE_BOOL(quit_option), @@ -150,21 +184,22 @@ main(int argc, char **argv) goto end; } + provider = edi_build_provider_for_project_get(); + ecore_event_handler_add(ECORE_EXE_EVENT_DATA, _exe_data, NULL); ecore_event_handler_add(ECORE_EXE_EVENT_ERROR, _exe_data, NULL); - ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _exe_del, NULL); - - if (!strncmp("clean", build_type, 5)) - edi_builder_clean(); - else if (!strncmp("test", build_type, 4)) - edi_builder_test(); - else if (!strncmp("build", build_type, 5)) - edi_builder_build(); - else + ecore_event_handler_add(ECORE_EXE_EVENT_DEL, _exe_del, NULL); + + if ( + ((ret = _edi_build_action_try(provider, provider->clean, "clean", build_type)) == EXIT_NOACTION) && + ((ret = _edi_build_action_try(provider, provider->test, "test", build_type)) == EXIT_NOACTION) && + ((ret = _edi_build_action_try(provider, provider->build, "build", build_type)) == EXIT_NOACTION)) { fprintf(stderr, "Unrecognised build type - try build, clean, create or test.\n"); goto end; } + if (ret != EXIT_SUCCESS) + return ret; ecore_main_loop_begin(); end: --
