int Start(char* src) { if (!InitJerry()) { DLOG("InitJerry failed"); return 1; } JObject* process = InitModules(); SetProcessIotjs(process); // FIXME: this should be moved to seperate function { JObject argv; argv.SetProperty("1", JObject(src)); process->SetProperty("argv", argv); } if (!StartIoTjs(process)) { DLOG("StartIoTJs failed"); return 1; } CleanupModules(); ReleaseJerry(); return 0; }
jerry_value_t InitProcess() { jerry_value_t process = jerry_create_object(); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_COMPILE, Compile); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_COMPILEMODULE, CompileModule); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_READSOURCE, ReadSource); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_CWD, Cwd); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_CHDIR, Chdir); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_DEBUGGERGETSOURCE, DebuggerGetSource); iotjs_jval_set_method(process, IOTJS_MAGIC_STRING_DOEXIT, DoExit); SetProcessEnv(process); // process.builtin_modules jerry_value_t builtin_modules = jerry_create_object(); SetBuiltinModules(builtin_modules); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_BUILTIN_MODULES, builtin_modules); jerry_release_value(builtin_modules); // process.platform iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_PLATFORM, TARGET_OS); // process.arch iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_ARCH, TARGET_ARCH); // process.version iotjs_jval_set_property_string_raw(process, IOTJS_MAGIC_STRING_VERSION, IOTJS_VERSION); // Set iotjs SetProcessIotjs(process); bool wait_source; if (iotjs_environment_config(iotjs_environment_get())->debugger != NULL) { wait_source = iotjs_environment_config(iotjs_environment_get()) ->debugger->wait_source; } else { wait_source = false; } if (!wait_source) { SetProcessArgv(process); } jerry_value_t wait_source_val = jerry_create_boolean(wait_source); iotjs_jval_set_property_jval(process, IOTJS_MAGIC_STRING_DEBUGGERWAITSOURCE, wait_source_val); jerry_release_value(wait_source_val); return process; }