1
0

Initialisation

This commit is contained in:
pulsar89.5 2020-11-24 14:58:21 +01:00
parent 14d47e9be3
commit 590f614c0e
2 changed files with 61 additions and 2 deletions

View File

@ -1,3 +1,25 @@
# git-hooks
# hooks
Ce dépôt contient les hooks que j'utilise.
Ce dépôt contient les hooks que j'utilise.
## sanitizeFileName.bash
Ce script permet de supprimer les caractères spéciaux du nom des fichiers. Par exemple *J'fais un test, héhé.md* devient *j-fais-un-test-hehe.md*.
Le script s'utilise aussi bien en ligne de commande qu'en tant que hook.
### CLI
```bash
pulsar@zazu:~$ bash ~/git/www.ykn.fr/.tools/sanitizeFileName.bash ~/git/www.ykn.fr/content/articles/
```
### Hook
```bash
tee ~/git/www.ykn.fr/.git/hooks/pre-commit <<EOF
#!/bin/bash
bash ~/git/git-hook/sanitizeFileName.bash ~/git/www.ykn.fr/content/articles
EOF
```

37
sanitizeFileName.bash Executable file
View File

@ -0,0 +1,37 @@
#!/bin/bash
# Aller dans le dossier passer en paramètre
cd $1
# Boucler sur les fichiers Markdown
for file in *.md; do
# Séparer le nom de l'extension
fileExtension="${file##*.}"
fileName="${file%.*}"
# Convertir les noms avec accents par ceux sans
fileName=$(echo $fileName | iconv -f utf8 -t ascii//TRANSLIT;)
# Passer en minuscule
fileName=$(echo $fileName | awk '{print tolower($0)}')
# Supprimer les caractères spéciaux
fileName=$(echo $fileName | sed $'s/\'/-/g')
fileName=$(echo $fileName | sed $'s/\,//g')
fileName=$(echo $fileName | sed $'s/[^.[:blank:][:alnum:]\t]-//g')
# Supprimer l'espace en fin de ligne
fileName=$(echo $fileName | sed 's/ \.md/\.md/g')
# Remplacer les espaces par des _
fileName=$(echo $fileName | sed 's/ /-/g')
# Créer le nouveau nom de fichier
sanitized="${fileName}.${fileExtension}"
# SI le nom du fichier a été assainit, ALORS renommer le fichier
[[ "${file}" != "${sanitized}" ]] && mv "${file}" "${sanitized}"
done
# Prendre en compte le changement
git add .