-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfile.js
More file actions
77 lines (69 loc) · 1.76 KB
/
file.js
File metadata and controls
77 lines (69 loc) · 1.76 KB
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
const path = require('path')
const fs = require('fs')
const fss = require('fs-extra')
exports.readFileAsync = (file) => {
return new Promise((resolve, reject) => {
fs.readFile(file, (err, data) => {
return err ? reject(err) : resolve(data)
})
})
}
exports.readdirAsync = (dir, mapToObject) => {
return new Promise((resolve, reject) => {
fs.readdir(dir, (err, data) => {
return err ? reject(err) : resolve(mapToObject ? data.map((it) => {
return {
fileName: it,
filePath: path.resolve(dir, it)
}
}): data)
})
})
}
exports.copyFileAsync = fss.copy
exports.fileExistsAsync = (file) => {
return new Promise((resolve) => fs.exists(file, resolve))
}
exports.writeFileAsync = (file, data) => {
return new Promise((resolve, reject) => {
fs.writeFile(file, data, (err, data) => {
return err ? reject(err) : resolve(file)
})
})
}
function mkdirs (dirpath, mode, callback) {
fs.exists(dirpath, (exists) => {
if (exists) {
if (callback) {
callback(null, dirpath)
}
} else {
mkdirs(path.dirname(dirpath), mode, () => {
fs.mkdir(dirpath, mode, callback)
})
}
})
}
let mkdirp = exports.mkdirp = (dirpath, mode, callback) => {
dirpath = path.resolve(dirpath)
if (!callback) {
callback = mode
mode = parseInt('0777', 8) & (~process.umask())
}
return mkdirs(dirpath, mode, (err, data) => {
if (typeof callback !== 'function') {
return
}
if ((!err) || (err && err.code === 'EEXIST')) {
return callback(null, data)
}
return callback(err)
})
}
exports.mkdirAsync = (dir) => {
return new Promise((resolve, reject) => {
mkdirp(dir, (err) => {
return err ? reject(err) : resolve(dir)
})
})
}