lzg
Version:
LZG compression, liblzg LZ77 based minimalist lossless data command line compressor and Node.js library
76 lines (67 loc) • 2.3 kB
JavaScript
(function () {
var path = require("path");
var fs = require("fs");
var chalk = require("chalk");
var program = require("commander");
var filepath = require("filepath");
var lib = path.join(path.dirname(fs.realpathSync(__filename)), "../lib");
var lzg = require(lib + "/lib.js");
require("pkginfo")(module, "version");
var inFilePath = false;
var outFilePath = false;
exports.run = async function () {
program
.version(module.exports.version)
.usage("[options] <inputFile> [outputFile]")
.option("-l, --level [value]", "Compression level", /^[1..9]{1}$/i)
.option("-v, --verbose", "Display debug output", false)
.option("-c, --compress", "Compress (default action)", true)
.option("-d, --decompress", "Decompress", false)
.action(function (inputFile, outputFile, other) {
if (typeof outputFile !== "object") {
outFilePath = outputFile;
}
inFilePath = inputFile;
})
.parse(process.argv);
//----------------------------------------------------------------------
if (!inFilePath) {
console.log(chalk.underline.yellow("Please specify file to compress"));
program.outputHelp();
process.exit();
} else {
program.level = program.level || 9;
program.verbose = program.verbose || false;
var fileIn = filepath.create(inFilePath);
if (!fileIn.exists()) {
console.log(
chalk.underline.red("Specified input file does not exists! ") +
chalk.white(JSON.stringify(inFilePath))
);
process.exit();
}
if (!outFilePath) {
if (program.decompress) {
outFilePath = inFilePath + ".decompressed";
} else {
outFilePath = inFilePath + ".lzx";
}
}
var fileOut = filepath.create(outFilePath);
if (program.decompress) {
await lzg.decompressFileAsync(
fileIn.toString(),
fileOut.toString(),
program.verbose
);
} else {
await lzg.compressFileAsync(
fileIn.toString(),
fileOut.toString(),
program.level,
program.verbose
);
}
}
};
}.call(this));