File size: 1,036 Bytes
bc20498 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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 );
};
} |