backup
Advanced tools
Comparing version 1.0.0-7 to 1.0.0-8
98
index.js
@@ -41,3 +41,3 @@ // Copyright Peter Širka, Web Site Design s.r.o. (www.petersirka.sk) | ||
function Walker() { | ||
function Walker(addDirectory) { | ||
this.pending = []; | ||
@@ -48,2 +48,3 @@ this.pendingDirectory = []; | ||
this.complete = null; | ||
this.addDirectory = addDirectory || false; | ||
}; | ||
@@ -58,3 +59,3 @@ | ||
if (arr.length === 0) | ||
if (arr.length === 0 || self.addDirectory) | ||
self.directory.push(path); | ||
@@ -315,2 +316,78 @@ | ||
Backup.prototype.clear = function(path, callback, filter) { | ||
var self = this; | ||
var walker = new Walker(true); | ||
if (callback) | ||
self.complete = callback; | ||
if (filter) | ||
self.filter = filter; | ||
walker.complete = function(directory, files) { | ||
self.file = []; | ||
self.directory = []; | ||
if (typeof(filter) !== 'function') | ||
filter = function(o) { return true; }; | ||
files.forEach(function(o) { | ||
if (filter(o)) | ||
self.file.push(o); | ||
}); | ||
directory.forEach(function(o) { | ||
if (o === path) | ||
return; | ||
if (filter(o)) | ||
self.directory.push(o); | ||
}); | ||
self.directory.sort(function(a, b) { | ||
if (a.length < b.length) | ||
return 1; | ||
else | ||
return -1; | ||
}); | ||
self.removeFile(); | ||
}; | ||
walker.walk(path); | ||
}; | ||
Backup.prototype.removeFile = function() { | ||
var self = this; | ||
var filename = self.file.shift(); | ||
if (typeof(filename) === 'undefined') { | ||
self.removeDirectory(); | ||
return; | ||
} | ||
fs.unlink(filename, function() { | ||
self.removeFile(); | ||
}); | ||
}; | ||
Backup.prototype.removeDirectory = function() { | ||
var self = this; | ||
var directory = self.directory.shift(); | ||
if (typeof(directory) === 'undefined') { | ||
self.complete(); | ||
return; | ||
} | ||
fs.rmdir(directory, function() { | ||
self.removeDirectory(); | ||
}); | ||
}; | ||
/* | ||
@@ -349,7 +426,20 @@ @max {Number} | ||
exports.restore = function(fileName, path, callback, filter) { | ||
exports.clear = function(path, callback, filter) { | ||
var backup = new Backup(); | ||
backup.restore(fileName, path, callback, filter); | ||
backup.clear(path, callback, filter); | ||
}; | ||
exports.restore = function(fileName, path, callback, filter, clear) { | ||
var backup = new Backup(); | ||
if (!clear) { | ||
backup.restore(fileName, path, callback, filter); | ||
return; | ||
} | ||
backup.clear(path, function() { | ||
backup.restore(fileName, path, callback, filter); | ||
}); | ||
}; | ||
exports.Backup = Backup; |
{ | ||
"name": "backup", | ||
"version": "1.0.0-7", | ||
"version": "1.0.0-8", | ||
"description": "Web Site backup & restore", | ||
@@ -5,0 +5,0 @@ "main": "./index.js", |
13051
326