| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 | 
							- 'use strict'
 
- const u = require('universalify').fromCallback
 
- const path = require('path')
 
- const fs = require('graceful-fs')
 
- const mkdir = require('../mkdirs')
 
- const pathExists = require('../path-exists').pathExists
 
- function createLink (srcpath, dstpath, callback) {
 
-   function makeLink (srcpath, dstpath) {
 
-     fs.link(srcpath, dstpath, err => {
 
-       if (err) return callback(err)
 
-       callback(null)
 
-     })
 
-   }
 
-   pathExists(dstpath, (err, destinationExists) => {
 
-     if (err) return callback(err)
 
-     if (destinationExists) return callback(null)
 
-     fs.lstat(srcpath, (err) => {
 
-       if (err) {
 
-         err.message = err.message.replace('lstat', 'ensureLink')
 
-         return callback(err)
 
-       }
 
-       const dir = path.dirname(dstpath)
 
-       pathExists(dir, (err, dirExists) => {
 
-         if (err) return callback(err)
 
-         if (dirExists) return makeLink(srcpath, dstpath)
 
-         mkdir.mkdirs(dir, err => {
 
-           if (err) return callback(err)
 
-           makeLink(srcpath, dstpath)
 
-         })
 
-       })
 
-     })
 
-   })
 
- }
 
- function createLinkSync (srcpath, dstpath) {
 
-   const destinationExists = fs.existsSync(dstpath)
 
-   if (destinationExists) return undefined
 
-   try {
 
-     fs.lstatSync(srcpath)
 
-   } catch (err) {
 
-     err.message = err.message.replace('lstat', 'ensureLink')
 
-     throw err
 
-   }
 
-   const dir = path.dirname(dstpath)
 
-   const dirExists = fs.existsSync(dir)
 
-   if (dirExists) return fs.linkSync(srcpath, dstpath)
 
-   mkdir.mkdirsSync(dir)
 
-   return fs.linkSync(srcpath, dstpath)
 
- }
 
- module.exports = {
 
-   createLink: u(createLink),
 
-   createLinkSync
 
- }
 
 
  |