UNPKG

@bevry/fs-tree

Version:

Read and write to the filesystem as a tree, useful for quick scaffolding and comparisons of filesystem directories

50 lines (49 loc) 2.17 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; 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 */ function readTree(directory, opts = { encoding: 'utf8', }) { return __awaiter(this, void 0, void 0, function* () { const results = yield (0, scandirectory_1.scanDirectory)(Object.assign(Object.assign({}, opts), { directory, includeRoot: true })); return (0, scandirectory_1.toTree)(results); }); } exports.readTree = readTree; /** Write a tree to a directory */ function writeTree(directory, tree, opts = { encoding: 'utf8', }) { return __awaiter(this, void 0, void 0, function* () { 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)) { yield writeTree(path, value, opts); } else { yield (0, fs_write_1.default)(path, value === true ? '' : value, opts); } } }); } exports.writeTree = writeTree;