diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2020-05-09 13:34:47 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-05-09 08:34:47 -0400 |
commit | f184332c09c851faac50f598d29ebe4426e05464 (patch) | |
tree | 2659aba63702537fcde1bb64ddeafea1e5863f3e /std/fs/_util.ts | |
parent | 2b02535028f868ea8dfc471c4921a237747ccd4a (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.ts | 45 |
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; +} |