hugo2kirby

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 |

ModeNameSize
-rw-r--r--README241L
-rwxr-xr-xassociate.sh21L
-rwxr-xr-xmodify.sh21L
-rwxr-xr-xmove.sh17L

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 	![](/media/centres-de-vaccination-ardeche.jpg)
     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