@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
JavaScript
;
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));
}