add script to create posts
This commit is contained in:
parent
ce06a877f7
commit
c72130cea6
|
@ -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`.
|
||||
|
|
|
@ -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
|
|
@ -0,0 +1,9 @@
|
|||
---
|
||||
title: $TITLE
|
||||
date: $DATE
|
||||
author: $AUTHOR
|
||||
template: $TEMPLATE
|
||||
tags: $TAGLIST
|
||||
---
|
||||
|
||||
(Write somthing here.)
|
Loading…
Reference in New Issue