summaryrefslogtreecommitdiff
path: root/std/fs/_util.ts
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2020-05-09 13:34:47 +0100
committerGitHub <noreply@github.com>2020-05-09 08:34:47 -0400
commitf184332c09c851faac50f598d29ebe4426e05464 (patch)
tree2659aba63702537fcde1bb64ddeafea1e5863f3e /std/fs/_util.ts
parent2b02535028f868ea8dfc471c4921a237747ccd4a (diff)
BREAKING(std): reorganization (#5087)
* Prepend underscores to private modules * Remove collectUint8Arrays() It would be a misuse of Deno.iter()'s result. * Move std/_util/async.ts to std/async * Move std/util/sha*.ts to std/hash
Diffstat (limited to 'std/fs/_util.ts')
-rw-r--r--std/fs/_util.ts45
1 files changed, 45 insertions, 0 deletions
diff --git a/std/fs/_util.ts b/std/fs/_util.ts
new file mode 100644
index 000000000..48a98a0b1
--- /dev/null
+++ b/std/fs/_util.ts
@@ -0,0 +1,45 @@
+import * as path from "../path/mod.ts";
+
+/**
+ * Test whether or not `dest` is a sub-directory of `src`
+ * @param src src file path
+ * @param dest dest file path
+ * @param sep path separator
+ */
+export function isSubdir(
+ src: string,
+ dest: string,
+ sep: string = path.sep
+): boolean {
+ if (src === dest) {
+ return false;
+ }
+ const srcArray = src.split(sep);
+ const destArray = dest.split(sep);
+ // see: https://github.com/Microsoft/TypeScript/issues/30821
+ return srcArray.reduce(
+ // @ts-ignore
+ (acc: true, current: string, i: number): boolean => {
+ return acc && destArray[i] === current;
+ },
+ true
+ );
+}
+
+export type PathType = "file" | "dir" | "symlink";
+
+/**
+ * Get a human readable file type string.
+ *
+ * @param fileInfo A FileInfo describes a file and is returned by `stat`,
+ * `lstat`
+ */
+export function getFileInfoType(fileInfo: Deno.FileInfo): PathType | undefined {
+ return fileInfo.isFile
+ ? "file"
+ : fileInfo.isDirectory
+ ? "dir"
+ : fileInfo.isSymlink
+ ? "symlink"
+ : undefined;
+}