automin
Version:
"Create a minified mirror version of your js, css, html, json files"
115 lines (114 loc) • 5.21 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const env_res_1 = __importDefault(require("env-res"));
const commander_1 = require("commander");
// @ts-ignore
const package_json_1 = __importDefault(require("../package.json"));
const fs_1 = require("fs");
const path_1 = require("path");
// import { platform } from 'node:process';
const start_1 = __importDefault(require("./start"));
const merge_overwrite_1 = __importDefault(require("./components/merge-overwrite"));
/**
* Validate Inputs
* */
exports.default = () => {
const cmd = new commander_1.Command();
cmd
.version(package_json_1.default.version, "-v, --version")
.usage(`-i <input directory> -o <output directory> [options]`)
.description(`${package_json_1.default.description}\n Version:${package_json_1.default.version}`)
.option("-i, --input <directory>", "An absolute input folder where files needs ti be minified")
.option("-o, --output <directory>", "An absolute output folder where can be place minified version of an input files")
.option("--overwrite", "Remove all contents of output directory before to start", false)
.option("--merge", "Keep old files from output directory and overwrite the files that has been processed from input directory", false);
const { input, output, merge, overwrite } = cmd.parse(process.argv).opts();
cmd.addHelpText("after", "-".repeat(process.stdout.columns));
/**
*
* I dont want to use required option of Commander
* */
const has = {
error: false
};
if (!input || !output) {
cmd.addHelpText("after", " * Input or output cannot be empty");
cmd.help();
process.exit(-1);
}
// Check if input directory absolute
// Check if input directory does exists
if (!((0, path_1.isAbsolute)(input) && (0, fs_1.existsSync)(input))) {
cmd.addHelpText("after", " * Input should be an absolute directory and does exists");
cmd.addHelpText("after", " Tip: You can use 'pwd' for linux and 'cd' for windows to get current directory\n");
has.error = true;
}
// Check if output directory is absolute
// Check if output directory does exists
if (!((0, path_1.isAbsolute)(output) && (0, fs_1.existsSync)(output))) {
cmd.addHelpText("after", " * Output should be an absolute directory and does exists");
cmd.addHelpText("after", " Tip: You can use 'pwd' for linux and 'cd' for windows to get current directory\n");
has.error = true;
}
// Check if one of the directory is a sub folder of the other
let a = input.toLowerCase().trim();
let b = output.toLowerCase().trim();
if ((0, path_1.normalize)(a) == (0, path_1.normalize)(b)) {
cmd.addHelpText("after", "Input and output folder cannot be the same\n");
has.error = true;
}
// Check if one of the directory is a sub of the other directory
if (a.length > b.length)
[a,
b] = [b,
a];
if (b.substring(0, a.length) == a) {
cmd.addHelpText("after", " * Input or output directory cannot be a sub folder of the opposite directory\n"); // I'm not sure about this.
has.error = true;
}
// Check if input folder contains any files
// If no files is able to process, just copy and paste it
// into desired destination
if (!has.error && (0, fs_1.readdirSync)(input).length < 1) {
cmd.addHelpText("after", " * It looks like input folder is empty\n");
has.error = true;
}
// Check if output folder contains any files but both --overwrite and --merge is false
if (!has.error && !(overwrite || merge) && (0, fs_1.readdirSync)(output).length > 0) {
cmd.addHelpText("after", " * It looks like outout folder contains any files");
cmd.addHelpText("after", " Tip: You can use --overwrite or --merge flag to solve this");
cmd.addHelpText("after", " Check --help to see more\n");
has.error = true;
}
// Check if overwrite and merge is both true
// This is a conflict since one of them is useless if we keep
// both of them is true
if (overwrite && merge) {
cmd.addHelpText("after", " * You cannot use --merge and --overwrite at the same time\n");
has.error = true;
}
if (has.error) {
cmd.help();
process.exit(-1);
}
env_res_1.default.set("input", input);
env_res_1.default.set("output", output);
env_res_1.default.set("overwrite", overwrite);
env_res_1.default.set("merge", merge);
if (env_res_1.default.get("overwrite") == true) {
console.log("Emptying...");
const count = (0, merge_overwrite_1.default)(env_res_1.default.get("output"), (err) => {
if (err)
console.error("Emptied with errors");
console.log(`Total of ${count} files and folders has been deleted\n`);
if (!err)
(0, start_1.default)();
});
}
else {
(0, start_1.default)();
}
};