sourcecontrol
Version:
A modern TypeScript CLI application for source control
165 lines • 10.8 kB
JavaScript
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
;