UNPKG

@harryisfish/gitt

Version:

A command-line tool to help you manage Git repositories and remote repositories, such as keeping in sync, pushing, pulling, etc.

64 lines (63 loc) 2.18 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.UserCancelError = exports.GitError = void 0; exports.handleError = handleError; exports.printSuccess = printSuccess; exports.printError = printError; const chalk_1 = __importDefault(require("chalk")); // Custom error types class GitError extends Error { constructor(message, cause) { super(message); this.name = 'GitError'; this.cause = cause; // Preserve stack trace from the cause if available if (cause === null || cause === void 0 ? void 0 : cause.stack) { this.stack = `${this.stack}\nCaused by: ${cause.stack}`; } } } exports.GitError = GitError; class UserCancelError extends Error { constructor(message = 'Operation cancelled') { super(message); this.name = 'UserCancelError'; } } exports.UserCancelError = UserCancelError; // Unified error handling function function handleError(error) { if (error instanceof UserCancelError) { console.log(error.message); process.exit(0); } if (error instanceof GitError) { console.error(chalk_1.default.red('Error:'), error.message); // In development mode, show full stack trace if (process.env.DEBUG || process.env.VERBOSE) { console.error(chalk_1.default.gray(error.stack)); } process.exit(1); } if (error instanceof Error) { console.error(chalk_1.default.red('Program error:'), error.message); // In development mode, show full stack trace if (process.env.DEBUG || process.env.VERBOSE) { console.error(chalk_1.default.gray(error.stack)); } process.exit(1); } console.error(chalk_1.default.red('Unknown error occurred')); process.exit(1); } // Success message handler function printSuccess(message) { console.log(chalk_1.default.green('✓'), message); } // Error message handler function printError(message) { console.error(chalk_1.default.red(message)); }