fix extractArchive
This commit is contained in:
parent
702245e0bd
commit
9d2c8f1778
31
index.js
31
index.js
@ -44,28 +44,39 @@ function handleError(e) {
|
||||
* @returns {Promise} Promise object represents number of files extracted
|
||||
*/
|
||||
function extractArchive(fileName, tmpDir) {
|
||||
return new Promise((resolve, reject) => {
|
||||
// Check archive exists
|
||||
try {
|
||||
if (!fs.existsSync(fileName)) {
|
||||
return reject(new Error('Archive does not exist.'));
|
||||
}
|
||||
if (!fs.existsSync(tmpDir)) {
|
||||
return reject(new Error('Temporary folder does not exist.'));
|
||||
}
|
||||
} catch (e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
// Configure archive to use
|
||||
const archive = new StreamZip({
|
||||
file: fileName,
|
||||
storeEntries: true,
|
||||
});
|
||||
return new Promise((resolve, reject) => {
|
||||
// Try to extract
|
||||
// Handle errors
|
||||
archive.on('error', (err) =>
|
||||
reject(new Error(`Error extracting archive: ${err}`))
|
||||
);
|
||||
// Extract
|
||||
archive.on('ready', () => {
|
||||
const extDir = path.join(tmpDir, 'archive');
|
||||
fs.mkdirSync(extDir, { recursive: true });
|
||||
archive.extract(null, extDir, (err, count) => {
|
||||
if (!err) {
|
||||
if (err) throw new Error(err);
|
||||
archive.close();
|
||||
resolve(count);
|
||||
} else {
|
||||
const errMsg = 'Error extracting archive';
|
||||
console.err(errMsg);
|
||||
archive.close();
|
||||
reject(errMsg);
|
||||
}
|
||||
console.log('Extraction complete');
|
||||
return resolve(count);
|
||||
});
|
||||
});
|
||||
return true;
|
||||
});
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user