1 |
|
2 | var crypto = require("crypto"),
|
3 | fs = require("fs"),
|
4 | path = require("path"),
|
5 | os = require("os");
|
6 |
|
7 |
|
8 | var utils = {
|
9 |
|
10 | extend: function(destination, source) {
|
11 | for (var property in source) {
|
12 | if (source[property] && source[property].constructor && source[property].constructor === Object) {
|
13 | destination[property] = destination[property] || {};
|
14 | arguments.callee(destination[property], source[property]);
|
15 | } else {
|
16 | destination[property] = source[property];
|
17 | }
|
18 | }
|
19 | return destination;
|
20 | },
|
21 |
|
22 |
|
23 | tmpDir: function(){
|
24 | var tmp = os.tmpDir();
|
25 | var folder = "artycles_"+ crypto.randomBytes(4).readUInt32LE(0);
|
26 | var dir = tmp +"/"+ folder;
|
27 | fs.mkdirSync( dir );
|
28 | return dir+"/";
|
29 | },
|
30 |
|
31 |
|
32 | filename: function( options ){
|
33 |
|
34 | options = options || {
|
35 | prefix: "",
|
36 | scramble: true
|
37 | };
|
38 | var name = "";
|
39 | if( options.prefix.length ){
|
40 | name += options.prefix;
|
41 | }
|
42 | var d = new Date();
|
43 |
|
44 | name += d.getFullYear() +""+ dd(d.getMonth()+1) +""+ dd(d.getDate());
|
45 |
|
46 | name += "-"+ dd(d.getHours()) +""+ dd(d.getMinutes()) +""+ dd(d.getSeconds()) +""+ d.getMilliseconds();
|
47 |
|
48 |
|
49 | if( options.scramble ) name += "-"+ crypto.randomBytes(Math.ceil(6/2)).toString('hex').slice(0,6);
|
50 |
|
51 | return name;
|
52 | },
|
53 |
|
54 |
|
55 | rmdir: function( dir ) {
|
56 | if( fs.existsSync( dir ) ) {
|
57 | fs.readdirSync( dir ).forEach(function(file,index){
|
58 | var curDir = dir + "/" + file;
|
59 | if(fs.lstatSync(curDir).isDirectory()) {
|
60 | deleteFolderRecursive(curDir);
|
61 | } else {
|
62 | fs.unlinkSync(curDir);
|
63 | }
|
64 | });
|
65 | fs.rmdirSync( dir );
|
66 | }
|
67 | },
|
68 |
|
69 |
|
70 | mkdir: function( dir, mode ) {
|
71 | mode = mode || 0666;
|
72 | if( !fs.existsSync( dir ) ) {
|
73 | try {
|
74 | fs.mkdirSync( dir );
|
75 | } catch(e) {
|
76 | if ( e.code != 'EEXIST' ){
|
77 |
|
78 |
|
79 | this.mkdir(path.dirname( dir ), mode );
|
80 |
|
81 | this.mkdir( dir, mode );
|
82 | }
|
83 | }
|
84 | }
|
85 | }
|
86 | }
|
87 |
|
88 |
|
89 |
|
90 |
|
91 | function dd( num ){
|
92 | return ("0" + num).slice(-2);
|
93 | }
|
94 |
|
95 |
|
96 | module.exports = utils;
|