Bug:Fix file validation issue
[vnfsdk/refrepo.git] / vnfmarket / src / main / webapp / vnfmarket / node_modules / fs-extra / lib / ensure / link.js
1 var path = require('path')
2 var fs = require('graceful-fs')
3 var mkdir = require('../mkdirs')
4
5 function createLink (srcpath, dstpath, callback) {
6   function makeLink (srcpath, dstpath) {
7     fs.link(srcpath, dstpath, function (err) {
8       if (err) return callback(err)
9       callback(null)
10     })
11   }
12
13   fs.exists(dstpath, function (destinationExists) {
14     if (destinationExists) return callback(null)
15     fs.lstat(srcpath, function (err, stat) {
16       if (err) {
17         err.message = err.message.replace('lstat', 'ensureLink')
18         return callback(err)
19       }
20
21       var dir = path.dirname(dstpath)
22       fs.exists(dir, function (dirExists) {
23         if (dirExists) return makeLink(srcpath, dstpath)
24         mkdir.mkdirs(dir, function (err) {
25           if (err) return callback(err)
26           makeLink(srcpath, dstpath)
27         })
28       })
29     })
30   })
31 }
32
33 function createLinkSync (srcpath, dstpath, callback) {
34   var destinationExists = fs.existsSync(dstpath)
35   if (destinationExists) return undefined
36
37   try {
38     fs.lstatSync(srcpath)
39   } catch (err) {
40     err.message = err.message.replace('lstat', 'ensureLink')
41     throw err
42   }
43
44   var dir = path.dirname(dstpath)
45   var dirExists = fs.existsSync(dir)
46   if (dirExists) return fs.linkSync(srcpath, dstpath)
47   mkdir.mkdirsSync(dir)
48
49   return fs.linkSync(srcpath, dstpath)
50 }
51
52 module.exports = {
53   createLink: createLink,
54   createLinkSync: createLinkSync,
55   // alias
56   ensureLink: createLink,
57   ensureLinkSync: createLinkSync
58 }