MIRROR: javascript for ๐Ÿœ's, a tiny runtime with big ambitions
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

improve code flow for server module start

+27 -19
+1 -1
include/modules/server.h
··· 5 5 #include "types.h" 6 6 7 7 ant_value_t server_start_from_export(ant_t *js, ant_value_t default_export); 8 - bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config); 8 + int server_maybe_start_from_export(ant_t *js, ant_value_t default_export); 9 9 10 10 #endif
+1 -16
src/main.c
··· 311 311 } 312 312 313 313 static int execute_module(ant_t *js, const char *filename) { 314 - bool looks_like_server = false; 315 - 316 314 char *use_path_owned = NULL; 317 315 const char *use_path = filename; 318 316 319 317 ant_value_t ns = 0; 320 318 ant_value_t specifier = 0; 321 319 ant_value_t default_export = 0; 322 - ant_value_t server_result = 0; 323 320 324 321 if (esm_is_url(filename)) { 325 322 js_set(js, js_glob(js), "__dirname", js_mkundef()); ··· 353 350 } 354 351 355 352 default_export = js_get(js, ns, "default"); 356 - 357 - if (server_export_has_fetch_handler(js, default_export, &looks_like_server)) { 358 - server_result = server_start_from_export(js, default_export); 359 - if (is_err(server_result)) { 360 - fprintf(stderr, "%s\n", js_str(js, server_result)); 361 - return EXIT_FAILURE; 362 - } 363 - } else if (looks_like_server) { 364 - fprintf(stderr, "Module does not export a fetch handler\n"); 365 - return EXIT_FAILURE; 366 - } 367 - 368 - return EXIT_SUCCESS; 353 + return server_maybe_start_from_export(js, default_export); 369 354 } 370 355 371 356 int main(int argc, char *argv[]) {
+25 -2
src/modules/server.c
··· 742 742 } 743 743 744 744 static void server_on_listener_close(ant_listener_t *listener, void *user_data) { 745 - (void)listener; 746 745 server_maybe_finish_stop((server_runtime_t *)user_data); 747 746 } 748 747 749 - bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config) { 748 + static bool server_export_has_fetch_handler(ant_t *js, ant_value_t default_export, bool *looks_like_config) { 750 749 ant_value_t fetch = 0; 751 750 752 751 if (looks_like_config) *looks_like_config = false; ··· 772 771 } 773 772 774 773 return false; 774 + } 775 + 776 + int server_maybe_start_from_export(ant_t *js, ant_value_t default_export) { 777 + bool looks_like_server = false; 778 + ant_value_t server_result = 0; 779 + const char *error = NULL; 780 + 781 + if (!server_export_has_fetch_handler(js, default_export, &looks_like_server)) { 782 + if (!looks_like_server) return EXIT_SUCCESS; 783 + error = "Module does not export a fetch handler"; 784 + goto fail; 785 + } 786 + 787 + server_result = server_start_from_export(js, default_export); 788 + if (is_err(server_result)) { 789 + error = js_str(js, server_result); 790 + goto fail; 791 + } 792 + 793 + return EXIT_SUCCESS; 794 + 795 + fail: 796 + fprintf(stderr, "%s\n", error); 797 + return EXIT_FAILURE; 775 798 } 776 799 777 800 ant_value_t server_start_from_export(ant_t *js, ant_value_t default_export) {