UNPKG

1.41 kBJavaScriptView Raw
1'use strict';
2
3var fs = require('fs');
4var path = require('path');
5var stream = require('stream');
6var wrench = require('wrench');
7
8var 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
27exports.mkPath = function(/**Array*/ _path) {
28 if ( Array.isArray(_path) ) {
29 _path = _path.join('');
30 }
31
32 wrench.mkdirSyncRecursive(_path);
33};
34
35// adapted from http://procbits.com/2011/11/15/synchronous-file-copy-in-node-js
36exports.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
61Object.keys(fs).forEach(function(key) {
62 exports[key] = fs[key];
63});