diff options
Diffstat (limited to 'assets/node_modules/stylelint/lib/utils/getCacheFile.js')
-rw-r--r-- | assets/node_modules/stylelint/lib/utils/getCacheFile.js | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/assets/node_modules/stylelint/lib/utils/getCacheFile.js b/assets/node_modules/stylelint/lib/utils/getCacheFile.js new file mode 100644 index 0000000..3142013 --- /dev/null +++ b/assets/node_modules/stylelint/lib/utils/getCacheFile.js @@ -0,0 +1,52 @@ +'use strict'; + +const fs = require('fs'); +const hash = require('./hash'); +const path = require('path'); + +/** + * 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 + */ +module.exports = function getCacheFile(cacheFile, cwd) { + /* + * Make sure path separators are normalized for environment/os. + * Also, keep trailing path separator if present. + */ + cacheFile = path.normalize(cacheFile); + + const resolvedCacheFile = path.resolve(cwd, cacheFile); + // If the last character passed is a path separator, we assume is a directory. + const looksLikeADirectory = cacheFile[cacheFile.length - 1] === path.sep; + + /** + * Return the default cache file name when provided parameter is a directory. + * @returns {string} - Resolved path to the cacheFile + */ + function getCacheFileForDirectory() { + return path.join(resolvedCacheFile, `.stylelintcache_${hash(cwd)}`); + } + + let fileStats; + + try { + fileStats = fs.lstatSync(resolvedCacheFile); + } catch (ex) { + fileStats = null; + } + + if (looksLikeADirectory || (fileStats && fileStats.isDirectory())) { + // Return path to provided directory with generated file name. + return getCacheFileForDirectory(); + } + + // Return normalized path to cache file. + return resolvedCacheFile; +}; |