UNPKG

automin

Version:

"Create a minified mirror version of your js, css, html, json files"

115 lines (114 loc) 5.21 kB
"use strict"; 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)(); } };