microcms_sdk_generator
Version:
A type-safe MicroCMS SDK Generator
67 lines (66 loc) • 1.97 kB
JavaScript
// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
import * as dntShim from "../../../../_dnt.shims.js";
import * as path from "../path/mod.js";
import { basename, fromFileUrl, normalize } from "../path/mod.js";
/**
* 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, dest, sep = path.sep) {
if (src === dest) {
return false;
}
src = toPathString(src);
const srcArray = src.split(sep);
dest = toPathString(dest);
const destArray = dest.split(sep);
return srcArray.every((current, i) => destArray[i] === current);
}
/**
* Get a human readable file type string.
*
* @param fileInfo A FileInfo describes a file and is returned by `stat`,
* `lstat`
*/
export function getFileInfoType(fileInfo) {
return fileInfo.isFile
? "file"
: fileInfo.isDirectory
? "dir"
: fileInfo.isSymlink
? "symlink"
: undefined;
}
/** Create WalkEntry for the `path` synchronously */
export function createWalkEntrySync(path) {
path = toPathString(path);
path = normalize(path);
const name = basename(path);
const info = dntShim.Deno.statSync(path);
return {
path,
name,
isFile: info.isFile,
isDirectory: info.isDirectory,
isSymlink: info.isSymlink,
};
}
/** Create WalkEntry for the `path` asynchronously */
export async function createWalkEntry(path) {
path = toPathString(path);
path = normalize(path);
const name = basename(path);
const info = await dntShim.Deno.stat(path);
return {
path,
name,
isFile: info.isFile,
isDirectory: info.isDirectory,
isSymlink: info.isSymlink,
};
}
export function toPathString(path) {
return path instanceof URL ? fromFileUrl(path) : path;
}