Cześć
Jeśli ktoś prowadzi bloga w oparciu o generator stron Jekyll, to może przyda mu się taki skrypt.
Jak to działa?
Wystarczy wpisać:
$ ./create_post.sh -t "Tutaj podaj tytuł posta"
W katalogu _posts pojawi się plik z nagłówkiem YAML dla generatora. Skrypt sam wstawi dzisiejszą datę oraz wygeneruje tzw. "slug".
Dostępne są jeszcze dwa opcjonalne parametry:
-d Tworzy plik w katalogu _drafts
-c <nazwa> Dodaje kategorię do nagłówka
Konstruktywna krytyka mile widziana. A może ktoś ma pomysł na rozbudowę?
Kod:
#!/bin/bash
DATE=$(date '+%Y-%m-%d')
DIR="./_posts/"
DRAFT_DIR="./_drafts/"
for arg in "$@"; do
case $arg in
-t|--title)
# Post title
TITLE="$2"
shift
;;
-c|--category)
# Post category (optional)
CATEGORY="$2"
shift
;;
-d|--draft)
# Post is a draft
DIR=$DRAFT_DIR
shift
;;
*)
# Unrecognized parameter (skip)
shift
;;
esac
done
if [ "$TITLE" ]; then
# Create the directory if not exsts
if [ ! -d $DIR ]; then
mkdir $DIR
fi
# Prepare the slug
SLUG=$TITLE
SLUG="$(echo -n "$SLUG" | sed -e 's/[^[:alnum:]]/-/g')"
SLUG="$(echo -n "$SLUG" | tr -s '-')"
SLUG="$(echo -n "$SLUG" | tr A-Z a-z)"
SLUG="$(echo -n "$SLUG" | sed -e 's/^[\-]*//' -e 's/[\-]*$//')"
# Prepare the file name
FILE="${DIR}${DATE}-${SLUG}.md"
# Check if file exists
if [ ! -f "$FILE" ]; then
echo "File: $FILE"
echo "---" >> $FILE
echo "title: $TITLE" >> $FILE
[ "$CATEGORY" ] && echo "category: $CATEGORY" >> $FILE
echo "date: $DATE" >> $FILE
echo "---" >> $FILE
echo "" >> $FILE
else
echo "File \"$FILE\" alredy exists!"
echo "Try a different title."
fi
else
echo "The title is required!"
echo "Usage:"
echo " $0 -t title"
echo "Optional parameters:"
echo " -c <category name> Category"
echo " -d Draft"
fi