summaryrefslogtreecommitdiff
path: root/runtime/js/30_os.js
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/js/30_os.js')
-rw-r--r--runtime/js/30_os.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/runtime/js/30_os.js b/runtime/js/30_os.js
new file mode 100644
index 000000000..ebc4e8916
--- /dev/null
+++ b/runtime/js/30_os.js
@@ -0,0 +1,66 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+
+((window) => {
+ const core = window.Deno.core;
+
+ function loadavg() {
+ return core.jsonOpSync("op_loadavg");
+ }
+
+ function hostname() {
+ return core.jsonOpSync("op_hostname");
+ }
+
+ function osRelease() {
+ return core.jsonOpSync("op_os_release");
+ }
+
+ function systemMemoryInfo() {
+ return core.jsonOpSync("op_system_memory_info");
+ }
+
+ function systemCpuInfo() {
+ return core.jsonOpSync("op_system_cpu_info");
+ }
+
+ function exit(code = 0) {
+ core.jsonOpSync("op_exit", { code });
+ throw new Error("Code not reachable");
+ }
+
+ function setEnv(key, value) {
+ core.jsonOpSync("op_set_env", { key, value });
+ }
+
+ function getEnv(key) {
+ return core.jsonOpSync("op_get_env", { key })[0];
+ }
+
+ function deleteEnv(key) {
+ core.jsonOpSync("op_delete_env", { key });
+ }
+
+ const env = {
+ get: getEnv,
+ toObject() {
+ return core.jsonOpSync("op_env");
+ },
+ set: setEnv,
+ delete: deleteEnv,
+ };
+
+ function execPath() {
+ return core.jsonOpSync("op_exec_path");
+ }
+
+ window.__bootstrap.os = {
+ env,
+ execPath,
+ exit,
+ osRelease,
+ systemMemoryInfo,
+ systemCpuInfo,
+ hostname,
+ loadavg,
+ };
+})(this);