summaryrefslogtreecommitdiff
path: root/cli/js
diff options
context:
space:
mode:
authorRy Dahl <ry@tinyclouds.org>2020-01-07 14:14:33 -0500
committerGitHub <noreply@github.com>2020-01-07 14:14:33 -0500
commitd4bf0670ce02a7561f224085bef6827132335cd5 (patch)
treeb9b102775fc31e9c867ce4810efc63a9f9518748 /cli/js
parentad9fd589d4131e847721323a730ba91161f1b95b (diff)
fix: Deno.mkdir should conform to style guide (#3617)
Diffstat (limited to 'cli/js')
-rw-r--r--cli/js/lib.deno_runtime.d.ts16
-rw-r--r--cli/js/mkdir.ts47
-rw-r--r--cli/js/mkdir_test.ts6
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());
});