UNPKG

igir

Version:

🕹 A zero-setup ROM collection manager that sorts, filters, extracts or archives, patches, and reports on collections of any size on any OS.

86 lines (85 loc) • 2.97 kB
#!/usr/bin/env node import os from "node:os"; import semver from "semver"; import { logger } from "./src/console/logger.js"; import { LogLevel } from "./src/console/logLevel.js"; import MultiBar from "./src/console/multiBar.js"; import IgirException from "./src/exceptions/igirException.js"; import Package from "./src/globals/package.js"; import Igir from "./src/igir.js"; import ArgumentsParser from "./src/modules/argumentsParser.js"; import EndOfLifeChecker from "./src/modules/endOfLifeChecker.js"; import UpdateChecker from "./src/modules/updateChecker.js"; Error.stackTraceLimit = Math.max(Error.stackTraceLimit, 25); logger.setLogLevel(LogLevel.WARN); logger.printHeader(); if (!process.versions.bun && process.versions.node && !semver.satisfies(process.versions.node, Package.ENGINES_NODE)) { logger.error(`${Package.NAME} requires a Node.js version of ${Package.ENGINES_NODE}`); process.exit(1); } function multiBarStopAndNewline() { const isNewlineNeeded = MultiBar.isActive(); MultiBar.stop(); if (isNewlineNeeded) { logger.newLine(); } } process.once("SIGINT", () => { multiBarStopAndNewline(); logger.notice(`Exiting ${Package.NAME} early`); process.exit(0); }); let options; try { const argv = process.argv.slice(2); options = new ArgumentsParser().parse(argv); logger.setLogLevel(options.getLogLevel()); const debugLog = options.getDebugLog(); if (debugLog !== void 0) { logger.notice(`Writing debug log to: ${debugLog}`); logger.openLogFile(debugLog); } const argvString = argv.map((arg) => { if (!arg.includes(" ")) { return arg; } return `"${arg.replaceAll('"', '\\"')}"`; }).join(" "); logger.trace(`Parsing CLI arguments: ${argvString}`); logger.trace(`Parsed CLI options: ${options.toString()}`); if (options.getHelp()) { process.exit(0); } } catch (error) { logger.error(error); logger.newLine(); process.exit(1); } if (options.getDebugLog()) { logger.trace(`process: ${process.platform} ${process.arch}`); logger.trace(`process.execPath: ${process.execPath}`); logger.trace(`process.versions: ${JSON.stringify(process.versions)}`); logger.trace(`os.version: ${os.version()}`); logger.trace(`os.freemem / os.totalmem: ${os.freemem()} / ${os.totalmem()}`); logger.trace(`os.userInfo: ${JSON.stringify(os.userInfo())}`); logger.trace(`os.cpus: ${JSON.stringify(os.cpus())}`); logger.trace(`os.availableParallelism: ${os.availableParallelism()}`); logger.trace(`package.json: ${JSON.stringify(Package.JSON)}`); } try { new EndOfLifeChecker().check(process.version); void new UpdateChecker().check(); await new Igir(options).main(); MultiBar.stop(); } catch (error) { multiBarStopAndNewline(); if (error instanceof IgirException) { logger.error(error); } else if (error instanceof Error && error.stack) { logger.error(error.stack); } else { logger.error(error); } process.exit(1); } //# sourceMappingURL=index.js.map