Skip to content

Commit b1d42c6

Browse files
committed
fix: amélioration du code pour le fichier de compilation
1 parent 83e4380 commit b1d42c6

1 file changed

Lines changed: 52 additions & 47 deletions

File tree

rollup.config.mjs

Lines changed: 52 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,10 @@ import cssnano from "cssnano";
88
const appFolder = "app/";
99
const folderWithMarkdownFilesToCombine = appFolder + "data/";
1010
const mainMdFileName = "index.md";
11+
const warningAutomaticallyGeneratedFile =
12+
"\n<!--Fichier généré automatiquement à partir des fichiers présents dans le dossier data/.\nAttention : les modifications faites manuellement dans ce fichier seront écrasées à la prochaine compilation de ChatMD -->\n";
1113

12-
let mainMdContent;
13-
let otherMdFiles;
14-
15-
if (fs.existsSync(folderWithMarkdownFilesToCombine)) {
16-
const mainMdFile = folderWithMarkdownFilesToCombine + mainMdFileName;
17-
mainMdContent = fs.readFileSync(mainMdFile, "utf8");
18-
otherMdFiles = getAllMdFiles(appFolder + "data").filter(
19-
(file) => !file.endsWith(mainMdFile),
20-
);
21-
} else {
22-
if (fs.existsSync(mainMdFileName)) {
23-
mainMdContent = fs.readFileSync(mainMdFileName, "utf8");
24-
} else {
25-
mainMdContent =
26-
"# Chatbot\nAucun chatbot par défaut n'a été configuré.\nIl faut créer un fichier index.md dans votre dépôt pour définir le chatbot par défaut.";
27-
fs.writeFileSync(appFolder + "index.md", mainMdContent);
28-
}
29-
}
30-
14+
// Pour récupérer tous les fichiers en Markdown dans un dossier, de manière récusrive
3115
function getAllMdFiles(dir) {
3216
const files = fs.readdirSync(dir, { withFileTypes: true });
3317
let mdFiles = [];
@@ -42,42 +26,62 @@ function getAllMdFiles(dir) {
4226
return mdFiles;
4327
}
4428

45-
const warningAutomaticallyGeneratedFile =
46-
"\n<!--Fichier généré automatiquement à partir des fichiers présents dans le dossier data/.\nAttention : les modifications faites manuellement dans ce fichier seront écrasées à la prochaine compilation de ChatMD -->\n";
29+
// Pour concaténer le contenu d'un ensemble de fichiers
30+
function combineFilesContent(files) {
31+
const filesContent = files.map((file) => fs.readFileSync(file, "utf8"));
32+
return [...filesContent].join("\n");
33+
}
4734

48-
mainMdContent = mainMdContent.trim();
49-
const yamlInMainMdContent =
50-
mainMdContent.startsWith("---") && mainMdContent.split("---").length > 2
51-
? "---" + mainMdContent.split("---")[1] + "---\n"
52-
: "";
35+
// Pour ajouter un message après l'en-tête YAML, s'il y en a un, dans un contenu en Markdown
36+
function addMessageAfterYAML(initialMarkdown, message) {
37+
let content = initialMarkdown.trim();
38+
const yaml =
39+
content.startsWith("---") && content.split("---").length > 2
40+
? "---" + content.split("---")[1] + "---\n"
41+
: "";
5342

54-
if (yamlInMainMdContent) {
55-
const mainMdContentWithoutYaml = mainMdContent.replace(
56-
yamlInMainMdContent,
57-
"",
58-
);
59-
mainMdContent =
60-
yamlInMainMdContent +
61-
warningAutomaticallyGeneratedFile +
62-
mainMdContentWithoutYaml;
63-
} else {
64-
mainMdContent = warningAutomaticallyGeneratedFile + mainMdContent;
43+
if (yaml) {
44+
const contentWithoutYaml = content.replace(yaml, "");
45+
content = yaml + message + contentWithoutYaml;
46+
} else {
47+
content = message + content;
48+
}
49+
return content;
6550
}
6651

67-
function createCombinedMdFile() {
68-
const filesContent = otherMdFiles.map((file) =>
69-
fs.readFileSync(file, "utf8"),
52+
// On regarde s'il existe un dossier de fichiers Markdown à concaténer pour créer le fichier index.md
53+
if (fs.existsSync(folderWithMarkdownFilesToCombine)) {
54+
// Si ce dossier existe …
55+
const mainMdFile = folderWithMarkdownFilesToCombine + mainMdFileName;
56+
let mainMdContent = fs.readFileSync(mainMdFile, "utf8");
57+
// … on fait la concaténation des fichiers Markdown dans ce dossier
58+
const mdFiles = getAllMdFiles(appFolder + "data").filter(
59+
(file) => !file.endsWith(mainMdFile),
7060
);
71-
const combinedContent = [mainMdContent, ...filesContent].join("\n");
72-
fs.writeFileSync(appFolder + "index.md", combinedContent);
73-
}
74-
75-
if (otherMdFiles) {
76-
createCombinedMdFile();
61+
if (mdFiles) {
62+
// … puis on crée le fichier index.md à partir de ces fichiers
63+
const combinedContent = combineFilesContent(mdFiles);
64+
mainMdContent = [mainMdContent, ...combinedContent].join("\n");
65+
// On ajoute un message d'avertissement dans le fichier, juste après l'en-tête YAML
66+
// afin de préciser que le contenu de ce fichier a été généré automatiquement
67+
// à partir d'un dossier de fichiers en Markdown
68+
mainMdContent = addMessageAfterYAML(
69+
mainMdContent,
70+
warningAutomaticallyGeneratedFile,
71+
);
72+
fs.writeFileSync(appFolder + "index.md", mainMdContent);
73+
}
74+
} else {
75+
// Si le dossier n'existe pas, on utilise le fichier index.md pour définir le contenu principal, mais ce fichier n'existe pas, on crée un fichier index.md avec un contenu par défaut
76+
if (!fs.existsSync(mainMdFileName)) {
77+
const defaultContent =
78+
"# Chatbot\nAucun chatbot par défaut n'a été configuré.\nIl faut créer un fichier index.md dans votre dépôt pour définir le chatbot par défaut.";
79+
fs.writeFileSync(appFolder + "index.md", defaultContent);
80+
}
7781
}
7882

83+
// On supprime certains messages d'erreurs qu'affiche Rollup et qui ne sont pas très utiles
7984
const onwarn = (warning) => {
80-
// Disable some Rollup warnings
8185
if (
8286
warning.code === "CIRCULAR_DEPENDENCY" ||
8387
warning.code === "THIS_IS_UNDEFINED"
@@ -90,6 +94,7 @@ const onwarn = (warning) => {
9094
// En mode DEBUG, on ne change pas le nom des variables, afin de pouvoir les vérifier
9195
const optionsTerser = process.env.DEBUG == "true" ? { mangle: false } : {};
9296

97+
// Configuration de la compilation avec Rollup
9398
export default {
9499
input: appFolder + "js/main.mjs",
95100
onwarn,

0 commit comments

Comments
 (0)