diff options
author | Kevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com> | 2018-09-10 20:40:03 -0700 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2018-09-12 10:24:17 -0400 |
commit | 1ffae651655746b95dd40207d91ba7c360b90c40 (patch) | |
tree | 4e37fafa7f712fc25b59f67de1faeb9b7190dafa /js/remove.ts | |
parent | 7c50c11f40556240a3693662e2cbae6da3090b89 (diff) |
Add remove(), removeAll().
and removeSync(), removeAllSync().
Diffstat (limited to 'js/remove.ts')
-rw-r--r-- | js/remove.ts | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/js/remove.ts b/js/remove.ts new file mode 100644 index 000000000..921110789 --- /dev/null +++ b/js/remove.ts @@ -0,0 +1,63 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +import * as fbs from "gen/msg_generated"; +import { flatbuffers } from "flatbuffers"; +import * as dispatch from "./dispatch"; + +/** + * Removes the named file or (empty) directory synchronously. + * Would throw error if permission denied, not found, or + * directory not empty. + * + * import { removeSync } from "deno"; + * removeSync("/path/to/empty_dir/or/file"); + */ +export function removeSync(path: string): void { + dispatch.sendSync(...req(path, false)); +} + +/** + * Removes the named file or (empty) directory. + * Would throw error if permission denied, not found, or + * directory not empty. + * + * import { remove } from "deno"; + * await remove("/path/to/empty_dir/or/file"); + */ +export async function remove(path: string): Promise<void> { + await dispatch.sendAsync(...req(path, false)); +} + +/** + * Recursively removes the named file or directory synchronously. + * Would throw error if permission denied or not found + * + * import { removeAllSync } from "deno"; + * removeAllSync("/path/to/dir/or/file"); + */ +export function removeAllSync(path: string): void { + dispatch.sendSync(...req(path, true)); +} + +/** + * Recursively removes the named file or directory. + * Would throw error if permission denied or not found + * + * import { removeAll } from "deno"; + * await removeAll("/path/to/dir/or/file"); + */ +export async function removeAll(path: string): Promise<void> { + await dispatch.sendAsync(...req(path, true)); +} + +function req( + path: string, + recursive: boolean +): [flatbuffers.Builder, fbs.Any, flatbuffers.Offset] { + const builder = new flatbuffers.Builder(); + const path_ = builder.createString(path); + fbs.Remove.startRemove(builder); + fbs.Remove.addPath(builder, path_); + fbs.Remove.addRecursive(builder, recursive); + const msg = fbs.Remove.endRemove(builder); + return [builder, fbs.Any.Remove, msg]; +} |