UNPKG

projen

Version:

CDK for software projects

33 lines 3.55 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dirContainsFile = dirContainsFile; const fs_1 = require("fs"); const path_1 = require("path"); /** * Recursively determines whether a directory contains at least one file, * optionally filtered by file extension. * * @param dir The directory to search. If it does not exist, `false` is * returned. * @param ext Optional file extension (e.g. `".ts"`) used to filter files. When * provided, only files whose name ends with this extension are considered. * @returns `true` if a matching file is found anywhere in the tree, otherwise * `false` (including when the directory only contains empty subdirectories). */ function dirContainsFile(dir, ext) { if (!(0, fs_1.existsSync)(dir)) { return false; } for (const entry of (0, fs_1.readdirSync)(dir, { withFileTypes: true })) { if (entry.isDirectory()) { if (dirContainsFile((0, path_1.join)(dir, entry.name), ext)) { return true; } } else if (!ext || entry.name.endsWith(ext)) { return true; } } return false; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQWNBLDBDQWdCQztBQTlCRCwyQkFBNkM7QUFDN0MsK0JBQTRCO0FBRTVCOzs7Ozs7Ozs7O0dBVUc7QUFDSCxTQUFnQixlQUFlLENBQUMsR0FBVyxFQUFFLEdBQVk7SUFDdkQsSUFBSSxDQUFDLElBQUEsZUFBVSxFQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDckIsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFBLGdCQUFXLEVBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQztRQUM5RCxJQUFJLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO1lBQ3hCLElBQUksZUFBZSxDQUFDLElBQUEsV0FBSSxFQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEQsT0FBTyxJQUFJLENBQUM7WUFDZCxDQUFDO1FBQ0gsQ0FBQzthQUFNLElBQUksQ0FBQyxHQUFHLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM1QyxPQUFPLElBQUksQ0FBQztRQUNkLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZXhpc3RzU3luYywgcmVhZGRpclN5bmMgfSBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IGpvaW4gfSBmcm9tIFwicGF0aFwiO1xuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGRldGVybWluZXMgd2hldGhlciBhIGRpcmVjdG9yeSBjb250YWlucyBhdCBsZWFzdCBvbmUgZmlsZSxcbiAqIG9wdGlvbmFsbHkgZmlsdGVyZWQgYnkgZmlsZSBleHRlbnNpb24uXG4gKlxuICogQHBhcmFtIGRpciBUaGUgZGlyZWN0b3J5IHRvIHNlYXJjaC4gSWYgaXQgZG9lcyBub3QgZXhpc3QsIGBmYWxzZWAgaXNcbiAqIHJldHVybmVkLlxuICogQHBhcmFtIGV4dCBPcHRpb25hbCBmaWxlIGV4dGVuc2lvbiAoZS5nLiBgXCIudHNcImApIHVzZWQgdG8gZmlsdGVyIGZpbGVzLiBXaGVuXG4gKiBwcm92aWRlZCwgb25seSBmaWxlcyB3aG9zZSBuYW1lIGVuZHMgd2l0aCB0aGlzIGV4dGVuc2lvbiBhcmUgY29uc2lkZXJlZC5cbiAqIEByZXR1cm5zIGB0cnVlYCBpZiBhIG1hdGNoaW5nIGZpbGUgaXMgZm91bmQgYW55d2hlcmUgaW4gdGhlIHRyZWUsIG90aGVyd2lzZVxuICogYGZhbHNlYCAoaW5jbHVkaW5nIHdoZW4gdGhlIGRpcmVjdG9yeSBvbmx5IGNvbnRhaW5zIGVtcHR5IHN1YmRpcmVjdG9yaWVzKS5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGRpckNvbnRhaW5zRmlsZShkaXI6IHN0cmluZywgZXh0Pzogc3RyaW5nKTogYm9vbGVhbiB7XG4gIGlmICghZXhpc3RzU3luYyhkaXIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgZm9yIChjb25zdCBlbnRyeSBvZiByZWFkZGlyU3luYyhkaXIsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSB9KSkge1xuICAgIGlmIChlbnRyeS5pc0RpcmVjdG9yeSgpKSB7XG4gICAgICBpZiAoZGlyQ29udGFpbnNGaWxlKGpvaW4oZGlyLCBlbnRyeS5uYW1lKSwgZXh0KSkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKCFleHQgfHwgZW50cnkubmFtZS5lbmRzV2l0aChleHQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59XG4iXX0=