Work on new archivers layout, short/long desc file discovery

This commit is contained in:
Bryan Ashby 2016-10-03 22:03:32 -06:00
parent 9593da5626
commit 61b0658743
3 changed files with 71 additions and 9 deletions

View File

@ -214,9 +214,9 @@ module.exports = class ArchiveUtil {
// }
const entries = [];
const entryMatchRe = new RegExp(archiver.list.entryMatch, 'g');
const entryMatchRe = new RegExp(archiver.list.entryMatch, 'gm');
let m;
while(null !== (m = entryMatchRe.exec(output))) {
while((m = entryMatchRe.exec(output))) {
// :TODO: allow alternate ordering!!!
entries.push({
size : m[1],

View File

@ -226,12 +226,62 @@ function getDefaultConfig() {
list : {
cmd : '7z',
args : [ 'l', '{archivePath}' ],
entryMatch : '^[0-9]{4}-[0-9]{2}-[0-9]{2}\\s[0-9]{2}:[0-9]{2}:[0-9]{2}\\s[A-Za-z\\.]{5}\\s+([0-9]+)\\s+[0-9]+\\s+([^\\n]+)$',
entryMatch : '^[0-9]{4}-[0-9]{2}-[0-9]{2}\\s[0-9]{2}:[0-9]{2}:[0-9]{2}\\s[A-Za-z\\.]{5}\\s+([0-9]+)\\s+[0-9]+\\s+([^\\r\\n]+)$',
},
extract : {
cmd : '7z',
args : [ 'x', '-o{extractPath}', '{archivePath}', '{fileList}' ],
},
},
},
},
archivers2 : {
tools : {
'7Zip' : {
compress : {
cmd : '7z',
args : [ 'a', '-tzip', '{archivePath}', '{fileList}' ],
},
decompress : {
cmd : '7z',
args : [ 'e', '-o{extractPath}', '{archivePath}' ]
},
list : {
cmd : '7z',
args : [ 'l', '{archivePath}' ],
entryMatch : '^[0-9]{4}-[0-9]{2}-[0-9]{2}\\s[0-9]{2}:[0-9]{2}:[0-9]{2}\\s[A-Za-z\\.]{5}\\s+([0-9]+)\\s+[0-9]+\\s+([^\\r\\n]+)$',
},
extract : {
cmd : '7z',
args : [ 'x', '-o{extractPath}', '{archivePath}', '{fileList}' ],
},
}
},
formats : {
zip : {
sig : '504b0304',
offset : 0,
exts : [ 'zip' ],
tool : '7Zip',
},
'7z' : {
sig : '377abcaf271c',
offset : 0,
exts : [ '7z' ],
tool : '7Zip',
},
arj : {
sig : '60ea',
offset : 0,
exts : [ 'arj' ],
tool : '7Zip',
},
rar : {
sig : '526172211a0700',
offset : 0,
exts : [ 'rar' ],
tool : '7Zip',
}
}
},

View File

@ -143,13 +143,25 @@ function getExistingFileEntriesBySha1(sha1, cb) {
function addNewArchiveFileEnty(fileEntry, filePath, archiveType, cb) {
const archiveUtil = ArchiveUtil.getInstance();
async.series(
async.waterfall(
[
function getArchiveFileList(callback) {
// :TODO: get list of files in archive
function getArchiveFileList(callback) {
archiveUtil.listEntries(filePath, archiveType, (err, entries) => {
return callback(err);
});
return callback(null, entries || []); // ignore any errors here
});
},
function extractDescFiles(entries, callback) {
// :TODO: would be nice if these RegExp's were cached
const shortDescFile = entries.find( e => {
return Config.fileBase.fileNamePatterns.shortDesc.find( pat => new RegExp(pat, 'i').test(e.fileName) );
});
const longDescFile = entries.find( e => {
return Config.fileBase.fileNamePatterns.longDesc.find( pat => new RegExp(pat, 'i').test(e.fileName) );
});
return callback(null);
}
],
err => {