1 | 'use strict'
|
2 |
|
3 | var mzfs = require('mz/fs')
|
4 | var fsExtra = require('fs-extra')
|
5 | var Promise = require('any-promise')
|
6 | var thenifyAll = require('thenify-all')
|
7 | var slice = Array.prototype.slice
|
8 |
|
9 |
|
10 | var fsExtraKeys = [
|
11 | 'copy',
|
12 | 'emptyDir',
|
13 | 'ensureFile',
|
14 | 'ensureDir',
|
15 | 'ensureLink',
|
16 | 'ensureSymlink',
|
17 | 'mkdirs',
|
18 | 'move',
|
19 | 'outputFile',
|
20 | 'outputJson',
|
21 | 'readJson',
|
22 | 'remove',
|
23 | 'writeJson',
|
24 |
|
25 | 'createFile',
|
26 | 'createLink',
|
27 | 'createSymlink',
|
28 | 'emptydir',
|
29 | 'mkdirp',
|
30 | 'readJSON',
|
31 | 'outputJSON',
|
32 | 'writeJSON'
|
33 | ]
|
34 | thenifyAll.withCallback(fsExtra, exports, fsExtraKeys)
|
35 |
|
36 |
|
37 |
|
38 | var mzKeys = [
|
39 | 'rename',
|
40 | 'ftruncate',
|
41 | 'chown',
|
42 | 'fchown',
|
43 | 'lchown',
|
44 | 'chmod',
|
45 | 'fchmod',
|
46 | 'stat',
|
47 | 'lstat',
|
48 | 'fstat',
|
49 | 'link',
|
50 | 'symlink',
|
51 | 'readlink',
|
52 | 'realpath',
|
53 | 'unlink',
|
54 | 'rmdir',
|
55 | 'mkdir',
|
56 | 'readdir',
|
57 | 'close',
|
58 | 'open',
|
59 | 'utimes',
|
60 | 'futimes',
|
61 | 'fsync',
|
62 | 'write',
|
63 | 'read',
|
64 | 'readFile',
|
65 | 'writeFile',
|
66 | 'appendFile',
|
67 | 'access',
|
68 | 'exists'
|
69 | ]
|
70 | mzKeys.forEach(function(key){
|
71 | exports[key] = mzfs[key]
|
72 | })
|
73 |
|
74 |
|
75 |
|
76 | var streamKeys = [
|
77 | 'walk'
|
78 | ]
|
79 |
|
80 | streamKeys.forEach(function(key){
|
81 | exports[key] = function(){
|
82 | var func = fsExtra[key]
|
83 | var args = slice.call(arguments)
|
84 |
|
85 | return new Promise(function(resolve, reject){
|
86 | var stream = func.apply(fsExtra, args)
|
87 | var items = []
|
88 |
|
89 | stream
|
90 | .on('data', function(item){
|
91 | items.push(item)
|
92 | })
|
93 | .on('end', function(){
|
94 | resolve(items)
|
95 | })
|
96 | .on('error', function(error){
|
97 | reject(error)
|
98 | })
|
99 | })
|
100 | }
|
101 | })
|