UNPKG

sourcecontrol

Version:

A modern TypeScript CLI application for source control

165 lines 10.8 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.displayWelcome = exports.displayError = exports.displayVersion = exports.formatHelp = exports.createBanner = void 0; const chalk_1 = __importDefault(require("chalk")); const display_1 = require("./display"); const fs = __importStar(require("fs")); const path = __importStar(require("path")); const pkg = JSON.parse(fs.readFileSync(path.join(__dirname, '../../../package.json'), 'utf8')); const createBanner = () => { const line1 = chalk_1.default.cyan(' ███████╗ ██████╗ ██╗ ██╗██████╗ ██████╗███████╗ ██████╗ ██████╗ ███╗ ██╗████████╗██████╗ ██████╗ ██╗ '); const line2 = chalk_1.default.blue(' ██╔════╝██╔═══██╗██║ ██║██╔══██╗██╔════╝██╔════╝ ██╔════╝██╔═══██╗████╗ ██║╚══██╔══╝██╔══██╗██╔═══██╗██║ '); const line3 = chalk_1.default.magenta(' ███████╗██║ ██║██║ ██║██████╔╝██║ █████╗ ██║ ██║ ██║██╔██╗ ██║ ██║ ██████╔╝██║ ██║██║ '); const line4 = chalk_1.default.yellow(' ╚════██║██║ ██║██║ ██║██╔══██╗██║ ██╔══╝ ██║ ██║ ██║██║╚██╗██║ ██║ ██╔══██╗██║ ██║██║ '); const line5 = chalk_1.default.green(' ███████║╚██████╔╝╚██████╔╝██║ ██║╚██████╗███████╗ ╚██████╗╚██████╔╝██║ ╚████║ ██║ ██║ ██║╚██████╔╝███████╗'); const line6 = chalk_1.default.red(' ╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝ ╚═════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝'); const banner = [line1, line2, line3, line4, line5, line6].join('\n'); const subtitle = chalk_1.default.gray.italic('A modern, beautiful source control CLI'); const version = chalk_1.default.blue(`v${pkg.version}`); const author = chalk_1.default.gray(`by ${pkg.author}`); return [ banner, chalk_1.default.white(' '.repeat(35)) + subtitle, chalk_1.default.white(' '.repeat(40)) + `${version} ${author}`, '', ].join('\n'); }; exports.createBanner = createBanner; const formatHelp = (cmd) => { const commandName = chalk_1.default.cyan.bold(cmd.name()); const description = chalk_1.default.gray(cmd.description()); let help = ''; if (cmd.name() === 'sourcecontrol') { help += createBanner() + '\n'; } help += `${commandName} - ${description}\n\n`; help += `${chalk_1.default.yellow.bold('📋 Usage:')}\n`; help += ` ${chalk_1.default.green('$')} ${commandName} ${chalk_1.default.gray('[options]')} ${chalk_1.default.gray('[command]')}\n\n`; const commands = cmd.commands; if (commands.length > 0) { help += `${chalk_1.default.yellow.bold('🚀 Commands:')}\n`; const maxLength = Math.max(...commands.map((cmd) => cmd.name().length)); commands.forEach((command) => { const name = command.name().padEnd(maxLength); const desc = command.description() || ''; help += ` ${chalk_1.default.green(name)} ${chalk_1.default.gray(desc)}\n`; }); help += '\n'; } help += chalk_1.default.yellow.bold('💡 Examples:') + '\n'; help += ` ${chalk_1.default.green('$')} ${commandName} init ${chalk_1.default.gray('# Initialize a new repository')}\n`; help += ` ${chalk_1.default.green('$')} ${commandName} hash-object file.txt ${chalk_1.default.gray('# Hash a file')}\n`; help += ` ${chalk_1.default.green('$')} ${commandName} cat-file -p <hash> ${chalk_1.default.gray('# Display object content')}\n\n`; help += chalk_1.default.gray('For more information on a command, run: ') + chalk_1.default.green(`${commandName} help <command>`) + '\n'; help += chalk_1.default.gray('Visit our documentation: ') + chalk_1.default.blue.underline('https://docs.sourcecontrol.dev') + '\n'; return help; }; exports.formatHelp = formatHelp; const displayVersion = () => { const systemInfo = [ `${chalk_1.default.bold.blue('SourceControl CLI')} ${chalk_1.default.green(`v${pkg.version}`)}`, '', `${chalk_1.default.gray('Runtime Information:')}`, ` ${chalk_1.default.gray('Node.js:')} ${chalk_1.default.cyan(process.version)}`, ` ${chalk_1.default.gray('Platform:')} ${chalk_1.default.cyan(process.platform)} ${chalk_1.default.cyan(process.arch)}`, ` ${chalk_1.default.gray('Memory:')} ${chalk_1.default.cyan((process.memoryUsage().heapUsed / 1024 / 1024).toFixed(2) + ' MB')}`, '', `${chalk_1.default.gray('Project Information:')}`, ` ${chalk_1.default.gray('Author:')} ${chalk_1.default.magenta(pkg.author)}`, ` ${chalk_1.default.gray('License:')} ${chalk_1.default.yellow(pkg.license)}`, ` ${chalk_1.default.gray('Description:')} ${chalk_1.default.white(pkg.description)}`, '', `${chalk_1.default.gray('Links:')}`, ` ${chalk_1.default.blue('🔗 Repository:')} ${chalk_1.default.underline('https://github.com/utkarsh5026/SourceControl.git')}`, ` ${chalk_1.default.blue('📝 Documentation:')} ${chalk_1.default.underline('https://docs.sourcecontrol.dev')}`, ` ${chalk_1.default.blue('🐛 Report Issues:')} ${chalk_1.default.underline('https://github.com/utkarsh5026/SourceControl/issues')}`, ].join('\n'); display_1.display.highlight(systemInfo, '🎯 Version Information'); }; exports.displayVersion = displayVersion; const displayError = (error) => { const errorContent = [ `${chalk_1.default.red.bold('❌ An error occurred:')}`, '', `${chalk_1.default.gray('Error Type:')} ${chalk_1.default.red(error.name || 'Unknown Error')}`, `${chalk_1.default.gray('Message:')} ${chalk_1.default.red(error.message)}`, '', chalk_1.default.yellow.bold('🔧 Troubleshooting:'), ` ${chalk_1.default.blue('💡 Tip:')} Use ${chalk_1.default.green('--verbose')} flag for detailed logs`, ` ${chalk_1.default.blue('📚 Help:')} Run ${chalk_1.default.green('sourcecontrol help')} for available commands`, ` ${chalk_1.default.blue('🐛 Bug?')} Report at ${chalk_1.default.underline('https://github.com/your-repo/sourcecontrol/issues')}`, ].join('\n'); display_1.display.error(errorContent, '🚨 Error'); }; exports.displayError = displayError; const displayWelcome = () => { console.log(createBanner()); const welcomeContent = [ `${chalk_1.default.blue('👋 Welcome to SourceControl!')}`, '', `${chalk_1.default.gray('This is a modern, beautiful CLI for source control operations.')}`, `${chalk_1.default.gray('Built with TypeScript and designed for developer happiness.')}`, '', chalk_1.default.yellow.bold('🚀 Quick Start:'), ` ${chalk_1.default.green('sourcecontrol init')} ${chalk_1.default.gray('Initialize a new repository')}`, ` ${chalk_1.default.green('sourcecontrol help')} ${chalk_1.default.gray('Show detailed help')}`, ` ${chalk_1.default.green('sourcecontrol --version')} ${chalk_1.default.gray('Show version information')}`, '', chalk_1.default.blue.bold('💡 Pro Tips:'), ` ${chalk_1.default.gray('•')} Use ${chalk_1.default.green('sc')} as a shorthand for ${chalk_1.default.green('sourcecontrol')}`, ` ${chalk_1.default.gray('•')} Add ${chalk_1.default.green('--verbose')} to any command for detailed output`, ` ${chalk_1.default.gray('•')} Use ${chalk_1.default.green('--quiet')} to suppress non-essential output`, ` ${chalk_1.default.gray('•')} Commands support both long and short flags (${chalk_1.default.green('-v')} or ${chalk_1.default.green('--version')})`, '', chalk_1.default.magenta.bold('🎯 Features:'), ` ${chalk_1.default.gray('•')} Beautiful, colorized output with rich formatting`, ` ${chalk_1.default.gray('•')} Progress indicators and spinners for long operations`, ` ${chalk_1.default.gray('•')} Smart error handling with helpful suggestions`, ` ${chalk_1.default.gray('•')} Auto-completion support (coming soon)`, ].join('\n'); display_1.display.highlight(welcomeContent, '🎯 Getting Started'); }; exports.displayWelcome = displayWelcome; //# sourceMappingURL=cli-display.js.map