@@ -8,26 +8,10 @@ import cssnano from "cssnano";
88const appFolder = "app/" ;
99const folderWithMarkdownFilesToCombine = appFolder + "data/" ;
1010const 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
3115function 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
7984const 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
9195const optionsTerser = process . env . DEBUG == "true" ? { mangle : false } : { } ;
9296
97+ // Configuration de la compilation avec Rollup
9398export default {
9499 input : appFolder + "js/main.mjs" ,
95100 onwarn,
0 commit comments