File size: 1,099 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 50 51 52 53 |
import * as fs from 'graceful-fs';
import { dirname } from 'path';
import mkdirp from 'mkdirp';
import resolvePath from '../utils/resolvePath';
export const rename = asyncMethod( 'rename' );
export const link = asyncMethod( 'link' );
export const renameSync = syncMethod( 'renameSync' );
export const linkSync = syncMethod( 'linkSync' );
function asyncMethod ( methodName ) {
return function () {
const src = resolvePath( arguments );
return {
to () {
const dest = resolvePath( arguments );
return new Promise( ( fulfil, reject ) => {
mkdirp( dirname( dest ), err => {
if ( err ) {
reject( err );
} else {
fs[ methodName ]( src, dest, err => {
if ( err ) {
reject( err );
} else {
fulfil();
}
});
}
});
});
}
};
};
}
function syncMethod ( methodName ) {
return function () {
const src = resolvePath( arguments );
return {
to () {
const dest = resolvePath( arguments );
mkdirp.sync( dirname( dest ) );
return fs[ methodName ]( src, dest );
}
};
};
} |