diff options
author | Ry Dahl <ry@tinyclouds.org> | 2020-01-07 14:14:33 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-07 14:14:33 -0500 |
commit | d4bf0670ce02a7561f224085bef6827132335cd5 (patch) | |
tree | b9b102775fc31e9c867ce4810efc63a9f9518748 /cli/js | |
parent | ad9fd589d4131e847721323a730ba91161f1b95b (diff) |
fix: Deno.mkdir should conform to style guide (#3617)
Diffstat (limited to 'cli/js')
-rw-r--r-- | cli/js/lib.deno_runtime.d.ts | 16 | ||||
-rw-r--r-- | cli/js/mkdir.ts | 47 | ||||
-rw-r--r-- | cli/js/mkdir_test.ts | 6 |
3 files changed, 57 insertions, 12 deletions
diff --git a/cli/js/lib.deno_runtime.d.ts b/cli/js/lib.deno_runtime.d.ts index 85052dd16..619efed55 100644 --- a/cli/js/lib.deno_runtime.d.ts +++ b/cli/js/lib.deno_runtime.d.ts @@ -517,6 +517,11 @@ declare namespace Deno { // @url js/mkdir.d.ts + 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"). @@ -524,13 +529,17 @@ declare namespace Deno { * Windows. * * Deno.mkdirSync("new_dir"); - * Deno.mkdirSync("nested/directories", true); + * Deno.mkdirSync("nested/directories", { recursive: true }); */ + export function mkdirSync(path: string, options?: MkdirOption): void; + + /** Deprecated */ export function mkdirSync( path: string, recursive?: boolean, mode?: number ): void; + /** Creates a new directory with the specified path. * If `recursive` is set to true, nested directories will be created (also known * as "mkdir -p"). @@ -538,8 +547,11 @@ declare namespace Deno { * Windows. * * await Deno.mkdir("new_dir"); - * await Deno.mkdir("nested/directories", true); + * await Deno.mkdir("nested/directories", { recursive: true }); */ + export function mkdir(path: string, options?: MkdirOption): Promise<void>; + + /** Deprecated */ export function mkdir( path: string, recursive?: boolean, 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)); } diff --git a/cli/js/mkdir_test.ts b/cli/js/mkdir_test.ts index c6fa6326c..dad61c1a4 100644 --- a/cli/js/mkdir_test.ts +++ b/cli/js/mkdir_test.ts @@ -10,7 +10,7 @@ testPerm({ read: true, write: true }, function mkdirSyncSuccess(): void { testPerm({ read: true, write: true }, function mkdirSyncMode(): void { const path = Deno.makeTempDirSync() + "/dir"; - Deno.mkdirSync(path, false, 0o755); // no perm for x + Deno.mkdirSync(path, { mode: 0o755 }); // no perm for x const pathInfo = Deno.statSync(path); if (pathInfo.mode !== null) { // Skip windows @@ -51,7 +51,7 @@ testPerm({ write: true }, function mkdirErrIfExists(): void { testPerm({ read: true, write: true }, function mkdirSyncRecursive(): void { const path = Deno.makeTempDirSync() + "/nested/directory"; - Deno.mkdirSync(path, true); + Deno.mkdirSync(path, { recursive: true }); const pathInfo = Deno.statSync(path); assert(pathInfo.isDirectory()); }); @@ -60,7 +60,7 @@ testPerm({ read: true, write: true }, async function mkdirRecursive(): Promise< void > { const path = Deno.makeTempDirSync() + "/nested/directory"; - await Deno.mkdir(path, true); + await Deno.mkdir(path, { recursive: true }); const pathInfo = Deno.statSync(path); assert(pathInfo.isDirectory()); }); |