| // Copyright 2019 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| import * as li_internal from 'li_internal'; |
| |
| (function (global) { |
| var readBuffer; |
| var repl; |
| var stdinFd; |
| |
| function InitRepl() { |
| repl = li_internal.createRepl(); |
| stdinFd = std.in.fileno(); |
| |
| global['repl_init'] = { |
| repl, |
| }; |
| |
| // a handler on std.in |
| readBuffer = new Uint8Array(64); |
| os.setReadHandler(stdinFd, readHandler); |
| } |
| |
| function readHandler() { |
| var l = os.read(stdinFd, readBuffer.buffer, 0, readBuffer.length); |
| var exitShell = li_internal.onInput(repl, readBuffer.buffer, l); |
| if (exitShell) { |
| std.out.flush(); |
| os.setReadHandler(stdinFd, null); //remove read handler |
| li_internal.closeRepl(repl); |
| } |
| std.gc();//running it every now and then |
| } |
| |
| InitRepl(); |
| |
| })(globalThis); |