| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 | '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 {		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;};
 |