diff options
Diffstat (limited to 'cli/js/mkdir.ts')
-rw-r--r-- | cli/js/mkdir.ts | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/cli/js/mkdir.ts b/cli/js/mkdir.ts index c97778ffb..836b785cf 100644 --- a/cli/js/mkdir.ts +++ b/cli/js/mkdir.ts @@ -2,6 +2,35 @@ import { sendSync, sendAsync } from "./dispatch_json.ts"; import * as dispatch from "./dispatch.ts"; +// TODO(ry) The complexity in argument parsing is to support deprecated forms of +// mkdir and mkdirSync. +function mkdirArgs( + path: string, + optionsOrRecursive?: MkdirOption | boolean, + mode?: number +): { path: string; recursive: boolean; mode: number } { + const args = { path, recursive: false, mode: 0o777 }; + if (typeof optionsOrRecursive == "boolean") { + args.recursive = optionsOrRecursive; + if (mode) { + args.mode = mode; + } + } else if (optionsOrRecursive) { + if (typeof optionsOrRecursive.recursive == "boolean") { + args.recursive = optionsOrRecursive.recursive; + } + if (optionsOrRecursive.mode) { + args.mode = optionsOrRecursive.mode; + } + } + return args; +} + +export interface MkdirOption { + recursive?: boolean; + mode?: number; +} + /** Creates a new directory with the specified path synchronously. * If `recursive` is set to true, nested directories will be created (also known * as "mkdir -p"). @@ -9,10 +38,14 @@ import * as dispatch from "./dispatch.ts"; * Windows. * * Deno.mkdirSync("new_dir"); - * Deno.mkdirSync("nested/directories", true); + * Deno.mkdirSync("nested/directories", { recursive: true }); */ -export function mkdirSync(path: string, recursive = false, mode = 0o777): void { - sendSync(dispatch.OP_MKDIR, { path, recursive, mode }); +export function mkdirSync( + path: string, + optionsOrRecursive?: MkdirOption | boolean, + mode?: number +): void { + sendSync(dispatch.OP_MKDIR, mkdirArgs(path, optionsOrRecursive, mode)); } /** Creates a new directory with the specified path. @@ -22,12 +55,12 @@ export function mkdirSync(path: string, recursive = false, mode = 0o777): void { * Windows. * * await Deno.mkdir("new_dir"); - * await Deno.mkdir("nested/directories", true); + * await Deno.mkdir("nested/directories", { recursive: true }); */ export async function mkdir( path: string, - recursive = false, - mode = 0o777 + optionsOrRecursive?: MkdirOption | boolean, + mode?: number ): Promise<void> { - await sendAsync(dispatch.OP_MKDIR, { path, recursive, mode }); + await sendAsync(dispatch.OP_MKDIR, mkdirArgs(path, optionsOrRecursive, mode)); } |