@graphteon/juricode
Version:
We are forging the future with lines of digital steel
188 lines • 8.25 kB
JavaScript
"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