var fs = require("fs");
var tok3 = require("./tok3");
var argv = require('minimist')(process.argv.slice(2), { boolean: ["d","a", "r"] });
if (argv._.length != 1) {
process.stderr.write("Usage: node main_tok3.js [-a] [-d] input-file > output-file\n");
process.exit(1);
}
var filein = argv._[0]
var buf = fs.readFileSync(filein);
var blk_size = 1024*1024;
var raw = argv.r
if (!argv.d) {
var pos = 0;
var out_len = 0;
if (raw)
blk_size = buf.length
while (pos < buf.length) {
var blk_end = blk_size;
while (pos+blk_end < buf.length && buf[pos+blk_end-1] != 10)
blk_end--;
var buf2 = tok3.encode(buf.slice(pos, pos+blk_end), argv.a);
var header = new Buffer.allocUnsafe(4);
if (!raw) {
header.writeInt32LE(buf2.length, 0);
process.stdout.write(header)
}
process.stdout.write(buf2)
pos += blk_end;
out_len += buf2.length+4;
}
process.stderr.write("Compress "+buf.length+" => " + out_len + "\n");
} else {
var pos = 0;
var out_len = 0;
var len = buf.length
while (pos < buf.length) {
if (!raw) {
len = buf.readInt32LE(pos);
pos += 4;
}
var buf2 = tok3.decode(buf.slice(pos, pos+len), len);
process.stdout.write(buf2)
out_len += buf2.length;
pos += len;
}
process.stderr.write("Decompress " + buf.length + " => " + out_len + "\n");
}