| // NOTICE: This file is generated by Rollup. To modify it, |
| // please instead edit the ESM counterpart and rebuild with Rollup (npm run build). |
| 'use strict'; |
| |
| const node_path = require('node:path'); |
| const node_fs = require('node:fs'); |
| const hash = require('./hash.cjs'); |
| |
| /** |
| * Return the cacheFile to be used by stylelint, based on whether the provided parameter is |
| * a directory or looks like a directory (ends in `path.sep`), in which case the file |
| * name will be `cacheFile/.cache_hashOfCWD`. |
| * |
| * If cacheFile points to a file or looks like a file, then it will just use that file. |
| * |
| * @param {string} cacheFile - The name of file to be used to store the cache |
| * @param {string} cwd - Current working directory. Used for tests |
| * @returns {string} Resolved path to the cache file |
| */ |
| function getCacheFile(cacheFile, cwd) { |
| /* |
| * Make sure path separators are normalized for environment/os. |
| * Also, keep trailing path separator if present. |
| */ |
| cacheFile = node_path.normalize(cacheFile); |
| |
| const resolvedCacheFile = node_path.resolve(cwd, cacheFile); |
| // If the last character passed is a path separator, we assume is a directory. |
| const looksLikeADirectory = cacheFile[cacheFile.length - 1] === node_path.sep; |
| |
| /** |
| * Return the default cache file name when provided parameter is a directory. |
| * @returns {string} - Resolved path to the cacheFile |
| */ |
| function getCacheFileForDirectory() { |
| return node_path.join(resolvedCacheFile, `.stylelintcache_${hash(cwd)}`); |
| } |
| |
| if ( |
| looksLikeADirectory || |
| node_fs.lstatSync(resolvedCacheFile, { throwIfNoEntry: false })?.isDirectory() |
| ) { |
| // Return path to provided directory with generated file name. |
| return getCacheFileForDirectory(); |
| } |
| |
| // Return normalized path to cache file. |
| return resolvedCacheFile; |
| } |
| |
| module.exports = getCacheFile; |