add script to create posts

This commit is contained in:
raspbeguy 2021-02-18 13:24:23 +01:00
parent ce06a877f7
commit c72130cea6
6 changed files with 99 additions and 1 deletions

View File

@ -33,6 +33,12 @@ Par ailleurs, le nom de fichier d'un post doit correspondre à la version sécur
- sans diacritiques ;
- chaque caractère spécial et espace remplacé par un tiret `-` non redondant, ni au début ni à la fin.
Pour faciliter la création d'un article avec les bons en-têtes, il est possible d'utiliser le script `new_post.sh` présent dans le dossier `scripts` selon cette syntaxe :
```
./new_post.sh "Mon super titre d'article"
```
### Images
Pour placer un média dans un article, utiliser le mot-clé `%assets_url%`.
@ -45,7 +51,7 @@ Par exemple, pour insérer l'image `assets/image.png`, on placera cette ligne da
## Tests
Pour vérifier la cohérence des articles, des scripts sont disponibles dans le dossier `tests` :
Pour vérifier la cohérence des articles, des scripts sont disponibles dans le dossier `scripts` :
- `check_post_filename.sh` : vérifie que les fichiers des posts portent bien le nom correspondant à leurs titres. Le drapeau `-f` permet de corriger automatiquement ce nom de fichier.
- `check_assets.sh` : vérifie que les ressources appelées par les posts existent bien dans le dossier `assets`.

83
scripts/new_post.sh Executable file
View File

@ -0,0 +1,83 @@
#!/bin/bash
set -e
BASEDIR=`dirname $0`
if [ -f $BASEDIR/config.sh ]; then
. $BASEDIR/config.sh
fi
if [ -z "$POSTS_DIR" ]
then
echo "POSTS_DIR environment variable is unset." > /dev/stderr
exit 2
fi
function usage {
echo -e "Usage: $0 [OPTIONS] <post title>
Options:
-h\t\tshow this help
-d DATE\tuse DATE instead of today's date
-a AUTHOR\tuse AUTHOR instead of env var \$AUTHOR
-t TAG\tadd TAG to the taglist (can be used multiple times or contain comma-separated list)
-e\t\topen new post in \$EDITOR"
}
function filename {
local unsafe_name="$1"
echo $unsafe_name | iconv -t ascii//TRANSLIT | tr '[:upper:]' '[:lower:]' | tr -s '[:punct:] ' '-' | sed 's/-*$//g;s/^-*//g'
}
DATE=$(date +%Y-%m-%d)
TAGLIST=''
edit=0
while getopts "hd:a:t:e" option
do
case $option in
h)
usage
exit
;;
d)
DATE=$(date +%Y-%m-%d "$OPTARG")
;;
a)
AUTHOR="$OPTARG"
;;
t)
if [ -z $TAGLIST ]
then
TAGLIST="$OPTARG"
else
TAGLIST="$TAGLIST,$OPTARG"
fi
;;
e)
edit=1
;;
*)
echo "Use $0 -h to show help" >&2
exit 1
;;
esac
done
shift $((OPTIND-1))
TITLE="$1"
TEMPLATE=post
FILENAME="$(filename "$TITLE").md"
export TITLE AUTHOR DATE TAGLIST TEMPLATE
cat $BASEDIR/post.tpl | envsubst > $BASEDIR/$POSTS_DIR/$FILENAME
if [ $edit == 1 ]
then
$EDITOR $BASEDIR/$POSTS_DIR/$FILENAME
else
echo $FILENAME
fi

9
scripts/post.tpl Normal file
View File

@ -0,0 +1,9 @@
---
title: $TITLE
date: $DATE
author: $AUTHOR
template: $TEMPLATE
tags: $TAGLIST
---
(Write somthing here.)