1 | 'use strict';
|
2 |
|
3 | var fs = require('fs');
|
4 | var path = require('path');
|
5 | var stream = require('stream');
|
6 | var wrench = require('wrench');
|
7 |
|
8 | var toDir = exports.toDir = function(_path) {
|
9 | var isDirectory;
|
10 |
|
11 | _path = path.normalize(_path);
|
12 |
|
13 | try {
|
14 | isDirectory = fs.statSync(_path).isDirectory();
|
15 | }
|
16 | catch(e) {
|
17 | isDirectory = false;
|
18 | }
|
19 |
|
20 | if (isDirectory) {
|
21 | return _path;
|
22 | } else {
|
23 | return path.dirname(_path);
|
24 | }
|
25 | };
|
26 |
|
27 | exports.mkPath = function(/**Array*/ _path) {
|
28 | if ( Array.isArray(_path) ) {
|
29 | _path = _path.join('');
|
30 | }
|
31 |
|
32 | wrench.mkdirSyncRecursive(_path);
|
33 | };
|
34 |
|
35 |
|
36 | exports.copyFileSync = function(inFile, outDir, fileName) {
|
37 | var BUF_LENGTH = 64 * 1024;
|
38 |
|
39 | var read;
|
40 | var write;
|
41 |
|
42 | var buffer = new Buffer(BUF_LENGTH);
|
43 | var bytesRead = 1;
|
44 | var outFile = path.join( outDir, fileName || path.basename(inFile) );
|
45 | var pos = 0;
|
46 |
|
47 | wrench.mkdirSyncRecursive(outDir);
|
48 | read = fs.openSync(inFile, 'r');
|
49 | write = fs.openSync(outFile, 'w');
|
50 |
|
51 | while (bytesRead > 0) {
|
52 | bytesRead = fs.readSync(read, buffer, 0, BUF_LENGTH, pos);
|
53 | fs.writeSync(write, buffer, 0, bytesRead);
|
54 | pos += bytesRead;
|
55 | }
|
56 |
|
57 | fs.closeSync(read);
|
58 | return fs.closeSync(write);
|
59 | };
|
60 |
|
61 | Object.keys(fs).forEach(function(key) {
|
62 | exports[key] = fs[key];
|
63 | });
|