first commit

This commit is contained in:
JLEROY
2025-06-17 10:03:07 +02:00
parent 8b95a7ddb6
commit f90bf939a4
3 changed files with 110 additions and 38 deletions

90
comment.js Normal file
View File

@@ -0,0 +1,90 @@
const fs = require("fs");
const path = require("path");
const axios = require("axios");
const cliProgress = require('cli-progress');
async function commentFile(filePath, outputDir) {
const code = fs.readFileSync(filePath, "utf-8");
const prompt = `
Voici un fichier de code TypeScript ou JavaScript.
Ajoute des commentaires utiles et concis à toutes les fonctions, classes et méthodes.
Garde le code inchangé, seulement ajoute les commentaires en français.
---
${code}
`;
try {
const response = await axios.post("http://localhost:11434/api/generate", {
model: "llama3",
prompt: prompt,
stream: false,
});
const commentedCode = response.data.response;
const filename = path.basename(filePath).replace(/(\.ts|\.js)$/, ".commented$1");
const outputPath = path.join(outputDir, filename);
fs.writeFileSync(outputPath, commentedCode);
console.log(`✅ Fichier commenté : ${outputPath}`);
} catch (error) {
console.error("Erreur lors de lappel à Ollama :", error.message);
}
}
function getCodeFilesRecursive(dir) {
let files = [];
for (const item of fs.readdirSync(dir)) {
const fullPath = path.join(dir, item);
const stat = fs.statSync(fullPath);
if (stat.isDirectory()) {
files = files.concat(getCodeFilesRecursive(fullPath));
} else if (fullPath.endsWith(".ts") || fullPath.endsWith(".js")) {
files.push(fullPath);
}
}
return files;
}
async function run() {
const inputDir = process.argv[2];
if (!inputDir || !fs.existsSync(inputDir)) {
console.error("❌ Merci de fournir un dossier valide en argument !");
process.exit(1);
}
const absInputDir = path.resolve(inputDir);
const outputDir = path.resolve("./output");
if (!fs.existsSync(outputDir)) {
fs.mkdirSync(outputDir, { recursive: true });
}
const files = getCodeFilesRecursive(absInputDir);
console.log(`🔍 ${files.length} fichier(s) trouvé(s) dans ${absInputDir}`);
const progressBar = new cliProgress.SingleBar({
format: '📄 {filename} | {bar} {percentage}% | {value}/{total}',
barCompleteChar: '█',
barIncompleteChar: '░',
hideCursor: true
}, cliProgress.Presets.shades_classic);
progressBar.start(files.length, 0, { filename: '' });
for (const file of files) {
progressBar.update(progressBar.value, { filename: path.basename(file) });
await commentFile(file, outputDir);
progressBar.increment();
}
progressBar.stop();
console.log("🎉 Tous les fichiers ont été traités !");
}
run();