summaryrefslogtreecommitdiff
path: root/runtime/rt/30_os.js
diff options
context:
space:
mode:
authorBartek IwaƄczuk <biwanczuk@gmail.com>2020-12-13 19:45:53 +0100
committerGitHub <noreply@github.com>2020-12-13 19:45:53 +0100
commit2e74f164b6dcf0ecbf8dd38fba9fae550d784bd0 (patch)
tree61abe8e09d5331ace5d9de529f0e2737a8e05dbb /runtime/rt/30_os.js
parent84ef9bd21fb48fb6b5fbc8dafc3de9f361bade3b (diff)
refactor: deno_runtime crate (#8640)
This commit moves Deno JS runtime, ops, permissions and inspector implementation to new "deno_runtime" crate located in "runtime/" directory. Details in "runtime/README.md". Co-authored-by: Ryan Dahl <ry@tinyclouds.org>
Diffstat (limited to 'runtime/rt/30_os.js')
-rw-r--r--runtime/rt/30_os.js66
1 files changed, 66 insertions, 0 deletions
diff --git a/runtime/rt/30_os.js b/runtime/rt/30_os.js
new file mode 100644
index 000000000..ebc4e8916
--- /dev/null
+++ b/runtime/rt/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);