Work on new archivers layout, short/long desc file discovery
This commit is contained in:
parent
9593da5626
commit
61b0658743
|
@ -214,9 +214,9 @@ module.exports = class ArchiveUtil {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
const entries = [];
|
const entries = [];
|
||||||
const entryMatchRe = new RegExp(archiver.list.entryMatch, 'g');
|
const entryMatchRe = new RegExp(archiver.list.entryMatch, 'gm');
|
||||||
let m;
|
let m;
|
||||||
while(null !== (m = entryMatchRe.exec(output))) {
|
while((m = entryMatchRe.exec(output))) {
|
||||||
// :TODO: allow alternate ordering!!!
|
// :TODO: allow alternate ordering!!!
|
||||||
entries.push({
|
entries.push({
|
||||||
size : m[1],
|
size : m[1],
|
||||||
|
|
|
@ -226,12 +226,62 @@ function getDefaultConfig() {
|
||||||
list : {
|
list : {
|
||||||
cmd : '7z',
|
cmd : '7z',
|
||||||
args : [ 'l', '{archivePath}' ],
|
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 : {
|
extract : {
|
||||||
cmd : '7z',
|
cmd : '7z',
|
||||||
args : [ 'x', '-o{extractPath}', '{archivePath}', '{fileList}' ],
|
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',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -143,13 +143,25 @@ function getExistingFileEntriesBySha1(sha1, cb) {
|
||||||
function addNewArchiveFileEnty(fileEntry, filePath, archiveType, cb) {
|
function addNewArchiveFileEnty(fileEntry, filePath, archiveType, cb) {
|
||||||
const archiveUtil = ArchiveUtil.getInstance();
|
const archiveUtil = ArchiveUtil.getInstance();
|
||||||
|
|
||||||
async.series(
|
async.waterfall(
|
||||||
[
|
[
|
||||||
function getArchiveFileList(callback) {
|
function getArchiveFileList(callback) {
|
||||||
// :TODO: get list of files in archive
|
|
||||||
archiveUtil.listEntries(filePath, archiveType, (err, entries) => {
|
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 => {
|
err => {
|
||||||
|
|
Loading…
Reference in New Issue