Added buildManifestInfo() to populate disk manifests with file information when the files are available locally
This commit is contained in:
parent
b671b086ce
commit
0b6cf80c88
1 changed files with 39 additions and 2 deletions
|
|
@ -35,6 +35,7 @@
|
||||||
if (typeof module != "undefined") { // we can't simply test for NODE, since defines.js hasn't been loaded yet
|
if (typeof module != "undefined") { // we can't simply test for NODE, since defines.js hasn't been loaded yet
|
||||||
var fs = require("fs");
|
var fs = require("fs");
|
||||||
var path = require("path");
|
var path = require("path");
|
||||||
|
var glob = require("glob");
|
||||||
var http = require("http");
|
var http = require("http");
|
||||||
var mkdirp = require("mkdirp");
|
var mkdirp = require("mkdirp");
|
||||||
var crypto = require("crypto");
|
var crypto = require("crypto");
|
||||||
|
|
@ -840,6 +841,12 @@ DiskDump.outputDisk = function(err, disk, sDiskPath, sOutputFile, fOverwrite, sM
|
||||||
if (disk.bufDisk) {
|
if (disk.bufDisk) {
|
||||||
md5Disk = crypto.createHash('md5').update(disk.bufDisk.buf || disk.bufDisk).digest('hex');
|
md5Disk = crypto.createHash('md5').update(disk.bufDisk.buf || disk.bufDisk).digest('hex');
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* Before calling updateManifest(), see if we have any aManifestInfo entries, and if not, see if
|
||||||
|
* there's a folder that the original files have been "dumped" into, from which we can create those
|
||||||
|
* entries...
|
||||||
|
*/
|
||||||
|
disk.buildManifestInfo(sDiskPath);
|
||||||
fUnchanged = DiskDump.updateManifest(disk, disk.sManifestFile, sDiskPath, sOutputFile, true, sManifestTitle, md5Disk, md5JSON);
|
fUnchanged = DiskDump.updateManifest(disk, disk.sManifestFile, sDiskPath, sOutputFile, true, sManifestTitle, md5Disk, md5JSON);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1018,7 +1025,7 @@ DiskDump.updateManifest = function(disk, sManifestFile, sDiskPath, sOutputFile,
|
||||||
var sAttrs = "";
|
var sAttrs = "";
|
||||||
var fileInfo = disk.aManifestInfo[i];
|
var fileInfo = disk.aManifestInfo[i];
|
||||||
if (fileInfo.FILE_SIZE < 0) continue; // ignore non-file entries
|
if (fileInfo.FILE_SIZE < 0) continue; // ignore non-file entries
|
||||||
var sDir = path.dirname(fileInfo.FILE_PATH) + '/';
|
var sDir = path.dirname(fileInfo.FILE_PATH) + path.sep;
|
||||||
if (sBaseDir === null) sBaseDir = sDir;
|
if (sBaseDir === null) sBaseDir = sDir;
|
||||||
sAttrs += ' size="' + fileInfo.FILE_SIZE + '"';
|
sAttrs += ' size="' + fileInfo.FILE_SIZE + '"';
|
||||||
sAttrs += ' time="' + usr.formatDate("Y-m-d H:i:s", fileInfo.FILE_TIME) + '"';
|
sAttrs += ' time="' + usr.formatDate("Y-m-d H:i:s", fileInfo.FILE_TIME) + '"';
|
||||||
|
|
@ -1568,6 +1575,36 @@ DiskDump.prototype.addManifestInfo = function(fileInfo)
|
||||||
this.aManifestInfo.push(fileInfo);
|
this.aManifestInfo.push(fileInfo);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* buildManifestInfo(sImage)
|
||||||
|
*
|
||||||
|
* @this {DiskDump}
|
||||||
|
* @param {string} sImage
|
||||||
|
*/
|
||||||
|
DiskDump.prototype.buildManifestInfo = function(sImage)
|
||||||
|
{
|
||||||
|
if (!this.aManifestInfo.length) {
|
||||||
|
var sDir = sImage.replace(/\.(img|json)/, "");
|
||||||
|
if (sDir != sImage) {
|
||||||
|
sDir = sDir + path.sep;
|
||||||
|
var asFiles = glob.sync(sDir + "**");
|
||||||
|
for (var i = 0; i < asFiles.length; i++) {
|
||||||
|
var sFile = asFiles[i];
|
||||||
|
var fileInfo = {};
|
||||||
|
fileInfo.FILE_PATH = sFile;
|
||||||
|
fileInfo.FILE_NAME = sFile.substr(sDir.length);
|
||||||
|
if (!fileInfo.FILE_NAME) continue;
|
||||||
|
var stats = fs.statSync(sFile);
|
||||||
|
fileInfo.FILE_ATTR = stats.isDirectory()? DiskDump.ATTR_SUBDIR : DiskDump.ATTR_ARCHIVE;
|
||||||
|
fileInfo.FILE_SIZE = stats.size;
|
||||||
|
fileInfo.FILE_TIME = stats.mtime;
|
||||||
|
this.validateTime(fileInfo.FILE_TIME);
|
||||||
|
this.addManifestInfo(fileInfo);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* isTextFile(sFileName)
|
* isTextFile(sFileName)
|
||||||
*
|
*
|
||||||
|
|
@ -1743,7 +1780,7 @@ DiskDump.prototype.readPath = function(sPath, done)
|
||||||
for (var iFile = 0; iFile < asFiles.length; iFile++) {
|
for (var iFile = 0; iFile < asFiles.length; iFile++) {
|
||||||
fileInfo = {};
|
fileInfo = {};
|
||||||
var sFileName = asFiles[iFile];
|
var sFileName = asFiles[iFile];
|
||||||
var i = sFileName.lastIndexOf('/');
|
var i = sFileName.lastIndexOf(path.sep);
|
||||||
if (i >= 0) {
|
if (i >= 0) {
|
||||||
if (sFileName.indexOf("..") < 0) {
|
if (sFileName.indexOf("..") < 0) {
|
||||||
sDefaultPath = sFileName.substr(0, i);
|
sDefaultPath = sFileName.substr(0, i);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue