Syllabus/themes/piratecare/node_modules/tailwindcss/lib/cli/utils.js

179 lines
4.4 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.parseCliParams = parseCliParams;
exports.parseCliOptions = parseCliOptions;
exports.log = log;
exports.header = header;
exports.footer = footer;
exports.error = error;
exports.die = die;
exports.exists = exists;
exports.copyFile = copyFile;
exports.readFile = readFile;
exports.writeFile = writeFile;
exports.getSimplePath = getSimplePath;
var _fsExtra = require("fs-extra");
var _lodash = require("lodash");
var colors = _interopRequireWildcard(require("./colors"));
var emoji = _interopRequireWildcard(require("./emoji"));
var _package = _interopRequireDefault(require("../../package.json"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
/**
* Gets CLI parameters.
*
* @param {string[]} cliArgs
* @return {string[]}
*/
function parseCliParams(cliArgs) {
const firstOptionIndex = cliArgs.findIndex(cliArg => cliArg.startsWith('-'));
return firstOptionIndex > -1 ? cliArgs.slice(0, firstOptionIndex) : cliArgs;
}
/**
* Gets mapped CLI options.
*
* @param {string[]} cliArgs
* @param {object} [optionMap]
* @return {object}
*/
function parseCliOptions(cliArgs, optionMap = {}) {
let options = {};
let currentOption = [];
cliArgs.forEach(cliArg => {
const option = cliArg.startsWith('-') && (0, _lodash.trimStart)(cliArg, '-').toLowerCase();
const resolvedOption = (0, _lodash.findKey)(optionMap, aliases => aliases.includes(option));
if (resolvedOption) {
currentOption = options[resolvedOption] || (options[resolvedOption] = []);
} else if (option) {
currentOption = [];
} else {
currentOption.push(cliArg);
}
});
return { ...(0, _lodash.mapValues)(optionMap, () => undefined),
...options
};
}
/**
* Prints messages to console.
*
* @param {...string} [msgs]
*/
function log(...msgs) {
console.log(' ', ...msgs);
}
/**
* Prints application header to console.
*/
function header() {
log();
log(colors.bold(_package.default.name), colors.info(_package.default.version));
}
/**
* Prints application footer to console.
*/
function footer() {
log();
}
/**
* Prints error messages to console.
*
* @param {...string} [msgs]
*/
function error(...msgs) {
log();
console.error(' ', emoji.no, colors.error(msgs.join(' ')));
}
/**
* Kills the process. Optionally prints error messages to console.
*
* @param {...string} [msgs]
*/
function die(...msgs) {
msgs.length && error(...msgs);
footer();
process.exit(1); // eslint-disable-line
}
/**
* Checks if path exists.
*
* @param {string} path
* @return {boolean}
*/
function exists(path) {
return (0, _fsExtra.existsSync)(path);
}
/**
* Copies file source to destination.
*
* @param {string} source
* @param {string} destination
*/
function copyFile(source, destination) {
(0, _fsExtra.copyFileSync)(source, destination);
}
/**
* Gets file content.
*
* @param {string} path
* @return {string}
*/
function readFile(path) {
return (0, _fsExtra.readFileSync)(path, 'utf-8');
}
/**
* Writes content to file.
*
* @param {string} path
* @param {string} content
* @return {string}
*/
function writeFile(path, content) {
(0, _fsExtra.ensureFileSync)(path);
return (0, _fsExtra.outputFileSync)(path, content);
}
/**
* Strips leading ./ from path
*
* @param {string} path
* @return {string}
*/
function getSimplePath(path) {
return (0, _lodash.startsWith)(path, './') ? path.slice(2) : path;
}