@ffflorian/jszip-cli
Advanced tools
+34
-6
@@ -5,5 +5,5 @@ #!/usr/bin/env node | ||
| var program = require("commander"); | ||
| var path = require("path"); | ||
| var _1 = require("./"); | ||
| var _a = require('../package.json'), name = _a.name, version = _a.version, description = _a.description; | ||
| program.on('command:*', function () { return program.help(); }); | ||
| program | ||
@@ -13,12 +13,40 @@ .name(name.replace(/^@[^/]+\//, '')) | ||
| .description(description) | ||
| .option('-l, --level <number>', 'Specify the compression level', 5) | ||
| .option('-o, --output <dir>', 'Specify the output directory (default: stdout)') | ||
| .option('-i, --ignore <entry>', 'Ignore a file or directory'); | ||
| program | ||
| .command('add') | ||
| .description('Add files to the ZIP archive.') | ||
| .option('-l, --level <number>', 'Specify the compression level', 5) | ||
| .option('-o, --output <dir>', 'Specify the output directory (default: stdout)') | ||
| .option('-i, --ignore <entry>', 'Ignore a file or directory') | ||
| .arguments('<entries...>') | ||
| .option('-o, --output <dir>', 'Specify the output directory', path.resolve('.', 'data.zip')) | ||
| .option('-i, --ignore <entry>', 'Ignore a file or directory') | ||
| .action(function (entries, options) { | ||
| new _1.JSZipCLI({ | ||
| entries: entries, | ||
| ignoreEntries: options.ignore ? [options.ignore] : undefined, | ||
| outputFile: options.output, | ||
| ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined, | ||
| level: options.parent.level, | ||
| outputEntry: options.parent.output, | ||
| }) | ||
| .add(entries) | ||
| .save() | ||
| .then(function () { | ||
| if (options.parent.output) { | ||
| console.log('Done.'); | ||
| } | ||
| }) | ||
| .catch(console.error); | ||
| }); | ||
| program | ||
| .command('extract') | ||
| .description('Extract files from ZIP archive(s).') | ||
| .option('-l, --level <number>', 'Specify the compression level', 5) | ||
| .option('-o, --output <dir>', 'Specify the output directory (default: stdout)') | ||
| .option('-i, --ignore <entry>', 'Ignore a file or directory') | ||
| .arguments('<archives...>') | ||
| .action(function (files, options) { | ||
| new _1.JSZipCLI({ | ||
| ignoreEntries: options.parent.ignore ? [options.parent.ignore] : undefined, | ||
| outputEntry: options.parent.output, | ||
| }) | ||
| .extract(files) | ||
| .then(function () { return console.log('Done.'); }) | ||
@@ -25,0 +53,0 @@ .catch(console.error); |
+1
-1
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AACrC,2BAA6B;AAE7B,uBAA4B;AAEtB,IAAA,+BAA+G,EAA9G,cAAI,EAAE,oBAAO,EAAE,4BAAW,CAAqF;AAEtH,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACnC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,WAAW,CAAC;KACxB,SAAS,CAAC,cAAc,CAAC;KACzB,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;KAC3F,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,MAAM,CAAC,UAAC,OAAO,EAAE,OAAO;IACvB,IAAI,WAAQ,CAAC;QACX,OAAO,SAAA;QACP,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC5D,UAAU,EAAE,OAAO,CAAC,MAAM;KAC3B,CAAC;SACC,IAAI,EAAE;SACN,IAAI,CAAC,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAApB,CAAoB,CAAC;SAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,OAAO,CAAC,IAAI,EAAE,CAAC;CAChB"} | ||
| {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AAEA,mCAAqC;AAErC,uBAA4B;AAEtB,IAAA,+BAA+G,EAA9G,cAAI,EAAE,oBAAO,EAAE,4BAAW,CAAqF;AAEtH,OAAO,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,OAAA,OAAO,CAAC,IAAI,EAAE,EAAd,CAAc,CAAC,CAAC;AAE9C,OAAO;KACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;KACnC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC;KACjC,WAAW,CAAC,WAAW,CAAC;KACxB,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC,CAAC;AAEhE,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,+BAA+B,CAAC;KAC5C,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,SAAS,CAAC,cAAc,CAAC;KACzB,MAAM,CAAC,UAAC,OAAO,EAAE,OAAO;IACvB,IAAI,WAAQ,CAAC;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK;QAC3B,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;KACnC,CAAC;SACC,GAAG,CAAC,OAAO,CAAC;SACZ,IAAI,EAAE;SACN,IAAI,CAAC;QACJ,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE;YACzB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;SACtB;IACH,CAAC,CAAC;SACD,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,sBAAsB,EAAE,+BAA+B,EAAE,CAAC,CAAC;KAClE,MAAM,CAAC,oBAAoB,EAAE,gDAAgD,CAAC;KAC9E,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,CAAC;KAC5D,SAAS,CAAC,eAAe,CAAC;KAC1B,MAAM,CAAC,UAAC,KAAK,EAAE,OAAO;IACrB,IAAI,WAAQ,CAAC;QACX,aAAa,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS;QAC1E,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM;KACnC,CAAC;SACC,OAAO,CAAC,KAAK,CAAC;SACd,IAAI,CAAC,cAAM,OAAA,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,EAApB,CAAoB,CAAC;SAChC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC1B,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;IACjC,OAAO,CAAC,IAAI,EAAE,CAAC;CAChB"} |
+14
-6
@@ -0,17 +1,25 @@ | ||
| /// <reference types="node" /> | ||
| export interface CLIOptions { | ||
| entries: string[]; | ||
| ignoreEntries?: string[]; | ||
| outputFile: string; | ||
| level?: number; | ||
| outputEntry?: string; | ||
| } | ||
| export declare class JSZipCLI { | ||
| private readonly jszip; | ||
| private jszip; | ||
| private entries; | ||
| private ignoreEntries; | ||
| private outputDir; | ||
| constructor({ entries, ignoreEntries, outputFile }: CLIOptions); | ||
| private compressionLevel; | ||
| private outputEntry; | ||
| constructor(options: CLIOptions); | ||
| private addFile; | ||
| private checkFile; | ||
| private checkEntry; | ||
| private addLink; | ||
| private walkDir; | ||
| add(entries: string[]): JSZipCLI; | ||
| private ensureDir; | ||
| extract(files: string[]): Promise<void>; | ||
| getBuffer(): Promise<Buffer>; | ||
| private printStream; | ||
| private writeFile; | ||
| save(): Promise<void>; | ||
| } |
+201
-33
@@ -42,16 +42,22 @@ "use strict"; | ||
| var util_1 = require("util"); | ||
| var fsLstatPromise = util_1.promisify(fs.lstat); | ||
| var fsReadDirPromise = util_1.promisify(fs.readdir); | ||
| var fsReadFilePromise = util_1.promisify(fs.readFile); | ||
| var fsReadLinkPromise = util_1.promisify(fs.readlink); | ||
| var fsWriteFilePromise = util_1.promisify(fs.writeFile); | ||
| var fsPromise = { | ||
| access: util_1.promisify(fs.access), | ||
| chmod: util_1.promisify(fs.writeFile), | ||
| lstat: util_1.promisify(fs.lstat), | ||
| mkdir: util_1.promisify(fs.mkdir), | ||
| readDir: util_1.promisify(fs.readdir), | ||
| readFile: util_1.promisify(fs.readFile), | ||
| readLink: util_1.promisify(fs.readlink), | ||
| writeFile: util_1.promisify(fs.writeFile), | ||
| }; | ||
| var JSZipCLI = /** @class */ (function () { | ||
| function JSZipCLI(_a) { | ||
| var _b = _a.entries, entries = _b === void 0 ? [] : _b, _c = _a.ignoreEntries, ignoreEntries = _c === void 0 ? [] : _c, _d = _a.outputFile, outputFile = _d === void 0 ? '.' : _d; | ||
| function JSZipCLI(options) { | ||
| var _a = options || {}, _b = _a.ignoreEntries, ignoreEntries = _b === void 0 ? [] : _b, _c = _a.level, level = _c === void 0 ? 5 : _c, _d = _a.outputEntry, outputEntry = _d === void 0 ? null : _d; | ||
| this.jszip = new JSZip(); | ||
| this.entries = entries; | ||
| this.compressionLevel = level; | ||
| this.entries = []; | ||
| this.ignoreEntries = ignoreEntries.map(function (entry) { return new RegExp(entry.replace('*', '.*')); }); | ||
| this.outputDir = path.resolve(outputFile); | ||
| this.outputEntry = typeof outputEntry === 'string' ? path.resolve(outputEntry) : outputEntry; | ||
| } | ||
| JSZipCLI.prototype.addFile = function (filePath) { | ||
| JSZipCLI.prototype.addFile = function (filePath, fileMode) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
@@ -61,6 +67,10 @@ var fileData; | ||
| switch (_a.label) { | ||
| case 0: return [4 /*yield*/, fsReadFilePromise(filePath)]; | ||
| case 0: return [4 /*yield*/, fsPromise.readFile(filePath)]; | ||
| case 1: | ||
| fileData = _a.sent(); | ||
| this.jszip.file(filePath, fileData); | ||
| this.jszip.file(filePath, fileData, { | ||
| compression: '', | ||
| dosPermissions: fileMode, | ||
| unixPermissions: fileMode, | ||
| }); | ||
| return [2 /*return*/]; | ||
@@ -71,3 +81,3 @@ } | ||
| }; | ||
| JSZipCLI.prototype.checkFile = function (filePath) { | ||
| JSZipCLI.prototype.checkEntry = function (filePath) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
@@ -77,3 +87,3 @@ var fileStat, ignoreEntry; | ||
| switch (_a.label) { | ||
| case 0: return [4 /*yield*/, fsLstatPromise(filePath)]; | ||
| case 0: return [4 /*yield*/, fsPromise.lstat(filePath)]; | ||
| case 1: | ||
@@ -85,4 +95,4 @@ fileStat = _a.sent(); | ||
| } | ||
| if (!fileStat.isSymbolicLink()) return [3 /*break*/, 3]; | ||
| return [4 /*yield*/, this.addLink(filePath)]; | ||
| if (!fileStat.isDirectory()) return [3 /*break*/, 3]; | ||
| return [4 /*yield*/, this.walkDir(filePath)]; | ||
| case 2: | ||
@@ -92,4 +102,4 @@ _a.sent(); | ||
| case 3: | ||
| if (!fileStat.isDirectory()) return [3 /*break*/, 5]; | ||
| return [4 /*yield*/, this.walkDir(filePath)]; | ||
| if (!fileStat.isFile()) return [3 /*break*/, 5]; | ||
| return [4 /*yield*/, this.addFile(filePath, fileStat.mode)]; | ||
| case 4: | ||
@@ -99,4 +109,4 @@ _a.sent(); | ||
| case 5: | ||
| if (!fileStat.isFile()) return [3 /*break*/, 7]; | ||
| return [4 /*yield*/, this.addFile(filePath)]; | ||
| if (!fileStat.isSymbolicLink()) return [3 /*break*/, 7]; | ||
| return [4 /*yield*/, this.addLink(filePath, fileStat.mode)]; | ||
| case 6: | ||
@@ -111,3 +121,3 @@ _a.sent(); | ||
| }; | ||
| JSZipCLI.prototype.addLink = function (filePath) { | ||
| JSZipCLI.prototype.addLink = function (linkPath, fileMode) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
@@ -117,6 +127,9 @@ var fileData; | ||
| switch (_a.label) { | ||
| case 0: return [4 /*yield*/, fsReadLinkPromise(filePath)]; | ||
| case 0: return [4 /*yield*/, fsPromise.readLink(linkPath)]; | ||
| case 1: | ||
| fileData = _a.sent(); | ||
| this.jszip.file(filePath, fileData); | ||
| this.jszip.file(linkPath, fileData, { | ||
| dosPermissions: fileMode, | ||
| unixPermissions: fileMode, | ||
| }); | ||
| return [2 /*return*/]; | ||
@@ -132,3 +145,3 @@ } | ||
| switch (_a.label) { | ||
| case 0: return [4 /*yield*/, fsReadDirPromise(filePath)]; | ||
| case 0: return [4 /*yield*/, fsPromise.readDir(filePath)]; | ||
| case 1: | ||
@@ -142,3 +155,3 @@ files = _a.sent(); | ||
| newPath = path.join(filePath, file); | ||
| return [4 /*yield*/, this.checkFile(newPath)]; | ||
| return [4 /*yield*/, this.checkEntry(newPath)]; | ||
| case 3: | ||
@@ -155,2 +168,153 @@ _a.sent(); | ||
| }; | ||
| JSZipCLI.prototype.add = function (entries) { | ||
| this.entries = entries; | ||
| return this; | ||
| }; | ||
| JSZipCLI.prototype.ensureDir = function (dirPath) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var error_1; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| _a.trys.push([0, 2, , 4]); | ||
| return [4 /*yield*/, fsPromise.access(dirPath, fs.constants.R_OK)]; | ||
| case 1: | ||
| _a.sent(); | ||
| return [3 /*break*/, 4]; | ||
| case 2: | ||
| error_1 = _a.sent(); | ||
| return [4 /*yield*/, fsPromise.mkdir(dirPath)]; | ||
| case 3: | ||
| _a.sent(); | ||
| return [3 /*break*/, 4]; | ||
| case 4: return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| JSZipCLI.prototype.extract = function (files) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var _loop_1, this_1, _i, files_2, file, state_1; | ||
| var _this = this; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| _loop_1 = function (file) { | ||
| var jszip, resolvedPath, data, entries; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| jszip = new JSZip(); | ||
| if (!this_1.outputEntry) return [3 /*break*/, 2]; | ||
| return [4 /*yield*/, this_1.ensureDir(this_1.outputEntry)]; | ||
| case 1: | ||
| _a.sent(); | ||
| _a.label = 2; | ||
| case 2: | ||
| resolvedPath = path.resolve(file); | ||
| return [4 /*yield*/, fsPromise.readFile(resolvedPath)]; | ||
| case 3: | ||
| data = _a.sent(); | ||
| return [4 /*yield*/, jszip.loadAsync(data, { createFolders: true })]; | ||
| case 4: | ||
| _a.sent(); | ||
| if (!this_1.outputEntry) { | ||
| this_1.printStream(jszip.generateNodeStream()); | ||
| return [2 /*return*/, { value: void 0 }]; | ||
| } | ||
| entries = []; | ||
| jszip.forEach(function (filePath, entry) { return entries.push([filePath, entry]); }); | ||
| return [4 /*yield*/, Promise.all(entries.map(function (_a) { | ||
| var filePath = _a[0], entry = _a[1]; | ||
| return __awaiter(_this, void 0, void 0, function () { | ||
| var resolvedFilePath, data_1; | ||
| return __generator(this, function (_b) { | ||
| switch (_b.label) { | ||
| case 0: | ||
| resolvedFilePath = path.join(this.outputEntry, filePath); | ||
| if (!entry.dir) return [3 /*break*/, 2]; | ||
| return [4 /*yield*/, this.ensureDir(resolvedFilePath)]; | ||
| case 1: | ||
| _b.sent(); | ||
| return [3 /*break*/, 6]; | ||
| case 2: return [4 /*yield*/, entry.async('nodebuffer')]; | ||
| case 3: | ||
| data_1 = _b.sent(); | ||
| return [4 /*yield*/, fsPromise.writeFile(resolvedFilePath, data_1, { | ||
| encoding: 'utf-8', | ||
| })]; | ||
| case 4: | ||
| _b.sent(); | ||
| if (!entry.unixPermissions) return [3 /*break*/, 6]; | ||
| return [4 /*yield*/, fsPromise.chmod(resolvedFilePath, entry.unixPermissions)]; | ||
| case 5: | ||
| _b.sent(); | ||
| _b.label = 6; | ||
| case 6: return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| }))]; | ||
| case 5: | ||
| _a.sent(); | ||
| return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }; | ||
| this_1 = this; | ||
| _i = 0, files_2 = files; | ||
| _a.label = 1; | ||
| case 1: | ||
| if (!(_i < files_2.length)) return [3 /*break*/, 4]; | ||
| file = files_2[_i]; | ||
| return [5 /*yield**/, _loop_1(file)]; | ||
| case 2: | ||
| state_1 = _a.sent(); | ||
| if (typeof state_1 === "object") | ||
| return [2 /*return*/, state_1.value]; | ||
| _a.label = 3; | ||
| case 3: | ||
| _i++; | ||
| return [3 /*break*/, 1]; | ||
| case 4: return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| JSZipCLI.prototype.getBuffer = function () { | ||
| var compressionType = this.compressionLevel === 0 ? 'STORE' : 'DEFLATE'; | ||
| return this.jszip.generateAsync({ | ||
| type: 'nodebuffer', | ||
| compression: compressionType, | ||
| compressionOptions: { | ||
| level: this.compressionLevel, | ||
| }, | ||
| }); | ||
| }; | ||
| JSZipCLI.prototype.printStream = function (fileStream) { | ||
| return new Promise(function (resolve, reject) { | ||
| var stream = fileStream.pipe(process.stdout); | ||
| stream.on('finish', resolve); | ||
| stream.on('error', reject); | ||
| }); | ||
| }; | ||
| JSZipCLI.prototype.writeFile = function (data, filePath) { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var error_2; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| _a.trys.push([0, 2, , 3]); | ||
| return [4 /*yield*/, fsPromise.access(filePath, fs.constants.R_OK)]; | ||
| case 1: | ||
| _a.sent(); | ||
| return [3 /*break*/, 3]; | ||
| case 2: | ||
| error_2 = _a.sent(); | ||
| return [2 /*return*/, fsPromise.writeFile(data, filePath)]; | ||
| case 3: return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| JSZipCLI.prototype.save = function () { | ||
@@ -162,16 +326,20 @@ return __awaiter(this, void 0, void 0, function () { | ||
| switch (_a.label) { | ||
| case 0: | ||
| if (!this.outputDir.match(/\.\w+$/)) { | ||
| this.outputDir = path.join(this.outputDir, 'data.zip'); | ||
| } | ||
| return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkFile(entry); }))]; | ||
| case 0: return [4 /*yield*/, Promise.all(this.entries.map(function (entry) { return _this.checkEntry(entry); }))]; | ||
| case 1: | ||
| _a.sent(); | ||
| return [4 /*yield*/, this.jszip.generateAsync({ type: 'nodebuffer' })]; | ||
| return [4 /*yield*/, this.getBuffer()]; | ||
| case 2: | ||
| data = _a.sent(); | ||
| return [4 /*yield*/, fsWriteFilePromise(this.outputDir, data)]; | ||
| if (!this.outputEntry) return [3 /*break*/, 4]; | ||
| if (!this.outputEntry.match(/\.\w+$/)) { | ||
| this.outputEntry = path.join(this.outputEntry, 'data.zip'); | ||
| } | ||
| return [4 /*yield*/, this.writeFile(data, this.outputEntry)]; | ||
| case 3: | ||
| _a.sent(); | ||
| return [2 /*return*/]; | ||
| return [3 /*break*/, 5]; | ||
| case 4: | ||
| process.stdout.write(data); | ||
| _a.label = 5; | ||
| case 5: return [2 /*return*/]; | ||
| } | ||
@@ -178,0 +346,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
+1
-1
@@ -34,3 +34,3 @@ { | ||
| "types": "dist/index.d.ts", | ||
| "version": "1.0.0" | ||
| "version": "1.1.0" | ||
| } |
+18
-5
@@ -12,3 +12,3 @@ # jszip-cli [](https://travis-ci.org/ffflorian/jszip-cli/) [](https://dependabot.com) | ||
| ``` | ||
| Usage: jszip-cli [options] <entries...> | ||
| Usage: jszip-cli [options] [command] | ||
@@ -19,6 +19,19 @@ A zip CLI based on jszip. | ||
| -v, --version output the version number | ||
| -o, --output <dir> Specify the output directory (default: Current folder) | ||
| -i, --ignore <entry> Ignore a file or directory | ||
| -h, --help output usage information | ||
| -v, --version output the version number | ||
| -l, --level <number> Specify the compression level (default: 5) | ||
| -o, --output <dir> Specify the output directory (default: stdout) | ||
| -i, --ignore <entry> Ignore a file or directory | ||
| -h, --help output usage information | ||
| Commands: | ||
| add [options] <entries...> Add files to the ZIP archive. | ||
| extract [options] <archives...> Extract files from ZIP archive(s). | ||
| ``` | ||
| ## Examples | ||
| ``` | ||
| jszip-cli add dist package.json -i *.map -o deploy.zip | ||
| jszip-cli extract deploy.zip -o my_deployment/ | ||
| ``` |
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
30803
90.1%421
94.01%36
56.52%5
66.67%