123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- #!/usr/bin/env node
- "use strict";
- Object.defineProperty(exports, "__esModule", { value: true });
- const semver = require("semver");
- const pkg = require("../../package.json");
- const nodeVersion = process.version;
- if (!semver.satisfies(nodeVersion, pkg.engines.node)) {
- console.error(`Firebase CLI v${pkg.version} is incompatible with Node.js ${nodeVersion} Please upgrade Node.js to version ${pkg.engines.node}`);
- process.exit(1);
- }
- const updateNotifierPkg = require("update-notifier");
- const clc = require("colorette");
- const TerminalRenderer = require("marked-terminal");
- const updateNotifier = updateNotifierPkg({ pkg });
- const marked_1 = require("marked");
- marked_1.marked.setOptions({
- renderer: new TerminalRenderer(),
- });
- const node_path_1 = require("node:path");
- const triple_beam_1 = require("triple-beam");
- const stripAnsi = require("strip-ansi");
- const fs = require("node:fs");
- const configstore_1 = require("../configstore");
- const errorOut_1 = require("../errorOut");
- const handlePreviewToggles_1 = require("../handlePreviewToggles");
- const logger_1 = require("../logger");
- const client = require("..");
- const fsutils = require("../fsutils");
- const utils = require("../utils");
- const winston = require("winston");
- let args = process.argv.slice(2);
- let cmd;
- function findAvailableLogFile() {
- const candidates = ["firebase-debug.log"];
- for (let i = 1; i < 10; i++) {
- candidates.push(`firebase-debug.${i}.log`);
- }
- for (const c of candidates) {
- const logFilename = (0, node_path_1.join)(process.cwd(), c);
- try {
- const fd = fs.openSync(logFilename, "r+");
- fs.closeSync(fd);
- return logFilename;
- }
- catch (e) {
- if (e.code === "ENOENT") {
- return logFilename;
- }
- }
- }
- throw new Error("Unable to obtain permissions for firebase-debug.log");
- }
- const logFilename = findAvailableLogFile();
- if (!process.env.DEBUG && args.includes("--debug")) {
- process.env.DEBUG = "true";
- }
- process.env.IS_FIREBASE_CLI = "true";
- logger_1.logger.add(new winston.transports.File({
- level: "debug",
- filename: logFilename,
- format: winston.format.printf((info) => {
- const segments = [info.message, ...(info[triple_beam_1.SPLAT] || [])].map(utils.tryStringify);
- return `[${info.level}] ${stripAnsi(segments.join(" "))}`;
- }),
- }));
- logger_1.logger.debug("-".repeat(70));
- logger_1.logger.debug("Command: ", process.argv.join(" "));
- logger_1.logger.debug("CLI Version: ", pkg.version);
- logger_1.logger.debug("Platform: ", process.platform);
- logger_1.logger.debug("Node Version: ", process.version);
- logger_1.logger.debug("Time: ", new Date().toString());
- if (utils.envOverrides.length) {
- logger_1.logger.debug("Env Overrides:", utils.envOverrides.join(", "));
- }
- logger_1.logger.debug("-".repeat(70));
- logger_1.logger.debug();
- const experiments_1 = require("../experiments");
- const fetchMOTD_1 = require("../fetchMOTD");
- (0, experiments_1.enableExperimentsFromCliEnvVariable)();
- (0, fetchMOTD_1.fetchMOTD)();
- process.on("exit", (code) => {
- code = process.exitCode || code;
- if (!process.env.DEBUG && code < 2 && fsutils.fileExistsSync(logFilename)) {
- fs.unlinkSync(logFilename);
- }
- if (code > 0 && process.stdout.isTTY) {
- const lastError = configstore_1.configstore.get("lastError") || 0;
- const timestamp = Date.now();
- if (lastError > timestamp - 120000) {
- let help;
- if (code === 1 && cmd) {
- help = "Having trouble? Try " + clc.bold("firebase [command] --help");
- }
- else {
- help = "Having trouble? Try again or contact support with contents of firebase-debug.log";
- }
- if (cmd) {
- console.log();
- console.log(help);
- }
- }
- configstore_1.configstore.set("lastError", timestamp);
- }
- else {
- configstore_1.configstore.delete("lastError");
- }
- try {
- const updateMessage = `Update available ${clc.gray("{currentVersion}")} → ${clc.green("{latestVersion}")}\n` +
- `To update to the latest version using npm, run\n${clc.cyan("npm install -g firebase-tools")}\n` +
- `For other CLI management options, visit the ${(0, marked_1.marked)("[CLI documentation](https://firebase.google.com/docs/cli#update-cli)")}`;
- updateNotifier.notify({ defer: false, isGlobal: true, message: updateMessage });
- }
- catch (err) {
- logger_1.logger.debug("Error when notifying about new CLI updates:");
- if (err instanceof Error) {
- logger_1.logger.debug(err);
- }
- else {
- logger_1.logger.debug(`${err}`);
- }
- }
- });
- process.on("uncaughtException", (err) => {
- (0, errorOut_1.errorOut)(err);
- });
- if (!(0, handlePreviewToggles_1.handlePreviewToggles)(args)) {
- cmd = client.cli.parse(process.argv);
- args = args.filter((arg) => !arg.includes("-"));
- if (!args.length) {
- client.cli.help();
- }
- }
|