UNPKG

@aws-cdk/core

Version:

AWS Cloud Development Kit Core Library

59 lines 6.16 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.shouldFollow = exports.shouldExclude = void 0; const fs = require("fs"); const path = require("path"); const minimatch = require("minimatch"); const options_1 = require("./options"); /** * Determines whether a given file should be excluded or not based on given * exclusion glob patterns. * * @param exclude exclusion patterns * @param filePath file path to be assessed against the pattern * * @returns `true` if the file should be excluded */ function shouldExclude(exclude, filePath) { let excludeOutput = false; for (const pattern of exclude) { const negate = pattern.startsWith('!'); const match = minimatch(filePath, pattern, { matchBase: true, flipNegate: true }); if (!negate && match) { excludeOutput = true; } if (negate && match) { excludeOutput = false; } } return excludeOutput; } exports.shouldExclude = shouldExclude; /** * Determines whether a symlink should be followed or not, based on a FollowMode. * * @param mode the FollowMode. * @param sourceRoot the root of the source tree. * @param realPath the real path of the target of the symlink. * * @returns true if the link should be followed. */ function shouldFollow(mode, sourceRoot, realPath) { switch (mode) { case options_1.SymlinkFollowMode.ALWAYS: return fs.existsSync(realPath); case options_1.SymlinkFollowMode.EXTERNAL: return !_isInternal() && fs.existsSync(realPath); case options_1.SymlinkFollowMode.BLOCK_EXTERNAL: return _isInternal() && fs.existsSync(realPath); case options_1.SymlinkFollowMode.NEVER: return false; default: throw new Error(`Unsupported FollowMode: ${mode}`); } function _isInternal() { return path.resolve(realPath).startsWith(path.resolve(sourceRoot)); } } exports.shouldFollow = shouldFollow; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5QkFBeUI7QUFDekIsNkJBQTZCO0FBQzdCLHVDQUF1QztBQUN2Qyx1Q0FBOEM7QUFFOUM7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFnQixhQUFhLENBQUMsT0FBaUIsRUFBRSxRQUFnQjtJQUMvRCxJQUFJLGFBQWEsR0FBRyxLQUFLLENBQUM7SUFFMUIsS0FBSyxNQUFNLE9BQU8sSUFBSSxPQUFPLEVBQUU7UUFDN0IsTUFBTSxNQUFNLEdBQUcsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxTQUFTLENBQUMsUUFBUSxFQUFFLE9BQU8sRUFBRSxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLE1BQU0sSUFBSSxLQUFLLEVBQUU7WUFDcEIsYUFBYSxHQUFHLElBQUksQ0FBQztTQUN0QjtRQUVELElBQUksTUFBTSxJQUFJLEtBQUssRUFBRTtZQUNuQixhQUFhLEdBQUcsS0FBSyxDQUFDO1NBQ3ZCO0tBQ0Y7SUFFRCxPQUFPLGFBQWEsQ0FBQztBQUN2QixDQUFDO0FBakJELHNDQWlCQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQXVCLEVBQUUsVUFBa0IsRUFBRSxRQUFnQjtJQUN4RixRQUFRLElBQUksRUFBRTtRQUNaLEtBQUssMkJBQWlCLENBQUMsTUFBTTtZQUMzQixPQUFPLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDakMsS0FBSywyQkFBaUIsQ0FBQyxRQUFRO1lBQzdCLE9BQU8sQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELEtBQUssMkJBQWlCLENBQUMsY0FBYztZQUNuQyxPQUFPLFdBQVcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDbEQsS0FBSywyQkFBaUIsQ0FBQyxLQUFLO1lBQzFCLE9BQU8sS0FBSyxDQUFDO1FBQ2Y7WUFDRSxNQUFNLElBQUksS0FBSyxDQUFDLDJCQUEyQixJQUFJLEVBQUUsQ0FBQyxDQUFDO0tBQ3REO0lBRUQsU0FBUyxXQUFXO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7QUFDSCxDQUFDO0FBakJELG9DQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgKiBhcyBtaW5pbWF0Y2ggZnJvbSAnbWluaW1hdGNoJztcbmltcG9ydCB7IFN5bWxpbmtGb2xsb3dNb2RlIH0gZnJvbSAnLi9vcHRpb25zJztcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBnaXZlbiBmaWxlIHNob3VsZCBiZSBleGNsdWRlZCBvciBub3QgYmFzZWQgb24gZ2l2ZW5cbiAqIGV4Y2x1c2lvbiBnbG9iIHBhdHRlcm5zLlxuICpcbiAqIEBwYXJhbSBleGNsdWRlICBleGNsdXNpb24gcGF0dGVybnNcbiAqIEBwYXJhbSBmaWxlUGF0aCBmaWxlIHBhdGggdG8gYmUgYXNzZXNzZWQgYWdhaW5zdCB0aGUgcGF0dGVyblxuICpcbiAqIEByZXR1cm5zIGB0cnVlYCBpZiB0aGUgZmlsZSBzaG91bGQgYmUgZXhjbHVkZWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHNob3VsZEV4Y2x1ZGUoZXhjbHVkZTogc3RyaW5nW10sIGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IGV4Y2x1ZGVPdXRwdXQgPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHBhdHRlcm4gb2YgZXhjbHVkZSkge1xuICAgIGNvbnN0IG5lZ2F0ZSA9IHBhdHRlcm4uc3RhcnRzV2l0aCgnIScpO1xuICAgIGNvbnN0IG1hdGNoID0gbWluaW1hdGNoKGZpbGVQYXRoLCBwYXR0ZXJuLCB7IG1hdGNoQmFzZTogdHJ1ZSwgZmxpcE5lZ2F0ZTogdHJ1ZSB9KTtcblxuICAgIGlmICghbmVnYXRlICYmIG1hdGNoKSB7XG4gICAgICBleGNsdWRlT3V0cHV0ID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAobmVnYXRlICYmIG1hdGNoKSB7XG4gICAgICBleGNsdWRlT3V0cHV0ID0gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4Y2x1ZGVPdXRwdXQ7XG59XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgc3ltbGluayBzaG91bGQgYmUgZm9sbG93ZWQgb3Igbm90LCBiYXNlZCBvbiBhIEZvbGxvd01vZGUuXG4gKlxuICogQHBhcmFtIG1vZGUgICAgICAgdGhlIEZvbGxvd01vZGUuXG4gKiBAcGFyYW0gc291cmNlUm9vdCB0aGUgcm9vdCBvZiB0aGUgc291cmNlIHRyZWUuXG4gKiBAcGFyYW0gcmVhbFBhdGggICB0aGUgcmVhbCBwYXRoIG9mIHRoZSB0YXJnZXQgb2YgdGhlIHN5bWxpbmsuXG4gKlxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgbGluayBzaG91bGQgYmUgZm9sbG93ZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBzaG91bGRGb2xsb3cobW9kZTogU3ltbGlua0ZvbGxvd01vZGUsIHNvdXJjZVJvb3Q6IHN0cmluZywgcmVhbFBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBzd2l0Y2ggKG1vZGUpIHtcbiAgICBjYXNlIFN5bWxpbmtGb2xsb3dNb2RlLkFMV0FZUzpcbiAgICAgIHJldHVybiBmcy5leGlzdHNTeW5jKHJlYWxQYXRoKTtcbiAgICBjYXNlIFN5bWxpbmtGb2xsb3dNb2RlLkVYVEVSTkFMOlxuICAgICAgcmV0dXJuICFfaXNJbnRlcm5hbCgpICYmIGZzLmV4aXN0c1N5bmMocmVhbFBhdGgpO1xuICAgIGNhc2UgU3ltbGlua0ZvbGxvd01vZGUuQkxPQ0tfRVhURVJOQUw6XG4gICAgICByZXR1cm4gX2lzSW50ZXJuYWwoKSAmJiBmcy5leGlzdHNTeW5jKHJlYWxQYXRoKTtcbiAgICBjYXNlIFN5bWxpbmtGb2xsb3dNb2RlLk5FVkVSOlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIEZvbGxvd01vZGU6ICR7bW9kZX1gKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIF9pc0ludGVybmFsKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBwYXRoLnJlc29sdmUocmVhbFBhdGgpLnN0YXJ0c1dpdGgocGF0aC5yZXNvbHZlKHNvdXJjZVJvb3QpKTtcbiAgfVxufVxuIl19