Merge branch 'hotfix/0.3.2'
This commit is contained in:
26
package-lock.json
generated
26
package-lock.json
generated
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Liberama",
|
"name": "Liberama",
|
||||||
"version": "0.2.0",
|
"version": "0.3.2",
|
||||||
"lockfileVersion": 1,
|
"lockfileVersion": 1,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
@@ -3095,6 +3095,30 @@
|
|||||||
"strip-dirs": "^2.0.0"
|
"strip-dirs": "^2.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"decompress-bzip2": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/decompress-bzip2/-/decompress-bzip2-4.0.0.tgz",
|
||||||
|
"integrity": "sha1-0SVMlJ4F6vYol1QoawY/3Hz/AT8=",
|
||||||
|
"requires": {
|
||||||
|
"file-type": "^4.3.0",
|
||||||
|
"seek-bzip": "^1.0.5"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"file-type": {
|
||||||
|
"version": "4.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz",
|
||||||
|
"integrity": "sha1-G2AOX8ofvcboDApwxxyNul95BsU="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"decompress-gz": {
|
||||||
|
"version": "0.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/decompress-gz/-/decompress-gz-0.0.1.tgz",
|
||||||
|
"integrity": "sha512-YMdCWdxHvPplsTbV1tvr2oFJOtAFNxqVMFnKWEmePBXl+LKG5z5bFrowzc12Jzd7O29nnzI/D1M95Asx0Qa1fg==",
|
||||||
|
"requires": {
|
||||||
|
"file-type": "^5.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
"decompress-response": {
|
"decompress-response": {
|
||||||
"version": "3.3.0",
|
"version": "3.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "Liberama",
|
"name": "Liberama",
|
||||||
"version": "0.3.1",
|
"version": "0.3.2",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=10.0.0"
|
"node": ">=10.0.0"
|
||||||
},
|
},
|
||||||
@@ -60,6 +60,8 @@
|
|||||||
"chardet": "^0.7.0",
|
"chardet": "^0.7.0",
|
||||||
"compression": "^1.7.3",
|
"compression": "^1.7.3",
|
||||||
"decompress": "^4.2.0",
|
"decompress": "^4.2.0",
|
||||||
|
"decompress-bzip2": "^4.0.0",
|
||||||
|
"decompress-gz": "0.0.1",
|
||||||
"detect-file-type": "^0.2.0",
|
"detect-file-type": "^0.2.0",
|
||||||
"element-ui": "^2.4.11",
|
"element-ui": "^2.4.11",
|
||||||
"express": "^4.16.4",
|
"express": "^4.16.4",
|
||||||
|
|||||||
@@ -1,8 +1,12 @@
|
|||||||
const fs = require('fs-extra');
|
const fs = require('fs-extra');
|
||||||
const zlib = require('zlib');
|
const zlib = require('zlib');
|
||||||
const crypto = require('crypto');
|
const crypto = require('crypto');
|
||||||
|
const path = require('path');
|
||||||
const utils = require('./utils');
|
const utils = require('./utils');
|
||||||
const decompress = require('decompress');
|
const decompress = require('decompress');
|
||||||
|
const decompressGz = require('decompress-gz');
|
||||||
|
const decompressBzip2 = require('decompress-bzip2');
|
||||||
|
|
||||||
const FileDetector = require('./FileDetector');
|
const FileDetector = require('./FileDetector');
|
||||||
|
|
||||||
class FileDecompressor {
|
class FileDecompressor {
|
||||||
@@ -13,11 +17,33 @@ class FileDecompressor {
|
|||||||
async decompressFile(filename, outputDir) {
|
async decompressFile(filename, outputDir) {
|
||||||
const fileType = await this.detector.detectFile(filename);
|
const fileType = await this.detector.detectFile(filename);
|
||||||
|
|
||||||
if (!fileType || !(fileType.ext == 'zip' || fileType.ext == 'bz2'))
|
if (!fileType || !(fileType.ext == 'zip' || fileType.ext == 'bz2' || fileType.ext == 'gz'))
|
||||||
return filename;
|
return filename;
|
||||||
|
|
||||||
const files = await decompress(filename, outputDir);
|
//дурной decompress, поэтому в 2 этапа
|
||||||
|
//этап 1
|
||||||
|
let files = [];
|
||||||
|
try {
|
||||||
|
files = await decompress(filename, outputDir);
|
||||||
|
} catch (e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
|
||||||
|
//этап 2
|
||||||
|
if (files.length == 0) {
|
||||||
|
try {
|
||||||
|
files = await decompress(filename, outputDir, {
|
||||||
|
inputFile: filename,
|
||||||
|
plugins: [
|
||||||
|
decompressGz(),
|
||||||
|
decompressBzip2({path: path.basename(filename)}),
|
||||||
|
]
|
||||||
|
});
|
||||||
|
} catch (e) {
|
||||||
|
//
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let result = filename;
|
let result = filename;
|
||||||
let max = 0;
|
let max = 0;
|
||||||
if (files.length) {
|
if (files.length) {
|
||||||
@@ -29,6 +55,9 @@ class FileDecompressor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//дурной decompress
|
||||||
|
if (result != filename)
|
||||||
|
await fs.chmod(result, 0o664);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user