inPubCache method
Whether it lives in pub's shared cache: the default one, or the one
PUB_CACHE names in environment (this process's by default).
Implementation
bool inPubCache({Map<String, String>? environment}) {
final p = rootPath.toLowerCase();
if (p.contains('/pub/cache/') || p.contains('/.pub-cache/')) return true;
final set = (environment ?? Platform.environment)['PUB_CACHE']?.trim();
if (set == null || set.isEmpty) return false;
var cache = Directory(set).absolute.path.replaceAll(r'\', '/');
while (cache.endsWith('/')) {
cache = cache.substring(0, cache.length - 1);
}
final ignoreCase = Platform.isWindows || Platform.isMacOS;
final root = ignoreCase ? p : rootPath;
final prefix = ignoreCase ? '${cache.toLowerCase()}/' : '$cache/';
return root.startsWith(prefix);
}