import { dirname } from 'path'; import * as fs from 'graceful-fs'; import mkdirp from 'mkdirp'; import resolvePath from '../utils/resolvePath'; import resolvePathAndOptions from '../utils/resolvePathAndOptions'; export function symlink () { const src = resolvePath( arguments ); return { to () { const { options, resolvedPath: dest } = resolvePathAndOptions( arguments ); return new Promise( ( fulfil, reject ) => { mkdirp( dirname( dest ), err => { if ( err ) { reject( err ); } else { fs.symlink( src, dest, options.type, err => { if ( err ) { reject( err ); } else { fulfil(); } }); } }); }); } }; } export function symlinkSync () { const src = resolvePath( arguments ); return { to () { const { options, resolvedPath: dest } = resolvePathAndOptions( arguments ); mkdirp.sync( dirname( dest ) ); return fs.symlinkSync( src, dest, options.type ); } }; }