UNPKG

@graphteon/juricode

Version:

We are forging the future with lines of digital steel

188 lines 8.25 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.viewGitChanges = exports.listBranches = exports.listRepositories = exports.searchRepositories = exports.showUserInfo = void 0; const prompts_1 = __importDefault(require("prompts")); const chalk_1 = __importDefault(require("chalk")); const ora_1 = __importDefault(require("ora")); const boxen_1 = __importDefault(require("boxen")); const git_1 = require("../api/git"); const showUserInfo = async () => { const spinner = (0, ora_1.default)('Fetching user info...').start(); try { const gitService = new git_1.GitService(); const user = await gitService.getGitUser(); spinner.succeed('User info fetched successfully!'); console.log((0, boxen_1.default)(`ID: ${chalk_1.default.cyan(user.id)} Login: ${chalk_1.default.white(user.login)} Name: ${chalk_1.default.white(user.name || 'N/A')} Email: ${chalk_1.default.white(user.email || 'N/A')} Company: ${chalk_1.default.white(user.company || 'N/A')}`, { padding: 1, borderColor: 'green' })); } catch (error) { spinner.fail('Failed to fetch user info'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } }; exports.showUserInfo = showUserInfo; const searchRepositories = async () => { const answer = await (0, prompts_1.default)([ { type: 'text', name: 'query', message: 'Enter search query:', validate: (input) => input.length > 0 || 'Search query is required' }, { type: 'number', name: 'limit', message: 'Enter number of results:', initial: 5 } ]); const spinner = (0, ora_1.default)('Searching repositories...').start(); try { const gitService = new git_1.GitService(); const repos = await gitService.searchRepositories(answer.query, answer.limit); spinner.succeed('Repositories found!'); if (repos.length === 0) { console.log(chalk_1.default.yellow('No repositories found')); return; } repos.forEach(repo => { console.log((0, boxen_1.default)(`Name: ${chalk_1.default.cyan(repo.full_name)} Description: ${chalk_1.default.white(repo.description || 'N/A')} Visibility: ${repo.private ? chalk_1.default.red('Private') : chalk_1.default.green('Public')} Default Branch: ${chalk_1.default.yellow(repo.default_branch)} URL: ${chalk_1.default.blue(repo.html_url)}`, { padding: 1, margin: { bottom: 1 }, borderColor: 'blue' })); }); } catch (error) { spinner.fail('Failed to search repositories'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } }; exports.searchRepositories = searchRepositories; const listRepositories = async () => { const spinner = (0, ora_1.default)('Fetching repositories...').start(); try { const gitService = new git_1.GitService(); const repos = await gitService.getUserRepositories(); spinner.succeed('Repositories fetched successfully!'); if (repos.length === 0) { console.log(chalk_1.default.yellow('No repositories found')); return; } repos.forEach(repo => { console.log((0, boxen_1.default)(`Name: ${chalk_1.default.cyan(repo.full_name)} Description: ${chalk_1.default.white(repo.description || 'N/A')} Visibility: ${repo.private ? chalk_1.default.red('Private') : chalk_1.default.green('Public')} Default Branch: ${chalk_1.default.yellow(repo.default_branch)} URL: ${chalk_1.default.blue(repo.html_url)}`, { padding: 1, margin: { bottom: 1 }, borderColor: 'blue' })); }); } catch (error) { spinner.fail('Failed to fetch repositories'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } }; exports.listRepositories = listRepositories; const listBranches = async () => { const answer = await (0, prompts_1.default)({ type: 'text', name: 'repository', message: 'Enter repository (format: owner/repo):', validate: (input) => input.length > 0 || 'Repository is required' }); const spinner = (0, ora_1.default)('Fetching branches...').start(); try { const gitService = new git_1.GitService(); const branches = await gitService.getRepositoryBranches(answer.repository); spinner.succeed('Branches fetched successfully!'); if (branches.length === 0) { console.log(chalk_1.default.yellow('No branches found')); return; } branches.forEach(branch => { console.log((0, boxen_1.default)(`Name: ${chalk_1.default.cyan(branch.name)} Protected: ${branch.protected ? chalk_1.default.red('Yes') : chalk_1.default.green('No')}`, { padding: 1, margin: { bottom: 1 }, borderColor: 'blue' })); }); } catch (error) { spinner.fail('Failed to fetch branches'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } }; exports.listBranches = listBranches; const viewGitChanges = async () => { const answer = await (0, prompts_1.default)({ type: 'text', name: 'conversationId', message: 'Enter conversation ID:', validate: (input) => input.length > 0 || 'Conversation ID is required' }); const spinner = (0, ora_1.default)('Fetching git changes...').start(); try { const gitService = new git_1.GitService(); const changes = await gitService.getGitChanges(answer.conversationId); spinner.succeed('Git changes fetched successfully!'); if (changes.length === 0) { console.log(chalk_1.default.yellow('No changes found')); return; } console.log((0, boxen_1.default)(chalk_1.default.white('Git Changes:') + '\n' + changes.map(change => `${change.status === 'modified' ? chalk_1.default.yellow('M') : change.status === 'added' ? chalk_1.default.green('A') : change.status === 'deleted' ? chalk_1.default.red('D') : chalk_1.default.white('?')} ${change.path}`).join('\n'), { padding: 1, borderColor: 'yellow' })); const diffAnswer = await (0, prompts_1.default)({ type: 'confirm', name: 'viewDiff', message: 'Would you like to view diff for a specific file?', initial: false }); if (diffAnswer.viewDiff) { const fileAnswer = await (0, prompts_1.default)({ type: 'select', name: 'file', message: 'Select file to view diff:', choices: changes.map(change => ({ title: change.path, value: change.path })) }); const diffSpinner = (0, ora_1.default)('Fetching diff...').start(); try { const diff = await gitService.getGitChangeDiff(answer.conversationId, fileAnswer.file); diffSpinner.succeed('Diff fetched successfully!'); console.log((0, boxen_1.default)(chalk_1.default.white(diff.diff), { padding: 1, margin: { top: 1 }, borderColor: 'cyan', title: diff.path, titleAlignment: 'center' })); } catch (error) { diffSpinner.fail('Failed to fetch diff'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } } } catch (error) { spinner.fail('Failed to fetch git changes'); console.error(chalk_1.default.red(error instanceof Error ? error.message : 'Unknown error')); } }; exports.viewGitChanges = viewGitChanges; //# sourceMappingURL=git.js.map