@codewithmehmet/paul-cli
Version:
Intelligent project file scanner and Git change tracker with interactive interface
68 lines (64 loc) • 1.85 kB
JavaScript
import { getGitDiff, formatGitStatus, getGitCommitDiff } from '../core/git.js';
/**
* Génère l'en-tête markdown pour les changements Git
*/
export function generateDiffHeader(branch, commitInfo = null) {
const output = [];
output.push('# Git Changes');
output.push('');
output.push('## 📊 Information');
output.push(`- 🌿 Branch: ${branch}`);
if (commitInfo) {
if (commitInfo.mode === 'since') {
output.push(`- 📝 Since commit: ${commitInfo.commit}`);
} else {
output.push(`- 📝 Commit: ${commitInfo.commit}`);
}
}
output.push('');
return output;
}
/**
* Génère le markdown pour un changement avec diff
*/
export function generateSingleChangeWithDiff(change, diff) {
const output = [];
output.push(`### ${formatGitStatus(change.status)} \`${change.file}\``);
if (diff && diff.trim()) {
output.push('```diff');
output.push(diff.trim());
output.push('```');
output.push('');
}
return output;
}
/**
* Génère le markdown pour un changement de commit
*/
export function generateCommitChange(change, commitHash) {
const output = [];
output.push(`#### ${formatGitStatus(change.status)} \`${change.file}\``);
const diff = getGitCommitDiff(change.file, commitHash);
if (diff && diff.trim()) {
output.push('```diff');
output.push(diff.trim());
output.push('```');
output.push('');
}
return output;
}
/**
* Génère le markdown pour un changement actuel (staged/unstaged)
*/
export function generateCurrentChange(change, isStaged) {
const output = [];
output.push(`#### ${formatGitStatus(change.status)} \`${change.file}\``);
const diff = getGitDiff(change.file, isStaged);
if (diff && diff.trim()) {
output.push('```diff');
output.push(diff.trim());
output.push('```');
output.push('');
}
return output;
}