UNPKG

node-pkware

Version:

nodejs implementation of StormLib's pkware compressor/de-compressor

56 lines 1.77 kB
#!/usr/bin/env -S node --enable-source-maps import process from 'node:process'; import minimist from 'minimist-lite'; import { getPackageVersion, parseNumberString, getInputStream, getOutputStream } from './helpers.js'; import { transformEmpty, transformIdentity, transformSplitBy, splitAt, through, } from '../stream.js'; import { explode } from '../index.js'; const args = minimist(process.argv.slice(2), { string: ['output', 'offset'], boolean: ['version', 'drop-before-offset', 'verbose'], alias: { v: 'version', }, }); async function decompress(input, output, offset, keepHeader, config) { let leftHandler; if (keepHeader) { leftHandler = transformIdentity(); } else { leftHandler = transformEmpty(); } const rightHandler = explode(config); const handler = transformSplitBy(splitAt(offset), leftHandler, rightHandler); return new Promise((resolve, reject) => { input.pipe(through(handler).on('error', reject)).pipe(output).on('finish', resolve).on('error', reject); }); } if (args.version) { const version = await getPackageVersion(); console.log(`node-pkware - version ${version}`); process.exit(0); } let input; let output; try { input = await getInputStream(args._[0]); output = await getOutputStream(args.output); } catch (error) { console.error('error:', error.message); process.exit(1); } const offset = parseNumberString(args.offset, 0); const keepHeader = !args['drop-before-offset']; const config = { verbose: args.verbose, }; try { await decompress(input, output, offset, keepHeader, config); process.exit(0); } catch (error) { console.error('error:', error.message); process.exit(1); } //# sourceMappingURL=explode.js.map