66 lines
1.0 KiB
Bash
Executable File
66 lines
1.0 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
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
|
|
|
|
FIX=0
|
|
|
|
while getopts "f" option
|
|
do
|
|
case $option in
|
|
f)
|
|
FIX=1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
shift $(($OPTIND - 1))
|
|
|
|
function check() {
|
|
local rc=0
|
|
post=$1
|
|
title=`sed -n 's/^title: "\?\(.*\)"\?$/\1/p' $post`
|
|
safename=`echo $title | iconv -t ascii//TRANSLIT | tr '[:upper:]' '[:lower:]' | tr -s '[:punct:] ' '-' | sed 's/-*$//g;s/^-*//g'`
|
|
if [ $post == $safename.md ]
|
|
then
|
|
rc=0
|
|
else
|
|
if [ $FIX -eq 1 ]
|
|
then
|
|
mv -v $post $safename.md
|
|
else
|
|
echo "$post should be named $safename.md" >&2
|
|
fi
|
|
rc=1
|
|
fi
|
|
return $rc
|
|
}
|
|
|
|
cd $BASEDIR/$POSTS_DIR
|
|
if [ -z "$1" ]
|
|
then
|
|
rc=0
|
|
for post in *
|
|
do
|
|
check $post
|
|
if [ $? -ne 0 ]
|
|
then
|
|
rc=1
|
|
fi
|
|
done
|
|
else
|
|
check $1
|
|
rc=$?
|
|
fi
|
|
|
|
exit $rc
|