"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const envinfo_1 = __importDefault(require("envinfo")); class InfoCommand { // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any async apply(cli) { await cli.makeCommand({ name: "info", alias: "i", description: "Outputs information about your system.", usage: "[options]", pkg: "@webpack-cli/info", }, [ { name: "output", alias: "o", configs: [ { type: "string", }, ], description: "To get the output in a specified format ( accept json or markdown )", }, { name: "additional-package", alias: "a", configs: [{ type: "string" }], multiple: true, description: "Adds additional packages to the output", }, ], async (options) => { let { output } = options; const envinfoConfig = {}; if (output) { // Remove quotes if exist output = output.replace(/['"]+/g, ""); switch (output) { case "markdown": envinfoConfig["markdown"] = true; break; case "json": envinfoConfig["json"] = true; break; default: cli.logger.error(`'${output}' is not a valid value for output`); process.exit(2); } } const defaultInformation = { Binaries: ["Node", "Yarn", "npm"], Browsers: [ "Brave Browser", "Chrome", "Chrome Canary", "Edge", "Firefox", "Firefox Developer Edition", "Firefox Nightly", "Internet Explorer", "Safari", "Safari Technology Preview", ], Monorepos: ["Yarn Workspaces", "Lerna"], System: ["OS", "CPU", "Memory"], npmGlobalPackages: ["webpack", "webpack-cli", "webpack-dev-server"], npmPackages: "{*webpack*,*loader*}", }; let defaultPackages = ["webpack", "loader"]; if (typeof options.additionalPackage !== "undefined") { defaultPackages = [...defaultPackages, ...options.additionalPackage]; } defaultInformation.npmPackages = `{${defaultPackages .map((item) => `*${item}*`) .join(",")}}`; let info = await envinfo_1.default.run(defaultInformation, envinfoConfig); info = info.replace(/npmPackages/g, "Packages"); info = info.replace(/npmGlobalPackages/g, "Global Packages"); cli.logger.raw(info); }); } } exports.default = InfoCommand;