mirror of
https://github.com/JohanLeroy/ai-commenter.git
synced 2026-01-27 17:57:29 +00:00
first commit
This commit is contained in:
41
.gitignore
vendored
41
.gitignore
vendored
@@ -1,39 +1,4 @@
|
||||
### Angular template
|
||||
## Angular ##
|
||||
# compiled output
|
||||
dist/
|
||||
tmp/
|
||||
app/**/*.js
|
||||
app/**/*.js.map
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
bower_components/
|
||||
|
||||
# IDEs and editors
|
||||
.idea/
|
||||
|
||||
# misc
|
||||
.sass-cache/
|
||||
connect.lock/
|
||||
coverage/
|
||||
libpeerconnection.log/
|
||||
npm-debug.log
|
||||
testem.log
|
||||
typings/
|
||||
.angular/
|
||||
|
||||
# e2e
|
||||
e2e/*.js
|
||||
e2e/*.map
|
||||
|
||||
# System Files
|
||||
.DS_Store/
|
||||
|
||||
# Certificate files
|
||||
cert/
|
||||
*.key
|
||||
*.pem
|
||||
|
||||
# Environment files
|
||||
*.prod
|
||||
node_modules/
|
||||
output/
|
||||
package-lock.json
|
||||
90
comment.js
Normal file
90
comment.js
Normal 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 l’appel à 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();
|
||||
17
package.json
Normal file
17
package.json
Normal file
@@ -0,0 +1,17 @@
|
||||
{
|
||||
"name": "ai-commenter",
|
||||
"version": "1.0.0",
|
||||
"description": "",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"dependencies": {
|
||||
"axios": "^1.10.0",
|
||||
"cli-progress": "^3.12.0"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user