You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							32 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
	
	
							32 lines
						
					
					
						
							1.3 KiB
						
					
					
				'use strict' | 
						|
 | 
						|
var glob = require('glob') | 
						|
var path = require('path') | 
						|
 | 
						|
function trueCasePathSync(fsPath) { | 
						|
 | 
						|
  // Normalize the path so as to resolve . and .. components. | 
						|
  // !! As of Node v4.1.1, a path starting with ../ is NOT resolved relative | 
						|
  // !! to the current dir, and glob.sync() below then fails. | 
						|
  // !! When in doubt, resolve with fs.realPathSync() *beforehand*. | 
						|
  var fsPathNormalized = path.normalize(fsPath) | 
						|
 | 
						|
  // OSX: HFS+ stores filenames in NFD (decomposed normal form) Unicode format, | 
						|
  // so we must ensure that the input path is in that format first. | 
						|
  if (process.platform === 'darwin') fsPathNormalized = fsPathNormalized.normalize('NFD') | 
						|
 | 
						|
  // !! Windows: Curiously, the drive component mustn't be part of a glob, | 
						|
  // !! otherwise glob.sync() will invariably match nothing. | 
						|
  // !! Thus, we remove the drive component and instead pass it in as the 'cwd' | 
						|
  // !! (working dir.) property below. | 
						|
  var pathRoot = path.parse(fsPathNormalized).root | 
						|
  var noDrivePath = fsPathNormalized.slice(Math.max(pathRoot.length - 1, 0)) | 
						|
 | 
						|
  // Perform case-insensitive globbing (on Windows, relative to the drive / | 
						|
  // network share) and return the 1st match, if any. | 
						|
  // Fortunately, glob() with nocase case-corrects the input even if it is | 
						|
  // a *literal* path. | 
						|
  return glob.sync(noDrivePath, { nocase: true, cwd: pathRoot })[0] | 
						|
} | 
						|
 | 
						|
module.exports = trueCasePathSync
 | 
						|
 |