@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
JavaScript
;
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;