@bevry/fs-tree
Version:
Read and write to the filesystem as a tree, useful for quick scaffolding and comparisons of filesystem directories
37 lines (36 loc) • 1.29 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.writeTree = exports.readTree = void 0;
// builtin
const path_1 = require("path");
// external
const typechecker_1 = require("typechecker");
const fs_write_1 = __importDefault(require("@bevry/fs-write"));
const scandirectory_1 = require("scandirectory");
/** Read a directory to a tree */
async function readTree(directory, opts = {
encoding: 'utf8',
}) {
const results = await (0, scandirectory_1.scanDirectory)({ ...opts, directory, includeRoot: true });
return (0, scandirectory_1.toTree)(results);
}
exports.readTree = readTree;
/** Write a tree to a directory */
async function writeTree(directory, tree, opts = {
encoding: 'utf8',
}) {
for (const basename of Object.keys(tree)) {
const value = tree[basename];
const path = (0, path_1.join)(directory, basename);
if ((0, typechecker_1.isPlainObject)(value)) {
await writeTree(path, value, opts);
}
else {
await (0, fs_write_1.default)(path, value === true ? '' : value, opts);
}
}
}
exports.writeTree = writeTree;