summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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
-rw-r--r--std/fs/empty_dir.ts4
-rw-r--r--std/fs/ensure_dir.ts4
-rw-r--r--std/fs/ensure_dir_test.ts4
-rw-r--r--std/fs/ensure_file_test.ts8
-rw-r--r--std/fs/ensure_link_test.ts8
-rw-r--r--std/fs/ensure_symlink_test.ts8
-rw-r--r--std/fs/move_test.ts17
-rw-r--r--std/fs/walk_test.ts2
-rw-r--r--std/io/util.ts2
12 files changed, 87 insertions, 39 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());
});
diff --git a/std/fs/empty_dir.ts b/std/fs/empty_dir.ts
index a838de3b8..e3d08ef70 100644
--- a/std/fs/empty_dir.ts
+++ b/std/fs/empty_dir.ts
@@ -33,7 +33,7 @@ export async function emptyDir(dir: string): Promise<void> {
}
// if not exist. then create it
- await mkdir(dir, true);
+ await mkdir(dir, { recursive: true });
}
}
@@ -61,7 +61,7 @@ export function emptyDirSync(dir: string): void {
throw err;
}
// if not exist. then create it
- mkdirSync(dir, true);
+ mkdirSync(dir, { recursive: true });
return;
}
}
diff --git a/std/fs/ensure_dir.ts b/std/fs/ensure_dir.ts
index 92db873b3..d4b30dd2d 100644
--- a/std/fs/ensure_dir.ts
+++ b/std/fs/ensure_dir.ts
@@ -18,7 +18,7 @@ export async function ensureDir(dir: string): Promise<void> {
} catch (err) {
if (err instanceof Deno.DenoError && err.kind === ErrorKind.NotFound) {
// if dir not exists. then create it.
- await mkdir(dir, true);
+ await mkdir(dir, { recursive: true });
return;
}
throw err;
@@ -41,7 +41,7 @@ export function ensureDirSync(dir: string): void {
} catch (err) {
if (err instanceof Deno.DenoError && err.kind == ErrorKind.NotFound) {
// if dir not exists. then create it.
- mkdirSync(dir, true);
+ mkdirSync(dir, { recursive: true });
return;
}
throw err;
diff --git a/std/fs/ensure_dir_test.ts b/std/fs/ensure_dir_test.ts
index 998b74e2d..231196ae9 100644
--- a/std/fs/ensure_dir_test.ts
+++ b/std/fs/ensure_dir_test.ts
@@ -40,7 +40,7 @@ test(async function ensureDirIfItExist(): Promise<void> {
const testDir = path.join(baseDir, "test");
// create test directory
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await ensureDir(testDir);
@@ -60,7 +60,7 @@ test(function ensureDirSyncIfItExist(): void {
const testDir = path.join(baseDir, "test");
// create test directory
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
ensureDirSync(testDir);
diff --git a/std/fs/ensure_file_test.ts b/std/fs/ensure_file_test.ts
index 855ad4f50..a5d237e5f 100644
--- a/std/fs/ensure_file_test.ts
+++ b/std/fs/ensure_file_test.ts
@@ -41,7 +41,7 @@ test(async function ensureFileIfItExist(): Promise<void> {
const testDir = path.join(testdataDir, "ensure_file_3");
const testFile = path.join(testDir, "test.txt");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await Deno.writeFile(testFile, new Uint8Array());
await ensureFile(testFile);
@@ -61,7 +61,7 @@ test(function ensureFileSyncIfItExist(): void {
const testDir = path.join(testdataDir, "ensure_file_4");
const testFile = path.join(testDir, "test.txt");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
Deno.writeFileSync(testFile, new Uint8Array());
ensureFileSync(testFile);
@@ -77,7 +77,7 @@ test(function ensureFileSyncIfItExist(): void {
test(async function ensureFileIfItExistAsDir(): Promise<void> {
const testDir = path.join(testdataDir, "ensure_file_5");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await assertThrowsAsync(
async (): Promise<void> => {
@@ -93,7 +93,7 @@ test(async function ensureFileIfItExistAsDir(): Promise<void> {
test(function ensureFileSyncIfItExistAsDir(): void {
const testDir = path.join(testdataDir, "ensure_file_6");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
assertThrows(
(): void => {
diff --git a/std/fs/ensure_link_test.ts b/std/fs/ensure_link_test.ts
index e438bf0e3..daf216c49 100644
--- a/std/fs/ensure_link_test.ts
+++ b/std/fs/ensure_link_test.ts
@@ -43,7 +43,7 @@ test(async function ensureLinkIfItExist(): Promise<void> {
const testFile = path.join(testDir, "test.txt");
const linkFile = path.join(testDir, "link.txt");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await Deno.writeFile(testFile, new Uint8Array());
await ensureLink(testFile, linkFile);
@@ -90,7 +90,7 @@ test(function ensureLinkSyncIfItExist(): void {
const testFile = path.join(testDir, "test.txt");
const linkFile = path.join(testDir, "link.txt");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
Deno.writeFileSync(testFile, new Uint8Array());
ensureLinkSync(testFile, linkFile);
@@ -138,7 +138,7 @@ test(async function ensureLinkDirectoryIfItExist(): Promise<void> {
const linkDir = path.join(testdataDir, "ensure_link_link_3");
const testFile = path.join(testDir, "test.txt");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await Deno.writeFile(testFile, new Uint8Array());
await assertThrowsAsync(
@@ -158,7 +158,7 @@ test(function ensureLinkSyncDirectoryIfItExist(): void {
const linkDir = path.join(testdataDir, "ensure_link_link_3");
const testFile = path.join(testDir, "test.txt");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
Deno.writeFileSync(testFile, new Uint8Array());
assertThrows(
diff --git a/std/fs/ensure_symlink_test.ts b/std/fs/ensure_symlink_test.ts
index ee32d4861..0470af57e 100644
--- a/std/fs/ensure_symlink_test.ts
+++ b/std/fs/ensure_symlink_test.ts
@@ -50,7 +50,7 @@ test(async function ensureSymlinkIfItExist(): Promise<void> {
const testFile = path.join(testDir, "test.txt");
const linkFile = path.join(testDir, "link.txt");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await Deno.writeFile(testFile, new Uint8Array());
if (isWindows) {
@@ -79,7 +79,7 @@ test(function ensureSymlinkSyncIfItExist(): void {
const testFile = path.join(testDir, "test.txt");
const linkFile = path.join(testDir, "link.txt");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
Deno.writeFileSync(testFile, new Uint8Array());
if (isWindows) {
@@ -109,7 +109,7 @@ test(async function ensureSymlinkDirectoryIfItExist(): Promise<void> {
const linkDir = path.join(testdataDir, "link_file_link_3");
const testFile = path.join(testDir, "test.txt");
- await Deno.mkdir(testDir, true);
+ await Deno.mkdir(testDir, { recursive: true });
await Deno.writeFile(testFile, new Uint8Array());
if (isWindows) {
@@ -141,7 +141,7 @@ test(function ensureSymlinkSyncDirectoryIfItExist(): void {
const linkDir = path.join(testdataDir, "link_file_link_3");
const testFile = path.join(testDir, "test.txt");
- Deno.mkdirSync(testDir, true);
+ Deno.mkdirSync(testDir, { recursive: true });
Deno.writeFileSync(testFile, new Uint8Array());
if (isWindows) {
diff --git a/std/fs/move_test.ts b/std/fs/move_test.ts
index 27f66f7de..795893509 100644
--- a/std/fs/move_test.ts
+++ b/std/fs/move_test.ts
@@ -28,7 +28,7 @@ test(async function moveDirectoryIfDestNotExists(): Promise<void> {
const srcDir = path.join(testdataDir, "move_test_src_2");
const destDir = path.join(testdataDir, "move_test_dest_2");
- await Deno.mkdir(srcDir, true);
+ await Deno.mkdir(srcDir, { recursive: true });
// if dest directory not exist
await assertThrowsAsync(
@@ -112,7 +112,7 @@ test(async function moveDirectory(): Promise<void> {
const destFile = path.join(destDir, "test.txt");
const srcContent = new TextEncoder().encode("src");
- await Deno.mkdir(srcDir, true);
+ await Deno.mkdir(srcDir, { recursive: true });
assertEquals(await exists(srcDir), true);
await Deno.writeFile(srcFile, srcContent);
@@ -140,7 +140,10 @@ test(async function moveIfSrcAndDestDirectoryExistsAndOverwrite(): Promise<
const srcContent = new TextEncoder().encode("src");
const destContent = new TextEncoder().encode("dest");
- await Promise.all([Deno.mkdir(srcDir, true), Deno.mkdir(destDir, true)]);
+ await Promise.all([
+ Deno.mkdir(srcDir, { recursive: true }),
+ Deno.mkdir(destDir, { recursive: true })
+ ]);
assertEquals(await exists(srcDir), true);
assertEquals(await exists(destDir), true);
await Promise.all([
@@ -191,7 +194,7 @@ test(function moveSyncDirectoryIfDestNotExists(): void {
const srcDir = path.join(testdataDir, "move_sync_test_src_2");
const destDir = path.join(testdataDir, "move_sync_test_dest_2");
- Deno.mkdirSync(srcDir, true);
+ Deno.mkdirSync(srcDir, { recursive: true });
// if dest directory not exist
assertThrows(
@@ -270,7 +273,7 @@ test(function moveSyncDirectory(): void {
const destFile = path.join(destDir, "test.txt");
const srcContent = new TextEncoder().encode("src");
- Deno.mkdirSync(srcDir, true);
+ Deno.mkdirSync(srcDir, { recursive: true });
assertEquals(existsSync(srcDir), true);
Deno.writeFileSync(srcFile, srcContent);
@@ -294,8 +297,8 @@ test(function moveSyncIfSrcAndDestDirectoryExistsAndOverwrite(): void {
const srcContent = new TextEncoder().encode("src");
const destContent = new TextEncoder().encode("dest");
- Deno.mkdirSync(srcDir, true);
- Deno.mkdirSync(destDir, true);
+ Deno.mkdirSync(srcDir, { recursive: true });
+ Deno.mkdirSync(destDir, { recursive: true });
assertEquals(existsSync(srcDir), true);
assertEquals(existsSync(destDir), true);
Deno.writeFileSync(srcFile, srcContent);
diff --git a/std/fs/walk_test.ts b/std/fs/walk_test.ts
index c0884175f..8f218eca6 100644
--- a/std/fs/walk_test.ts
+++ b/std/fs/walk_test.ts
@@ -105,7 +105,7 @@ testWalk(
testWalk(
async (d: string): Promise<void> => {
- await mkdir(d + "/a/b/c/d", true);
+ await mkdir(d + "/a/b/c/d", { recursive: true });
await touch(d + "/a/b/c/d/x");
},
async function depth(): Promise<void> {
diff --git a/std/io/util.ts b/std/io/util.ts
index 1226640bd..4bcf7d2e9 100644
--- a/std/io/util.ts
+++ b/std/io/util.ts
@@ -40,7 +40,7 @@ export async function tempFile(
const filepath = path.resolve(
`${dir}/${opts.prefix || ""}${r}${opts.postfix || ""}`
);
- await mkdir(path.dirname(filepath), true);
+ await mkdir(path.dirname(filepath), { recursive: true });
const file = await open(filepath, "a");
return { file, filepath };
}