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
|
* @returns {Promise} Promise object represents number of files extracted
|
||||||
*/
|
*/
|
||||||
function extractArchive(fileName, tmpDir) {
|
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
|
// Configure archive to use
|
||||||
const archive = new StreamZip({
|
const archive = new StreamZip({
|
||||||
file: fileName,
|
file: fileName,
|
||||||
storeEntries: true,
|
storeEntries: true,
|
||||||
});
|
});
|
||||||
return new Promise((resolve, reject) => {
|
// Handle errors
|
||||||
// Try to extract
|
archive.on('error', (err) =>
|
||||||
|
reject(new Error(`Error extracting archive: ${err}`))
|
||||||
|
);
|
||||||
|
// Extract
|
||||||
archive.on('ready', () => {
|
archive.on('ready', () => {
|
||||||
const extDir = path.join(tmpDir, 'archive');
|
const extDir = path.join(tmpDir, 'archive');
|
||||||
fs.mkdirSync(extDir, { recursive: true });
|
fs.mkdirSync(extDir, { recursive: true });
|
||||||
archive.extract(null, extDir, (err, count) => {
|
archive.extract(null, extDir, (err, count) => {
|
||||||
if (!err) {
|
if (err) throw new Error(err);
|
||||||
archive.close();
|
archive.close();
|
||||||
resolve(count);
|
console.log('Extraction complete');
|
||||||
} else {
|
return resolve(count);
|
||||||
const errMsg = 'Error extracting archive';
|
|
||||||
console.err(errMsg);
|
|
||||||
archive.close();
|
|
||||||
reject(errMsg);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
return true;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user