Raxen/scripts/main.ts
2023-04-25 19:49:51 +02:00

56 lines
1.8 KiB
TypeScript

import { giteaApi, CreatePullReviewOptions } from 'gitea-js';
import fetch from 'cross-fetch'; // You have to use a fetch compatible polyfill like cross-fetch for Node.JS
import fs = require('fs');
import path = require('path');
const api = giteaApi('https://git.unurled.me', {
token: process.env.TOKEN,
customFetch: fetch,
});
const todo: { [file: string]: string[]} = {};
function searchTodo(file: string): void {
let compteur = 0;
const lines: string[] = fs.readFileSync(file, 'utf-8').split('\n');
for (const line of lines) {
compteur += 1;
if (line.match(/[\S\s]*\btodo\b/i)) {
if (file in todo) {
todo[file].push(line.trim() + " (line " + compteur + ")");
} else {
todo[file] = [line.trim() + " (line " + compteur + ")"];
}
}
}
}
function searchTodoInDir(dir: string): void {
fs.readdirSync(dir).forEach(file => {
const filePath = path.join(dir, file);
if (fs.statSync(filePath).isDirectory()) {
searchTodoInDir(filePath);
}
if (file.endsWith(".java")) {
searchTodo(filePath);
}
});
}
function searchTodoInProject(): void {
const pwd = path.dirname(path.dirname(path.resolve(__filename)));
searchTodoInDir(path.join(pwd, "src/main/java/me/unurled/raxen"));
}
searchTodoInProject();
console.log();
const index: number = Number.parseInt(process.env.CI_COMMIT_PULL_REQUEST);
const body: CreatePullReviewOptions = {
body: "# TODO that needs to be done by next big release :\n```json\n" + JSON.stringify(todo, null, "\t") + "\n```",
commit_id: process.env.CI_COMMIT_SHA,
};
const pr_review = api.repos.repoCreatePullReview(process.env.CI_REPO_OWNER, process.env.CI_REPO_NAME, index, body, {});
pr_review.then(res => console.log(res)).catch(err => console.log(err));