1const fs = require('fs');
2const zlib = require('zlib');
3const crypto = require('crypto');
4
5const reportProgress = new Transform({
6 transform(chunk, encoding, callback) {
7 process.stdout.write('.');
8 callback(null, chunk);
9 }
10});
11
12function compressFile(){
13 const file = process.argv[2];
14 fs.createReadStream(file)
15 .pipe(zlib.createGzip())
16 .pipe(crypto.createCipher('aes128', 'secret'))
17 .pipe(reportProgress)
18 .pipe(fs.createWriteStream(file + '.gz'))
19 .on('finish', () => console.log('Compressed.'));
20}
21
22function uncompressFile(){
23 const file = process.argv[2] + '.gz';
24 fs.createReadStream(file)
25 .pipe(crypto.createDecipher('aes128', 'secret'))
26 .pipe(zlib.createGunzip())
27 .pipe(reportProgress)
28 .pipe(fs.createWriteStream(file.slice(0, -3)))
29 .on('finish', () => console.log('Uncompressed.'));
30}
31
32// usage node script.js xpto.jsonCreated on 7/24/2017