import * as fs from 'graceful-fs'; | |
import resolvePath from '../utils/resolvePath'; | |
function normaliseArguments ( args ) { | |
const len = args.length; | |
let buildingPath = true; | |
let pathargs = []; | |
let normalised = [ null ]; // null is a placeholder for the resolved path | |
let i; | |
for ( i = 0; i < len; i += 1 ) { | |
if ( buildingPath && typeof args[i] === 'string' ) { | |
pathargs[i] = args[i]; | |
} else { | |
buildingPath = false; | |
normalised.push( args[i] ); | |
} | |
} | |
normalised[0] = resolvePath( pathargs ); | |
return normalised; | |
} | |
export function asyncMethod ( methodName ) { | |
return function () { | |
const args = normaliseArguments( arguments ); | |
return new Promise( ( fulfil, reject ) => { | |
args.push( ( err, result ) => { | |
if ( err ) { | |
reject( err ); | |
} else { | |
fulfil( result ); | |
} | |
}); | |
fs[ methodName ].apply( fs, args ); | |
}); | |
}; | |
} | |
export function syncMethod ( methodName ) { | |
return function () { | |
const args = normaliseArguments( arguments ); | |
return fs[ methodName ].apply( fs, args ); | |
}; | |
} |