diff options
Diffstat (limited to 'js/dir.ts')
-rw-r--r-- | js/dir.ts | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/js/dir.ts b/js/dir.ts new file mode 100644 index 000000000..4bd3e6bd7 --- /dev/null +++ b/js/dir.ts @@ -0,0 +1,37 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import * as msg from "gen/msg_generated"; +import { assert } from "./util"; +import { flatbuffers } from "flatbuffers"; +import { sendSync } from "./dispatch"; + +/** + * cwd() Return a string representing the current working directory. + * If the current directory can be reached via multiple paths + * (due to symbolic links), cwd() may return + * any one of them. + * throws NotFound exception if directory not available + */ +export function cwd(): string { + const builder = new flatbuffers.Builder(0); + msg.Cwd.startCwd(builder); + const inner = msg.Cwd.endCwd(builder); + const baseRes = sendSync(builder, msg.Any.Cwd, inner); + assert(baseRes != null); + assert(msg.Any.CwdRes === baseRes!.innerType()); + const res = new msg.CwdRes(); + assert(baseRes!.inner(res) != null); + return res.cwd()!; +} + +/** + * chdir() Change the current working directory to path. + * throws NotFound exception if directory not available + */ +export function chdir(directory: string): void { + const builder = new flatbuffers.Builder(); + const directory_ = builder.createString(directory); + msg.Chdir.startChdir(builder); + msg.Chdir.addDirectory(builder, directory_); + const inner = msg.Chdir.endChdir(builder); + sendSync(builder, msg.Any.Chdir, inner); +} |