UNPKG

@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
"use strict"; 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;