mirror of
https://github.com/S2-/gitlit
synced 2025-08-04 05:10:05 +02:00
initial commit
This commit is contained in:
39
app/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js
generated
vendored
Normal file
39
app/node_modules/fs-extra/lib/copy-sync/copy-file-sync.js
generated
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
var fs = require('graceful-fs')
|
||||
|
||||
var BUF_LENGTH = 64 * 1024
|
||||
var _buff = new Buffer(BUF_LENGTH)
|
||||
|
||||
function copyFileSync (srcFile, destFile, options) {
|
||||
var clobber = options.clobber
|
||||
var preserveTimestamps = options.preserveTimestamps
|
||||
|
||||
if (fs.existsSync(destFile)) {
|
||||
if (clobber) {
|
||||
fs.chmodSync(destFile, parseInt('777', 8))
|
||||
fs.unlinkSync(destFile)
|
||||
} else {
|
||||
throw Error('EEXIST')
|
||||
}
|
||||
}
|
||||
|
||||
var fdr = fs.openSync(srcFile, 'r')
|
||||
var stat = fs.fstatSync(fdr)
|
||||
var fdw = fs.openSync(destFile, 'w', stat.mode)
|
||||
var bytesRead = 1
|
||||
var pos = 0
|
||||
|
||||
while (bytesRead > 0) {
|
||||
bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos)
|
||||
fs.writeSync(fdw, _buff, 0, bytesRead)
|
||||
pos += bytesRead
|
||||
}
|
||||
|
||||
if (preserveTimestamps) {
|
||||
fs.futimesSync(fdw, stat.atime, stat.mtime)
|
||||
}
|
||||
|
||||
fs.closeSync(fdr)
|
||||
fs.closeSync(fdw)
|
||||
}
|
||||
|
||||
module.exports = copyFileSync
|
48
app/node_modules/fs-extra/lib/copy-sync/copy-sync.js
generated
vendored
Normal file
48
app/node_modules/fs-extra/lib/copy-sync/copy-sync.js
generated
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var copyFileSync = require('./copy-file-sync')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function copySync (src, dest, options) {
|
||||
if (typeof options === 'function' || options instanceof RegExp) {
|
||||
options = {filter: options}
|
||||
}
|
||||
|
||||
options = options || {}
|
||||
options.recursive = !!options.recursive
|
||||
|
||||
// default to true for now
|
||||
options.clobber = 'clobber' in options ? !!options.clobber : true
|
||||
options.dereference = 'dereference' in options ? !!options.dereference : false
|
||||
options.preserveTimestamps = 'preserveTimestamps' in options ? !!options.preserveTimestamps : false
|
||||
|
||||
options.filter = options.filter || function () { return true }
|
||||
|
||||
var stats = (options.recursive && !options.dereference) ? fs.lstatSync(src) : fs.statSync(src)
|
||||
var destFolder = path.dirname(dest)
|
||||
var destFolderExists = fs.existsSync(destFolder)
|
||||
var performCopy = false
|
||||
|
||||
if (stats.isFile()) {
|
||||
if (options.filter instanceof RegExp) performCopy = options.filter.test(src)
|
||||
else if (typeof options.filter === 'function') performCopy = options.filter(src)
|
||||
|
||||
if (performCopy) {
|
||||
if (!destFolderExists) mkdir.mkdirsSync(destFolder)
|
||||
copyFileSync(src, dest, {clobber: options.clobber, preserveTimestamps: options.preserveTimestamps})
|
||||
}
|
||||
} else if (stats.isDirectory()) {
|
||||
if (!fs.existsSync(dest)) mkdir.mkdirsSync(dest)
|
||||
var contents = fs.readdirSync(src)
|
||||
contents.forEach(function (content) {
|
||||
var opts = options
|
||||
opts.recursive = true
|
||||
copySync(path.join(src, content), path.join(dest, content), opts)
|
||||
})
|
||||
} else if (options.recursive && stats.isSymbolicLink()) {
|
||||
var srcPath = fs.readlinkSync(src)
|
||||
fs.symlinkSync(srcPath, dest)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = copySync
|
3
app/node_modules/fs-extra/lib/copy-sync/index.js
generated
vendored
Normal file
3
app/node_modules/fs-extra/lib/copy-sync/index.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
copySync: require('./copy-sync')
|
||||
}
|
44
app/node_modules/fs-extra/lib/copy/copy.js
generated
vendored
Normal file
44
app/node_modules/fs-extra/lib/copy/copy.js
generated
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var ncp = require('./ncp')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function copy (src, dest, options, callback) {
|
||||
if (typeof options === 'function' && !callback) {
|
||||
callback = options
|
||||
options = {}
|
||||
} else if (typeof options === 'function' || options instanceof RegExp) {
|
||||
options = {filter: options}
|
||||
}
|
||||
callback = callback || function () {}
|
||||
options = options || {}
|
||||
|
||||
// don't allow src and dest to be the same
|
||||
var basePath = process.cwd()
|
||||
var currentPath = path.resolve(basePath, src)
|
||||
var targetPath = path.resolve(basePath, dest)
|
||||
if (currentPath === targetPath) return callback(new Error('Source and destination must not be the same.'))
|
||||
|
||||
fs.lstat(src, function (err, stats) {
|
||||
if (err) return callback(err)
|
||||
|
||||
var dir = null
|
||||
if (stats.isDirectory()) {
|
||||
var parts = dest.split(path.sep)
|
||||
parts.pop()
|
||||
dir = parts.join(path.sep)
|
||||
} else {
|
||||
dir = path.dirname(dest)
|
||||
}
|
||||
|
||||
fs.exists(dir, function (dirExists) {
|
||||
if (dirExists) return ncp(src, dest, options, callback)
|
||||
mkdir.mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
ncp(src, dest, options, callback)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = copy
|
3
app/node_modules/fs-extra/lib/copy/index.js
generated
vendored
Normal file
3
app/node_modules/fs-extra/lib/copy/index.js
generated
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
copy: require('./copy')
|
||||
}
|
243
app/node_modules/fs-extra/lib/copy/ncp.js
generated
vendored
Normal file
243
app/node_modules/fs-extra/lib/copy/ncp.js
generated
vendored
Normal file
@@ -0,0 +1,243 @@
|
||||
// imported from ncp (this is temporary, will rewrite)
|
||||
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var utimes = require('../util/utimes')
|
||||
|
||||
function ncp (source, dest, options, callback) {
|
||||
if (!callback) {
|
||||
callback = options
|
||||
options = {}
|
||||
}
|
||||
|
||||
var basePath = process.cwd()
|
||||
var currentPath = path.resolve(basePath, source)
|
||||
var targetPath = path.resolve(basePath, dest)
|
||||
|
||||
var filter = options.filter
|
||||
var transform = options.transform
|
||||
var clobber = options.clobber !== false
|
||||
var dereference = options.dereference
|
||||
var preserveTimestamps = options.preserveTimestamps === true
|
||||
|
||||
var errs = null
|
||||
|
||||
var started = 0
|
||||
var finished = 0
|
||||
var running = 0
|
||||
// this is pretty useless now that we're using graceful-fs
|
||||
// consider removing
|
||||
var limit = options.limit || 512
|
||||
|
||||
startCopy(currentPath)
|
||||
|
||||
function startCopy (source) {
|
||||
started++
|
||||
if (filter) {
|
||||
if (filter instanceof RegExp) {
|
||||
if (!filter.test(source)) {
|
||||
return doneOne(true)
|
||||
}
|
||||
} else if (typeof filter === 'function') {
|
||||
if (!filter(source)) {
|
||||
return doneOne(true)
|
||||
}
|
||||
}
|
||||
}
|
||||
return getStats(source)
|
||||
}
|
||||
|
||||
function getStats (source) {
|
||||
var stat = dereference ? fs.stat : fs.lstat
|
||||
if (running >= limit) {
|
||||
return setImmediate(function () {
|
||||
getStats(source)
|
||||
})
|
||||
}
|
||||
running++
|
||||
stat(source, function (err, stats) {
|
||||
if (err) return onError(err)
|
||||
|
||||
// We need to get the mode from the stats object and preserve it.
|
||||
var item = {
|
||||
name: source,
|
||||
mode: stats.mode,
|
||||
mtime: stats.mtime, // modified time
|
||||
atime: stats.atime, // access time
|
||||
stats: stats // temporary
|
||||
}
|
||||
|
||||
if (stats.isDirectory()) {
|
||||
return onDir(item)
|
||||
} else if (stats.isFile() || stats.isCharacterDevice() || stats.isBlockDevice()) {
|
||||
return onFile(item)
|
||||
} else if (stats.isSymbolicLink()) {
|
||||
// Symlinks don't really need to know about the mode.
|
||||
return onLink(source)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function onFile (file) {
|
||||
var target = file.name.replace(currentPath, targetPath)
|
||||
isWritable(target, function (writable) {
|
||||
if (writable) {
|
||||
copyFile(file, target)
|
||||
} else {
|
||||
if (clobber) {
|
||||
rmFile(target, function () {
|
||||
copyFile(file, target)
|
||||
})
|
||||
} else {
|
||||
doneOne()
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function copyFile (file, target) {
|
||||
var readStream = fs.createReadStream(file.name)
|
||||
var writeStream = fs.createWriteStream(target, { mode: file.mode })
|
||||
|
||||
readStream.on('error', onError)
|
||||
writeStream.on('error', onError)
|
||||
|
||||
if (transform) {
|
||||
transform(readStream, writeStream, file)
|
||||
} else {
|
||||
writeStream.on('open', function () {
|
||||
readStream.pipe(writeStream)
|
||||
})
|
||||
}
|
||||
|
||||
writeStream.once('finish', function () {
|
||||
fs.chmod(target, file.mode, function (err) {
|
||||
if (err) return onError(err)
|
||||
if (preserveTimestamps) {
|
||||
utimes.utimesMillis(target, file.atime, file.mtime, function (err) {
|
||||
if (err) return onError(err)
|
||||
return doneOne()
|
||||
})
|
||||
} else {
|
||||
doneOne()
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function rmFile (file, done) {
|
||||
fs.unlink(file, function (err) {
|
||||
if (err) return onError(err)
|
||||
return done()
|
||||
})
|
||||
}
|
||||
|
||||
function onDir (dir) {
|
||||
var target = dir.name.replace(currentPath, targetPath)
|
||||
isWritable(target, function (writable) {
|
||||
if (writable) {
|
||||
return mkDir(dir, target)
|
||||
}
|
||||
copyDir(dir.name)
|
||||
})
|
||||
}
|
||||
|
||||
function mkDir (dir, target) {
|
||||
fs.mkdir(target, dir.mode, function (err) {
|
||||
if (err) return onError(err)
|
||||
// despite setting mode in fs.mkdir, doesn't seem to work
|
||||
// so we set it here.
|
||||
fs.chmod(target, dir.mode, function (err) {
|
||||
if (err) return onError(err)
|
||||
copyDir(dir.name)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function copyDir (dir) {
|
||||
fs.readdir(dir, function (err, items) {
|
||||
if (err) return onError(err)
|
||||
items.forEach(function (item) {
|
||||
startCopy(path.join(dir, item))
|
||||
})
|
||||
return doneOne()
|
||||
})
|
||||
}
|
||||
|
||||
function onLink (link) {
|
||||
var target = link.replace(currentPath, targetPath)
|
||||
fs.readlink(link, function (err, resolvedPath) {
|
||||
if (err) return onError(err)
|
||||
checkLink(resolvedPath, target)
|
||||
})
|
||||
}
|
||||
|
||||
function checkLink (resolvedPath, target) {
|
||||
if (dereference) {
|
||||
resolvedPath = path.resolve(basePath, resolvedPath)
|
||||
}
|
||||
isWritable(target, function (writable) {
|
||||
if (writable) {
|
||||
return makeLink(resolvedPath, target)
|
||||
}
|
||||
fs.readlink(target, function (err, targetDest) {
|
||||
if (err) return onError(err)
|
||||
|
||||
if (dereference) {
|
||||
targetDest = path.resolve(basePath, targetDest)
|
||||
}
|
||||
if (targetDest === resolvedPath) {
|
||||
return doneOne()
|
||||
}
|
||||
return rmFile(target, function () {
|
||||
makeLink(resolvedPath, target)
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function makeLink (linkPath, target) {
|
||||
fs.symlink(linkPath, target, function (err) {
|
||||
if (err) return onError(err)
|
||||
return doneOne()
|
||||
})
|
||||
}
|
||||
|
||||
function isWritable (path, done) {
|
||||
fs.lstat(path, function (err) {
|
||||
if (err) {
|
||||
if (err.code === 'ENOENT') return done(true)
|
||||
return done(false)
|
||||
}
|
||||
return done(false)
|
||||
})
|
||||
}
|
||||
|
||||
function onError (err) {
|
||||
if (options.stopOnError) {
|
||||
return callback(err)
|
||||
} else if (!errs && options.errs) {
|
||||
errs = fs.createWriteStream(options.errs)
|
||||
} else if (!errs) {
|
||||
errs = []
|
||||
}
|
||||
if (typeof errs.write === 'undefined') {
|
||||
errs.push(err)
|
||||
} else {
|
||||
errs.write(err.stack + '\n\n')
|
||||
}
|
||||
return doneOne()
|
||||
}
|
||||
|
||||
function doneOne (skipped) {
|
||||
if (!skipped) running--
|
||||
finished++
|
||||
if ((started === finished) && (running === 0)) {
|
||||
if (callback !== undefined) {
|
||||
return errs ? callback(errs) : callback(null)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = ncp
|
47
app/node_modules/fs-extra/lib/empty/index.js
generated
vendored
Normal file
47
app/node_modules/fs-extra/lib/empty/index.js
generated
vendored
Normal file
@@ -0,0 +1,47 @@
|
||||
var fs = require('fs')
|
||||
var path = require('path')
|
||||
var mkdir = require('../mkdirs')
|
||||
var remove = require('../remove')
|
||||
|
||||
function emptyDir (dir, callback) {
|
||||
callback = callback || function () {}
|
||||
fs.readdir(dir, function (err, items) {
|
||||
if (err) return mkdir.mkdirs(dir, callback)
|
||||
|
||||
items = items.map(function (item) {
|
||||
return path.join(dir, item)
|
||||
})
|
||||
|
||||
deleteItem()
|
||||
|
||||
function deleteItem () {
|
||||
var item = items.pop()
|
||||
if (!item) return callback()
|
||||
remove.remove(item, function (err) {
|
||||
if (err) return callback(err)
|
||||
deleteItem()
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function emptyDirSync (dir) {
|
||||
var items
|
||||
try {
|
||||
items = fs.readdirSync(dir)
|
||||
} catch (err) {
|
||||
return mkdir.mkdirsSync(dir)
|
||||
}
|
||||
|
||||
items.forEach(function (item) {
|
||||
item = path.join(dir, item)
|
||||
remove.removeSync(item)
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
emptyDirSync: emptyDirSync,
|
||||
emptydirSync: emptyDirSync,
|
||||
emptyDir: emptyDir,
|
||||
emptydir: emptyDir
|
||||
}
|
43
app/node_modules/fs-extra/lib/ensure/file.js
generated
vendored
Normal file
43
app/node_modules/fs-extra/lib/ensure/file.js
generated
vendored
Normal file
@@ -0,0 +1,43 @@
|
||||
var path = require('path')
|
||||
var fs = require('graceful-fs')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function createFile (file, callback) {
|
||||
function makeFile () {
|
||||
fs.writeFile(file, '', function (err) {
|
||||
if (err) return callback(err)
|
||||
callback()
|
||||
})
|
||||
}
|
||||
|
||||
fs.exists(file, function (fileExists) {
|
||||
if (fileExists) return callback()
|
||||
var dir = path.dirname(file)
|
||||
fs.exists(dir, function (dirExists) {
|
||||
if (dirExists) return makeFile()
|
||||
mkdir.mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
makeFile()
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function createFileSync (file) {
|
||||
if (fs.existsSync(file)) return
|
||||
|
||||
var dir = path.dirname(file)
|
||||
if (!fs.existsSync(dir)) {
|
||||
mkdir.mkdirsSync(dir)
|
||||
}
|
||||
|
||||
fs.writeFileSync(file, '')
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createFile: createFile,
|
||||
createFileSync: createFileSync,
|
||||
// alias
|
||||
ensureFile: createFile,
|
||||
ensureFileSync: createFileSync
|
||||
}
|
21
app/node_modules/fs-extra/lib/ensure/index.js
generated
vendored
Normal file
21
app/node_modules/fs-extra/lib/ensure/index.js
generated
vendored
Normal file
@@ -0,0 +1,21 @@
|
||||
var file = require('./file')
|
||||
var link = require('./link')
|
||||
var symlink = require('./symlink')
|
||||
|
||||
module.exports = {
|
||||
// file
|
||||
createFile: file.createFile,
|
||||
createFileSync: file.createFileSync,
|
||||
ensureFile: file.createFile,
|
||||
ensureFileSync: file.createFileSync,
|
||||
// link
|
||||
createLink: link.createLink,
|
||||
createLinkSync: link.createLinkSync,
|
||||
ensureLink: link.createLink,
|
||||
ensureLinkSync: link.createLinkSync,
|
||||
// symlink
|
||||
createSymlink: symlink.createSymlink,
|
||||
createSymlinkSync: symlink.createSymlinkSync,
|
||||
ensureSymlink: symlink.createSymlink,
|
||||
ensureSymlinkSync: symlink.createSymlinkSync
|
||||
}
|
58
app/node_modules/fs-extra/lib/ensure/link.js
generated
vendored
Normal file
58
app/node_modules/fs-extra/lib/ensure/link.js
generated
vendored
Normal file
@@ -0,0 +1,58 @@
|
||||
var path = require('path')
|
||||
var fs = require('graceful-fs')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function createLink (srcpath, dstpath, callback) {
|
||||
function makeLink (srcpath, dstpath) {
|
||||
fs.link(srcpath, dstpath, function (err) {
|
||||
if (err) return callback(err)
|
||||
callback(null)
|
||||
})
|
||||
}
|
||||
|
||||
fs.exists(dstpath, function (destinationExists) {
|
||||
if (destinationExists) return callback(null)
|
||||
fs.lstat(srcpath, function (err, stat) {
|
||||
if (err) {
|
||||
err.message = err.message.replace('lstat', 'ensureLink')
|
||||
return callback(err)
|
||||
}
|
||||
|
||||
var dir = path.dirname(dstpath)
|
||||
fs.exists(dir, function (dirExists) {
|
||||
if (dirExists) return makeLink(srcpath, dstpath)
|
||||
mkdir.mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
makeLink(srcpath, dstpath)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function createLinkSync (srcpath, dstpath, callback) {
|
||||
var destinationExists = fs.existsSync(dstpath)
|
||||
if (destinationExists) return undefined
|
||||
|
||||
try {
|
||||
fs.lstatSync(srcpath)
|
||||
} catch (err) {
|
||||
err.message = err.message.replace('lstat', 'ensureLink')
|
||||
throw err
|
||||
}
|
||||
|
||||
var dir = path.dirname(dstpath)
|
||||
var dirExists = fs.existsSync(dir)
|
||||
if (dirExists) return fs.linkSync(srcpath, dstpath)
|
||||
mkdir.mkdirsSync(dir)
|
||||
|
||||
return fs.linkSync(srcpath, dstpath)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createLink: createLink,
|
||||
createLinkSync: createLinkSync,
|
||||
// alias
|
||||
ensureLink: createLink,
|
||||
ensureLinkSync: createLinkSync
|
||||
}
|
97
app/node_modules/fs-extra/lib/ensure/symlink-paths.js
generated
vendored
Normal file
97
app/node_modules/fs-extra/lib/ensure/symlink-paths.js
generated
vendored
Normal file
@@ -0,0 +1,97 @@
|
||||
var path = require('path')
|
||||
// path.isAbsolute shim for Node.js 0.10 support
|
||||
path.isAbsolute = (path.isAbsolute) ? path.isAbsolute : require('path-is-absolute')
|
||||
var fs = require('graceful-fs')
|
||||
|
||||
/**
|
||||
* Function that returns two types of paths, one relative to symlink, and one
|
||||
* relative to the current working directory. Checks if path is absolute or
|
||||
* relative. If the path is relative, this function checks if the path is
|
||||
* relative to symlink or relative to current working directory. This is an
|
||||
* initiative to find a smarter `srcpath` to supply when building symlinks.
|
||||
* This allows you to determine which path to use out of one of three possible
|
||||
* types of source paths. The first is an absolute path. This is detected by
|
||||
* `path.isAbsolute()`. When an absolute path is provided, it is checked to
|
||||
* see if it exists. If it does it's used, if not an error is returned
|
||||
* (callback)/ thrown (sync). The other two options for `srcpath` are a
|
||||
* relative url. By default Node's `fs.symlink` works by creating a symlink
|
||||
* using `dstpath` and expects the `srcpath` to be relative to the newly
|
||||
* created symlink. If you provide a `srcpath` that does not exist on the file
|
||||
* system it results in a broken symlink. To minimize this, the function
|
||||
* checks to see if the 'relative to symlink' source file exists, and if it
|
||||
* does it will use it. If it does not, it checks if there's a file that
|
||||
* exists that is relative to the current working directory, if does its used.
|
||||
* This preserves the expectations of the original fs.symlink spec and adds
|
||||
* the ability to pass in `relative to current working direcotry` paths.
|
||||
*/
|
||||
|
||||
function symlinkPaths (srcpath, dstpath, callback) {
|
||||
if (path.isAbsolute(srcpath)) {
|
||||
return fs.lstat(srcpath, function (err, stat) {
|
||||
if (err) {
|
||||
err.message = err.message.replace('lstat', 'ensureSymlink')
|
||||
return callback(err)
|
||||
}
|
||||
return callback(null, {
|
||||
'toCwd': srcpath,
|
||||
'toDst': srcpath
|
||||
})
|
||||
})
|
||||
} else {
|
||||
var dstdir = path.dirname(dstpath)
|
||||
var relativeToDst = path.join(dstdir, srcpath)
|
||||
return fs.exists(relativeToDst, function (exists) {
|
||||
if (exists) {
|
||||
return callback(null, {
|
||||
'toCwd': relativeToDst,
|
||||
'toDst': srcpath
|
||||
})
|
||||
} else {
|
||||
return fs.lstat(srcpath, function (err, stat) {
|
||||
if (err) {
|
||||
err.message = err.message.replace('lstat', 'ensureSymlink')
|
||||
return callback(err)
|
||||
}
|
||||
return callback(null, {
|
||||
'toCwd': srcpath,
|
||||
'toDst': path.relative(dstdir, srcpath)
|
||||
})
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
function symlinkPathsSync (srcpath, dstpath) {
|
||||
var exists
|
||||
if (path.isAbsolute(srcpath)) {
|
||||
exists = fs.existsSync(srcpath)
|
||||
if (!exists) throw new Error('absolute srcpath does not exist')
|
||||
return {
|
||||
'toCwd': srcpath,
|
||||
'toDst': srcpath
|
||||
}
|
||||
} else {
|
||||
var dstdir = path.dirname(dstpath)
|
||||
var relativeToDst = path.join(dstdir, srcpath)
|
||||
exists = fs.existsSync(relativeToDst)
|
||||
if (exists) {
|
||||
return {
|
||||
'toCwd': relativeToDst,
|
||||
'toDst': srcpath
|
||||
}
|
||||
} else {
|
||||
exists = fs.existsSync(srcpath)
|
||||
if (!exists) throw new Error('relative srcpath does not exist')
|
||||
return {
|
||||
'toCwd': srcpath,
|
||||
'toDst': path.relative(dstdir, srcpath)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
'symlinkPaths': symlinkPaths,
|
||||
'symlinkPathsSync': symlinkPathsSync
|
||||
}
|
27
app/node_modules/fs-extra/lib/ensure/symlink-type.js
generated
vendored
Normal file
27
app/node_modules/fs-extra/lib/ensure/symlink-type.js
generated
vendored
Normal file
@@ -0,0 +1,27 @@
|
||||
var fs = require('graceful-fs')
|
||||
|
||||
function symlinkType (srcpath, type, callback) {
|
||||
callback = (typeof type === 'function') ? type : callback
|
||||
type = (typeof type === 'function') ? false : type
|
||||
if (type) return callback(null, type)
|
||||
fs.lstat(srcpath, function (err, stats) {
|
||||
if (err) return callback(null, 'file')
|
||||
type = (stats && stats.isDirectory()) ? 'dir' : 'file'
|
||||
callback(null, type)
|
||||
})
|
||||
}
|
||||
|
||||
function symlinkTypeSync (srcpath, type) {
|
||||
if (type) return type
|
||||
try {
|
||||
var stats = fs.lstatSync(srcpath)
|
||||
} catch (e) {
|
||||
return 'file'
|
||||
}
|
||||
return (stats && stats.isDirectory()) ? 'dir' : 'file'
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
symlinkType: symlinkType,
|
||||
symlinkTypeSync: symlinkTypeSync
|
||||
}
|
62
app/node_modules/fs-extra/lib/ensure/symlink.js
generated
vendored
Normal file
62
app/node_modules/fs-extra/lib/ensure/symlink.js
generated
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
var path = require('path')
|
||||
var fs = require('graceful-fs')
|
||||
var _mkdirs = require('../mkdirs')
|
||||
var mkdirs = _mkdirs.mkdirs
|
||||
var mkdirsSync = _mkdirs.mkdirsSync
|
||||
|
||||
var _symlinkPaths = require('./symlink-paths')
|
||||
var symlinkPaths = _symlinkPaths.symlinkPaths
|
||||
var symlinkPathsSync = _symlinkPaths.symlinkPathsSync
|
||||
|
||||
var _symlinkType = require('./symlink-type')
|
||||
var symlinkType = _symlinkType.symlinkType
|
||||
var symlinkTypeSync = _symlinkType.symlinkTypeSync
|
||||
|
||||
function createSymlink (srcpath, dstpath, type, callback) {
|
||||
callback = (typeof type === 'function') ? type : callback
|
||||
type = (typeof type === 'function') ? false : type
|
||||
|
||||
fs.exists(dstpath, function (destinationExists) {
|
||||
if (destinationExists) return callback(null)
|
||||
symlinkPaths(srcpath, dstpath, function (err, relative) {
|
||||
if (err) return callback(err)
|
||||
srcpath = relative.toDst
|
||||
symlinkType(relative.toCwd, type, function (err, type) {
|
||||
if (err) return callback(err)
|
||||
var dir = path.dirname(dstpath)
|
||||
fs.exists(dir, function (dirExists) {
|
||||
if (dirExists) return fs.symlink(srcpath, dstpath, type, callback)
|
||||
mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.symlink(srcpath, dstpath, type, callback)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function createSymlinkSync (srcpath, dstpath, type, callback) {
|
||||
callback = (typeof type === 'function') ? type : callback
|
||||
type = (typeof type === 'function') ? false : type
|
||||
|
||||
var destinationExists = fs.existsSync(dstpath)
|
||||
if (destinationExists) return undefined
|
||||
|
||||
var relative = symlinkPathsSync(srcpath, dstpath)
|
||||
srcpath = relative.toDst
|
||||
type = symlinkTypeSync(relative.toCwd, type)
|
||||
var dir = path.dirname(dstpath)
|
||||
var exists = fs.existsSync(dir)
|
||||
if (exists) return fs.symlinkSync(srcpath, dstpath, type)
|
||||
mkdirsSync(dir)
|
||||
return fs.symlinkSync(srcpath, dstpath, type)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
createSymlink: createSymlink,
|
||||
createSymlinkSync: createSymlinkSync,
|
||||
// alias
|
||||
ensureSymlink: createSymlink,
|
||||
ensureSymlinkSync: createSymlinkSync
|
||||
}
|
37
app/node_modules/fs-extra/lib/index.js
generated
vendored
Normal file
37
app/node_modules/fs-extra/lib/index.js
generated
vendored
Normal file
@@ -0,0 +1,37 @@
|
||||
var assign = require('./util/assign')
|
||||
|
||||
var fse = {}
|
||||
var gfs = require('graceful-fs')
|
||||
|
||||
// attach fs methods to fse
|
||||
Object.keys(gfs).forEach(function (key) {
|
||||
fse[key] = gfs[key]
|
||||
})
|
||||
|
||||
var fs = fse
|
||||
|
||||
assign(fs, require('./copy'))
|
||||
assign(fs, require('./copy-sync'))
|
||||
assign(fs, require('./mkdirs'))
|
||||
assign(fs, require('./remove'))
|
||||
assign(fs, require('./json'))
|
||||
assign(fs, require('./move'))
|
||||
assign(fs, require('./empty'))
|
||||
assign(fs, require('./ensure'))
|
||||
assign(fs, require('./output'))
|
||||
assign(fs, require('./walk'))
|
||||
|
||||
module.exports = fs
|
||||
|
||||
// maintain backwards compatibility for awhile
|
||||
var jsonfile = {}
|
||||
Object.defineProperty(jsonfile, 'spaces', {
|
||||
get: function () {
|
||||
return fs.spaces // found in ./json
|
||||
},
|
||||
set: function (val) {
|
||||
fs.spaces = val
|
||||
}
|
||||
})
|
||||
|
||||
module.exports.jsonfile = jsonfile // so users of fs-extra can modify jsonFile.spaces
|
9
app/node_modules/fs-extra/lib/json/index.js
generated
vendored
Normal file
9
app/node_modules/fs-extra/lib/json/index.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
var jsonFile = require('./jsonfile')
|
||||
|
||||
jsonFile.outputJsonSync = require('./output-json-sync')
|
||||
jsonFile.outputJson = require('./output-json')
|
||||
// aliases
|
||||
jsonFile.outputJSONSync = require('./output-json-sync')
|
||||
jsonFile.outputJSON = require('./output-json')
|
||||
|
||||
module.exports = jsonFile
|
14
app/node_modules/fs-extra/lib/json/jsonfile.js
generated
vendored
Normal file
14
app/node_modules/fs-extra/lib/json/jsonfile.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
var jsonFile = require('jsonfile')
|
||||
|
||||
module.exports = {
|
||||
// jsonfile exports
|
||||
readJson: jsonFile.readFile,
|
||||
readJSON: jsonFile.readFile,
|
||||
readJsonSync: jsonFile.readFileSync,
|
||||
readJSONSync: jsonFile.readFileSync,
|
||||
writeJson: jsonFile.writeFile,
|
||||
writeJSON: jsonFile.writeFile,
|
||||
writeJsonSync: jsonFile.writeFileSync,
|
||||
writeJSONSync: jsonFile.writeFileSync,
|
||||
spaces: 2 // default in fs-extra
|
||||
}
|
16
app/node_modules/fs-extra/lib/json/output-json-sync.js
generated
vendored
Normal file
16
app/node_modules/fs-extra/lib/json/output-json-sync.js
generated
vendored
Normal file
@@ -0,0 +1,16 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var jsonFile = require('./jsonfile')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function outputJsonSync (file, data, options) {
|
||||
var dir = path.dirname(file)
|
||||
|
||||
if (!fs.existsSync(dir)) {
|
||||
mkdir.mkdirsSync(dir)
|
||||
}
|
||||
|
||||
jsonFile.writeJsonSync(file, data, options)
|
||||
}
|
||||
|
||||
module.exports = outputJsonSync
|
24
app/node_modules/fs-extra/lib/json/output-json.js
generated
vendored
Normal file
24
app/node_modules/fs-extra/lib/json/output-json.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var jsonFile = require('./jsonfile')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function outputJson (file, data, options, callback) {
|
||||
if (typeof options === 'function') {
|
||||
callback = options
|
||||
options = {}
|
||||
}
|
||||
|
||||
var dir = path.dirname(file)
|
||||
|
||||
fs.exists(dir, function (itDoes) {
|
||||
if (itDoes) return jsonFile.writeJson(file, data, options, callback)
|
||||
|
||||
mkdir.mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
jsonFile.writeJson(file, data, options, callback)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = outputJson
|
9
app/node_modules/fs-extra/lib/mkdirs/index.js
generated
vendored
Normal file
9
app/node_modules/fs-extra/lib/mkdirs/index.js
generated
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
module.exports = {
|
||||
mkdirs: require('./mkdirs'),
|
||||
mkdirsSync: require('./mkdirs-sync'),
|
||||
// alias
|
||||
mkdirp: require('./mkdirs'),
|
||||
mkdirpSync: require('./mkdirs-sync'),
|
||||
ensureDir: require('./mkdirs'),
|
||||
ensureDirSync: require('./mkdirs-sync')
|
||||
}
|
57
app/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js
generated
vendored
Normal file
57
app/node_modules/fs-extra/lib/mkdirs/mkdirs-sync.js
generated
vendored
Normal file
@@ -0,0 +1,57 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var invalidWin32Path = require('./win32').invalidWin32Path
|
||||
|
||||
var o777 = parseInt('0777', 8)
|
||||
|
||||
function mkdirsSync (p, opts, made) {
|
||||
if (!opts || typeof opts !== 'object') {
|
||||
opts = { mode: opts }
|
||||
}
|
||||
|
||||
var mode = opts.mode
|
||||
var xfs = opts.fs || fs
|
||||
|
||||
if (process.platform === 'win32' && invalidWin32Path(p)) {
|
||||
var errInval = new Error(p + ' contains invalid WIN32 path characters.')
|
||||
errInval.code = 'EINVAL'
|
||||
throw errInval
|
||||
}
|
||||
|
||||
if (mode === undefined) {
|
||||
mode = o777 & (~process.umask())
|
||||
}
|
||||
if (!made) made = null
|
||||
|
||||
p = path.resolve(p)
|
||||
|
||||
try {
|
||||
xfs.mkdirSync(p, mode)
|
||||
made = made || p
|
||||
} catch (err0) {
|
||||
switch (err0.code) {
|
||||
case 'ENOENT':
|
||||
if (path.dirname(p) === p) throw err0
|
||||
made = mkdirsSync(path.dirname(p), opts, made)
|
||||
mkdirsSync(p, opts, made)
|
||||
break
|
||||
|
||||
// In the case of any other error, just see if there's a dir
|
||||
// there already. If so, then hooray! If not, then something
|
||||
// is borked.
|
||||
default:
|
||||
var stat
|
||||
try {
|
||||
stat = xfs.statSync(p)
|
||||
} catch (err1) {
|
||||
throw err0
|
||||
}
|
||||
if (!stat.isDirectory()) throw err0
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
return made
|
||||
}
|
||||
|
||||
module.exports = mkdirsSync
|
61
app/node_modules/fs-extra/lib/mkdirs/mkdirs.js
generated
vendored
Normal file
61
app/node_modules/fs-extra/lib/mkdirs/mkdirs.js
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var invalidWin32Path = require('./win32').invalidWin32Path
|
||||
|
||||
var o777 = parseInt('0777', 8)
|
||||
|
||||
function mkdirs (p, opts, callback, made) {
|
||||
if (typeof opts === 'function') {
|
||||
callback = opts
|
||||
opts = {}
|
||||
} else if (!opts || typeof opts !== 'object') {
|
||||
opts = { mode: opts }
|
||||
}
|
||||
|
||||
if (process.platform === 'win32' && invalidWin32Path(p)) {
|
||||
var errInval = new Error(p + ' contains invalid WIN32 path characters.')
|
||||
errInval.code = 'EINVAL'
|
||||
return callback(errInval)
|
||||
}
|
||||
|
||||
var mode = opts.mode
|
||||
var xfs = opts.fs || fs
|
||||
|
||||
if (mode === undefined) {
|
||||
mode = o777 & (~process.umask())
|
||||
}
|
||||
if (!made) made = null
|
||||
|
||||
callback = callback || function () {}
|
||||
p = path.resolve(p)
|
||||
|
||||
xfs.mkdir(p, mode, function (er) {
|
||||
if (!er) {
|
||||
made = made || p
|
||||
return callback(null, made)
|
||||
}
|
||||
switch (er.code) {
|
||||
case 'ENOENT':
|
||||
if (path.dirname(p) === p) return callback(er)
|
||||
mkdirs(path.dirname(p), opts, function (er, made) {
|
||||
if (er) callback(er, made)
|
||||
else mkdirs(p, opts, callback, made)
|
||||
})
|
||||
break
|
||||
|
||||
// In the case of any other error, just see if there's a dir
|
||||
// there already. If so, then hooray! If not, then something
|
||||
// is borked.
|
||||
default:
|
||||
xfs.stat(p, function (er2, stat) {
|
||||
// if the stat fails, then that's super weird.
|
||||
// let the original error be the failure reason.
|
||||
if (er2 || !stat.isDirectory()) callback(er, made)
|
||||
else callback(null, made)
|
||||
})
|
||||
break
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = mkdirs
|
24
app/node_modules/fs-extra/lib/mkdirs/win32.js
generated
vendored
Normal file
24
app/node_modules/fs-extra/lib/mkdirs/win32.js
generated
vendored
Normal file
@@ -0,0 +1,24 @@
|
||||
'use strict'
|
||||
var path = require('path')
|
||||
|
||||
// get drive on windows
|
||||
function getRootPath (p) {
|
||||
p = path.normalize(path.resolve(p)).split(path.sep)
|
||||
if (p.length > 0) return p[0]
|
||||
else return null
|
||||
}
|
||||
|
||||
// http://stackoverflow.com/a/62888/10333 contains more accurate
|
||||
// TODO: expand to include the rest
|
||||
var INVALID_PATH_CHARS = /[<>:"|?*]/
|
||||
|
||||
function invalidWin32Path (p) {
|
||||
var rp = getRootPath(p)
|
||||
p = p.replace(rp, '')
|
||||
return INVALID_PATH_CHARS.test(p)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getRootPath: getRootPath,
|
||||
invalidWin32Path: invalidWin32Path
|
||||
}
|
161
app/node_modules/fs-extra/lib/move/index.js
generated
vendored
Normal file
161
app/node_modules/fs-extra/lib/move/index.js
generated
vendored
Normal file
@@ -0,0 +1,161 @@
|
||||
// most of this code was written by Andrew Kelley
|
||||
// licensed under the BSD license: see
|
||||
// https://github.com/andrewrk/node-mv/blob/master/package.json
|
||||
|
||||
// this needs a cleanup
|
||||
|
||||
var fs = require('graceful-fs')
|
||||
var ncp = require('../copy/ncp')
|
||||
var path = require('path')
|
||||
var rimraf = require('rimraf')
|
||||
var mkdirp = require('../mkdirs').mkdirs
|
||||
|
||||
function mv (source, dest, options, callback) {
|
||||
if (typeof options === 'function') {
|
||||
callback = options
|
||||
options = {}
|
||||
}
|
||||
|
||||
var shouldMkdirp = ('mkdirp' in options) ? options.mkdirp : true
|
||||
var clobber = ('clobber' in options) ? options.clobber : false
|
||||
|
||||
var limit = options.limit || 16
|
||||
|
||||
if (shouldMkdirp) {
|
||||
mkdirs()
|
||||
} else {
|
||||
doRename()
|
||||
}
|
||||
|
||||
function mkdirs () {
|
||||
mkdirp(path.dirname(dest), function (err) {
|
||||
if (err) return callback(err)
|
||||
doRename()
|
||||
})
|
||||
}
|
||||
|
||||
function doRename () {
|
||||
if (clobber) {
|
||||
fs.rename(source, dest, function (err) {
|
||||
if (!err) return callback()
|
||||
|
||||
if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST') {
|
||||
rimraf(dest, function (err) {
|
||||
if (err) return callback(err)
|
||||
options.clobber = false // just clobbered it, no need to do it again
|
||||
mv(source, dest, options, callback)
|
||||
})
|
||||
return
|
||||
}
|
||||
|
||||
// weird Windows shit
|
||||
if (err.code === 'EPERM') {
|
||||
setTimeout(function () {
|
||||
rimraf(dest, function (err) {
|
||||
if (err) return callback(err)
|
||||
options.clobber = false
|
||||
mv(source, dest, options, callback)
|
||||
})
|
||||
}, 200)
|
||||
return
|
||||
}
|
||||
|
||||
if (err.code !== 'EXDEV') return callback(err)
|
||||
moveAcrossDevice(source, dest, clobber, limit, callback)
|
||||
})
|
||||
} else {
|
||||
fs.link(source, dest, function (err) {
|
||||
if (err) {
|
||||
if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM') {
|
||||
moveAcrossDevice(source, dest, clobber, limit, callback)
|
||||
return
|
||||
}
|
||||
callback(err)
|
||||
return
|
||||
}
|
||||
fs.unlink(source, callback)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function moveAcrossDevice (source, dest, clobber, limit, callback) {
|
||||
fs.stat(source, function (err, stat) {
|
||||
if (err) {
|
||||
callback(err)
|
||||
return
|
||||
}
|
||||
|
||||
if (stat.isDirectory()) {
|
||||
moveDirAcrossDevice(source, dest, clobber, limit, callback)
|
||||
} else {
|
||||
moveFileAcrossDevice(source, dest, clobber, limit, callback)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
function moveFileAcrossDevice (source, dest, clobber, limit, callback) {
|
||||
var outFlags = clobber ? 'w' : 'wx'
|
||||
var ins = fs.createReadStream(source)
|
||||
var outs = fs.createWriteStream(dest, {flags: outFlags})
|
||||
|
||||
ins.on('error', function (err) {
|
||||
ins.destroy()
|
||||
outs.destroy()
|
||||
outs.removeListener('close', onClose)
|
||||
|
||||
// may want to create a directory but `out` line above
|
||||
// creates an empty file for us: See #108
|
||||
// don't care about error here
|
||||
fs.unlink(dest, function () {
|
||||
// note: `err` here is from the input stream errror
|
||||
if (err.code === 'EISDIR' || err.code === 'EPERM') {
|
||||
moveDirAcrossDevice(source, dest, clobber, limit, callback)
|
||||
} else {
|
||||
callback(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
|
||||
outs.on('error', function (err) {
|
||||
ins.destroy()
|
||||
outs.destroy()
|
||||
outs.removeListener('close', onClose)
|
||||
callback(err)
|
||||
})
|
||||
|
||||
outs.once('close', onClose)
|
||||
ins.pipe(outs)
|
||||
|
||||
function onClose () {
|
||||
fs.unlink(source, callback)
|
||||
}
|
||||
}
|
||||
|
||||
function moveDirAcrossDevice (source, dest, clobber, limit, callback) {
|
||||
var options = {
|
||||
stopOnErr: true,
|
||||
clobber: false,
|
||||
limit: limit
|
||||
}
|
||||
|
||||
function startNcp () {
|
||||
ncp(source, dest, options, function (errList) {
|
||||
if (errList) return callback(errList[0])
|
||||
rimraf(source, callback)
|
||||
})
|
||||
}
|
||||
|
||||
if (clobber) {
|
||||
rimraf(dest, function (err) {
|
||||
if (err) return callback(err)
|
||||
startNcp()
|
||||
})
|
||||
} else {
|
||||
startNcp()
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
move: mv
|
||||
}
|
35
app/node_modules/fs-extra/lib/output/index.js
generated
vendored
Normal file
35
app/node_modules/fs-extra/lib/output/index.js
generated
vendored
Normal file
@@ -0,0 +1,35 @@
|
||||
var path = require('path')
|
||||
var fs = require('graceful-fs')
|
||||
var mkdir = require('../mkdirs')
|
||||
|
||||
function outputFile (file, data, encoding, callback) {
|
||||
if (typeof encoding === 'function') {
|
||||
callback = encoding
|
||||
encoding = 'utf8'
|
||||
}
|
||||
|
||||
var dir = path.dirname(file)
|
||||
fs.exists(dir, function (itDoes) {
|
||||
if (itDoes) return fs.writeFile(file, data, encoding, callback)
|
||||
|
||||
mkdir.mkdirs(dir, function (err) {
|
||||
if (err) return callback(err)
|
||||
|
||||
fs.writeFile(file, data, encoding, callback)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function outputFileSync (file, data, encoding) {
|
||||
var dir = path.dirname(file)
|
||||
if (fs.existsSync(dir)) {
|
||||
return fs.writeFileSync.apply(fs, arguments)
|
||||
}
|
||||
mkdir.mkdirsSync(dir)
|
||||
fs.writeFileSync.apply(fs, arguments)
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
outputFile: outputFile,
|
||||
outputFileSync: outputFileSync
|
||||
}
|
14
app/node_modules/fs-extra/lib/remove/index.js
generated
vendored
Normal file
14
app/node_modules/fs-extra/lib/remove/index.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
var rimraf = require('rimraf')
|
||||
|
||||
function removeSync (dir) {
|
||||
return rimraf.sync(dir)
|
||||
}
|
||||
|
||||
function remove (dir, callback) {
|
||||
return callback ? rimraf(dir, callback) : rimraf(dir, function () {})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
remove: remove,
|
||||
removeSync: removeSync
|
||||
}
|
14
app/node_modules/fs-extra/lib/util/assign.js
generated
vendored
Normal file
14
app/node_modules/fs-extra/lib/util/assign.js
generated
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
// simple mutable assign
|
||||
function assign () {
|
||||
var args = [].slice.call(arguments).filter(function (i) { return i })
|
||||
var dest = args.shift()
|
||||
args.forEach(function (src) {
|
||||
Object.keys(src).forEach(function (key) {
|
||||
dest[key] = src[key]
|
||||
})
|
||||
})
|
||||
|
||||
return dest
|
||||
}
|
||||
|
||||
module.exports = assign
|
69
app/node_modules/fs-extra/lib/util/utimes.js
generated
vendored
Normal file
69
app/node_modules/fs-extra/lib/util/utimes.js
generated
vendored
Normal file
@@ -0,0 +1,69 @@
|
||||
var fs = require('graceful-fs')
|
||||
var path = require('path')
|
||||
var os = require('os')
|
||||
|
||||
// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not
|
||||
function hasMillisResSync () {
|
||||
var tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2))
|
||||
tmpfile = path.join(os.tmpdir(), tmpfile)
|
||||
|
||||
// 550 millis past UNIX epoch
|
||||
var d = new Date(1435410243862)
|
||||
fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141')
|
||||
var fd = fs.openSync(tmpfile, 'r+')
|
||||
fs.futimesSync(fd, d, d)
|
||||
fs.closeSync(fd)
|
||||
return fs.statSync(tmpfile).mtime > 1435410243000
|
||||
}
|
||||
|
||||
function hasMillisRes (callback) {
|
||||
var tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2))
|
||||
tmpfile = path.join(os.tmpdir(), tmpfile)
|
||||
|
||||
// 550 millis past UNIX epoch
|
||||
var d = new Date(1435410243862)
|
||||
fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.open(tmpfile, 'r+', function (err, fd) {
|
||||
if (err) return callback(err)
|
||||
fs.futimes(fd, d, d, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.close(fd, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.stat(tmpfile, function (err, stats) {
|
||||
if (err) return callback(err)
|
||||
callback(null, stats.mtime > 1435410243000)
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
function timeRemoveMillis (timestamp) {
|
||||
if (typeof timestamp === 'number') {
|
||||
return Math.floor(timestamp / 1000) * 1000
|
||||
} else if (timestamp instanceof Date) {
|
||||
return new Date(Math.floor(timestamp.getTime() / 1000) * 1000)
|
||||
} else {
|
||||
throw new Error('fs-extra: timeRemoveMillis() unknown parameter type')
|
||||
}
|
||||
}
|
||||
|
||||
function utimesMillis (path, atime, mtime, callback) {
|
||||
// if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback)
|
||||
fs.open(path, 'r+', function (err, fd) {
|
||||
if (err) return callback(err)
|
||||
fs.futimes(fd, atime, mtime, function (err) {
|
||||
if (err) return callback(err)
|
||||
fs.close(fd, callback)
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
hasMillisRes: hasMillisRes,
|
||||
hasMillisResSync: hasMillisResSync,
|
||||
timeRemoveMillis: timeRemoveMillis,
|
||||
utimesMillis: utimesMillis
|
||||
}
|
5
app/node_modules/fs-extra/lib/walk/index.js
generated
vendored
Normal file
5
app/node_modules/fs-extra/lib/walk/index.js
generated
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
var klaw = require('klaw')
|
||||
|
||||
module.exports = {
|
||||
walk: klaw
|
||||
}
|
Reference in New Issue
Block a user