summaryrefslogtreecommitdiff
path: root/cli/js/mkdir.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/js/mkdir.ts')
-rw-r--r--cli/js/mkdir.ts47
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));
}