Des scripts pour transformer des fichiers jugo en kirby pour Timothée - retour accueil
Anonyme, en lecture seule : git clone git://bebou.netlib.re/hugo2kirby
Authentifié·e, en écriture : git clone ssh://git@bebou.netlib.re:1459/srv/git/hugo2kirby
Log | Files | Refs | README | zip | tar.gz |
| Mode | Name | Size |
| -rw-r--r-- | README | 241L |
| -rwxr-xr-x | associate.sh | 21L |
| -rwxr-xr-x | modify.sh | 21L |
| -rwxr-xr-x | move.sh | 17L |
README (8093B)
1 # De quoi transformer des fichiers au format Hugo vers un format Kirby
2
3 ## Ce que l'on a à disposition
4
5 ### Les données
6
7 Dans `data` un dossier `before` contenant les fichiers avant transformation.
8 Dans `after` les dossiers/fichiers après transformation :
9
10 data
11 ├── after
12 │ ├── 20210105_vaccination-covid-19-pour-les-plus-de-75-ans
13 │ │ └── actualites.md
14 │ ├── 20210110_sapins-de-noel...responsables
15 │ │ └── actualites.md
16 │ ├── 20210207_compte-rendu-du-conseil-municipal-du-3-fevrier-2021
17 │ │ └── actualites.md
18 ...
19 └── before
20 ├── 2021-11-2022-a-lalouvesc-la-fete-continue.md
21 ├── 2022-01-130-voitures-au-rallye-monte-carlo-historique.md
22 ...
23
24 ### Les scripts
25
26 Un script `move.sh` qui calcule le nouveau chemin des fichiers en se basant sur
27 leur ancien nom. Elle génère les commandes adéquates :
28
29 $ ./move.sh data/before/2021-11-2022-a-lalouvesc-la-fete-continue.md
30 $ ./move.sh data/before/biblio-chouette-est-ouverte.md
31 mkdir -p data/after/20211115_2022-a-lalouvesc-la-fete-continue
32 cp data/before/2021-11-2022-a-lalouvesc-la-fete-continue.md data/after/20211115_2022-a-lalouvesc-la-fete-continue/actualites.md
33 mkdir -p data/after/20210407_biblio-chouette-est-ouverte
34 cp data/before/biblio-chouette-est-ouverte.md data/after/20210407_biblio-chouette-est-ouverte/actualites.md
35
36 Il faut donc le piper dans `sh` pour exec les commandes :
37
38 $ ./move.sh data/before/2021-11-2022-a-lalouvesc-la-fete-continue.md | sh
39 $ ./move.sh data/before/biblio-chouette-est-ouverte.md | sh
40
41 C'est pas le plus opti, c'est un peu lent mais je l'ai écrit comme ça m'est
42 venu, ça fait le taf :)
43
44 Un autre script `modify.sh` qui sort sur STDOUT la version remaniée d'un
45 article donné. On peut le faire sur les fichiers déplacés :
46
47 $ ./modify.sh data/after/20210105_vaccination-covid-19-pour-les-plus-de-75-ans/actualites.md
48 Date: 2021-01-05
49
50 ----
51
52 Description: Voici les informations qui viennent de nous arriver de la préfecture.
53
54 ----
55
56 Image: /media/vaccin-covid-19.jpg
57
58 ----
59
60 Subtitle:
61
62 ----
63
64 Title: Vaccination COVID 19 pour les plus de 75 ans
65
66 ----
67
68 Content:
69
70
71 Voici les informations qui viennent de nous arriver de la préfecture.
72
73 La phase de vaccinations pour les personnes âgées de plus de 75 ans vivant à domicile ou en résidence autonomie/senior et pour les personnes handicapées vulnérables prises en charge dans des foyers médicalisés débutera le 18 janvier en Ardèche.
74
75 Les centres de vaccination de l’Ardèche sont précisés sur le tableau.
76
77 
78
79 Les centres les plus proches de Lalouvesc sont donc : celui d’Annonay (prise de rendez-vous sur Doctotlib ou au tél 07 88 58 21 86) et celui de Lamastre (prise de rendez-vous sur (Maiia ou 04 75 06 30 08). Si vous êtes concernés, nous vous invitons à faire les démarches… en vous armant de patience, les sites web et les lignes téléphoniques risquent d’être surchargés. Si vous connaissez des personnes concernées et qui ont des difficultés pour les prises de rendez-vous, n’hésitez pas à les aider. La solidarité est essentielle en ces périodes incertaines.
80
81 L’équipe municipale réfléchit aux solutions à mettre en place pour les personnes les plus en difficultés. Nous ferons le point dans le courant de la semaine prochaine.
82
83 Pour modifier un script il faut donc enregistrer le résultat quelque part et
84 remplacer l'ancienne version par la nouvelle :
85
86 $ ./modify.sh data/after/20210105_vaccination-covid-19-pour-les-plus-de-75-ans/actualites.md > data/after/20210105_vaccination-covid-19-pour-les-plus-de-75-ans/actualites.md.tmp
87 $ mv data/after/20210105_vaccination-covid-19-pour-les-plus-de-75-ans/actualites.md.tmp data/after/20210105_vaccination-covid-19-pour-les-plus-de-75-ans/actualites.md
88
89 Pour déplacer les images dans les dossiers des articles correspondants on peut
90 utiliser `associate.sh`. En supposant un dossier `data` contenant :
91
92 data
93 ├── assets
94 │ └── media
95 │ ├── fichier4.pdf
96 │ ├── image1.jpg
97 │ ├── image2.jpg
98 │ └── image3.jpg
99 └── content
100 ├── dossier1
101 │ └── fichier.md
102 ├── dossier2
103 │ └── fichier.md
104 └── dossier3
105 └── fichier.md
106
107 Lancer :
108
109 $ ./associate.sh data
110
111 Le transformera en :
112
113 data2
114 ├── assets
115 │ └── media
116 │ ├── fichier4.pdf
117 │ ├── image1.jpg
118 │ ├── image2.jpg
119 │ └── image3.jpg
120 └── content
121 ├── dossier1
122 │ ├── fichier4.pdf
123 │ ├── fichier.md
124 │ └── image1.jpg
125 ├── dossier2
126 │ ├── fichier.md
127 │ ├── image2.jpg
128 │ └── image3.jpg
129 └── dossier3
130 ├── fichier.md
131 └── image3.jpg
132
133 Pour peu que chaque image/pdf apparaisse dans le contenu de l'article du
134 dossier correspondant. L'argument passé à `associate.sh` peut être un chemin
135 relatif ou absolu vers le dossier concerné. Pas besoin que le dossier soit dans
136 ce dépôt git (contrairement aux autres scripts). On peut donc écrire un truc du
137 style :
138
139 $ ./associate.sh ../chemin/vers/dossier
140 # ou
141 $ ./associate.sh ~/chemin/vers/dossier
142 # etc
143
144 La commande ne détecte que les fichiers jpeg, png, docx et pdf.
145
146 ## Utilisation
147
148 Pour bouger tous les articles d'un coup lister les fichiers dans `data/before`
149 puis passer la liste à la commande `move.sh` avec `xargs` :
150
151 $ find data/before -type f | xargs -n1 ./move.sh | sh
152
153 Pour modifier tous les fichiers déplacés on liste les fichiers concernés dans
154 `data/after` puis on le passe à `modify.sh` via `xargs` en construisant la
155 commande via l'astuce du `sh -c`. Le `-P4` permet de para et d'aller vite :
156
157 $ find data/after -type f -name '*.md' |
158 xargs -P4 -n1 sh -c './modify.sh $1 > $1.tmp;mv $1.tmp $1' --
159
160 Pour déplacer les images et pdf utilisés dans un article dans le dossier de
161 l'article faire :
162
163 $ ./associate.sh chemin/vers/le/dossier
164
165 La commande suppose une certaine arborescence, voir le titre précédent.
166
167 ## Annexes
168
169 Les consignes de Timothée :
170
171 > Hello,
172 >
173 > Du coup, voilà les deux types de structure de nom de fichier qui existent dans
174 > le dossier actualites-wip ci-joint:
175 >
176 > - YYYY-MM-titre-actualite.md
177 > - titre-actualite.md
178 >
179 > Pour chaque fichier, il faudrait donc obtenir à la fin:
180 >
181 > YYYYMMDD_titre-actualite/actualites.md
182 > ^ underscore entre la date (sans tirets) et le slug
183 >
184 > Sachant que la date est toujours présente dans l'entête YAML de chaque fichier
185 > sous la forme: date: YYYY-MM-DD
186 >
187 > Et en plus, pour chaque fichier, il faut transformer sa structure pour passer
188 > d'un fichier markdown avec en-tête YAML qui ressemble à ça:
189 >
190 > ```md
191 > ---
192 > draft: false
193 > date: YYYY-MM-DD
194 > description: "lorem ipsum"
195 > image: /media/nom-image.jpg
196 > icon: ""
197 > subtitle:
198 > title: Titre de l’actualité
199 > weight: 1
200 > ---
201 >
202 > Contenu en markdown blablablabla
203 >
204 > ```
205 >
206 > À une structure qui ressemble à ça:
207 >
208 > ```md
209 > Title: Titre de l’actualité
210 >
211 > ----
212 >
213 > Date: YYYY-MM-DD
214 >
215 > ----
216 >
217 > Description: Lorem ipsum
218 >
219 > ----
220 >
221 > Content:
222 >
223 > Contenu en markdown blablablabla
224 >
225 > ```
226 >
227 >
228 > Sachant que:
229 > - les champs sont pas toujours dans le même ordre!
230 > - le champ draft: false n'existe quand pour les fichiers qui commences par
231 > YYYY-MM
232 > - la valeur des champs title, description et subtitle ont parfois des
233 > guillemets autour, parfois non (à la fin il faut les supprimer)
234 > - subtitle peut potentiellement être vide
235 > - idéalement, draft, weight et icon dégagent (sinon on les laisse en les
236 > séparant juste avec 4 tirets)
237 > - c'est bien 4 tirets à la fin entre chaque champs (et non 3) et il n'y en a
238 > pas au début
239 > - les champs doivent être capitalisés (description: devient Description:)
240 > - le contenu en md à la fin doit être précédé de Content: puis 2 retours à la
241 > ligne