#!/bin/sh
TEMPLATE="/etc/tylda/post_html" 
TMP_MD="/tmp/post_md_$$.md"    
TMP_HTML="/tmp/post_html_$$.html"
sanitize_title() {
    local raw txt
    raw=$1
    txt=$(echo "$raw" | perl -MText::Unidecode -CS -pe '$_=unidecode($_)')
    txt=$(echo "$txt" | sed 's/[^a-zA-Z0-9 \t]//g')
    txt=$(echo "$txt" | sed -E 's/[[:space:]]+/-/g')
    printf '%s' "$txt"
}
awk_escape() {
    printf '%s' "$1" | sed -e 's/[\\/]/\\&/g'
}
if [ $# -ne 1 ]; then
    echo ""
    echo "blog - komenda do zarządzania twoim blogiem"
    echo ""
    echo "Użycie: $0 "
    echo ""
    echo "================================"
    echo "Aby skopiować do obecnego katalogu szablon posta użyj: $0 template"
    echo ""
    echo "W razie problemów skontaktuj się z administratorem."
    exit 1
fi
SRCFILE=$1
if [ "$SRCFILE" == "template" ]; then
    cp /etc/tylda/post_template ./new_post
    echo "Szablon skopiowany do: $(pwd)/new_post."
    exit 1
fi
if [ ! -f "$SRCFILE" ]; then
    echo "Błąd: nie znaleziono pliku '$SRCFILE'"
    exit 1
fi
if [ ! -f "$TEMPLATE" ]; then
    echo "Błąd: nie znaleziono pliku szablonu: '$TEMPLATE'. Skontaktuj się z administratorem."
    exit 1
fi
TITLE_LINE=$(sed -n '1{s/^#title:[[:space:]]*//p}' "$SRCFILE")
if [ -z "$TITLE_LINE" ]; then
    echo "Błąd: pierwsza linia pliku nie zaczyna się od '#title:'"
    exit 1
fi
TITLE=$(printf '%s' "$TITLE_LINE")
tail -n +2 "$SRCFILE" > "$TMP_MD"
if command -v pandoc >/dev/null 2>&1; then
    pandoc -f markdown -t html "$TMP_MD" -o "$TMP_HTML"
else
    echo "Błąd: pandoc nie zainstalowany. Nie można przeprowadzić konwersji do HTML."
    rm -f "$TMP_MD"
    exit 1
fi
CONTENT_HTML=$(cat "$TMP_HTML")
SAFE_TITLE=$(sanitize_title "$TITLE")
OUTFILE="${SAFE_TITLE}.php"
cp "$TEMPLATE" "$OUTFILE"
CURRENT_USER=$(whoami)
CURRENT_DATE=$(date +"%Y-%m-%d %H:%M:%S")
TITLE_AWK=$(awk_escape "$TITLE")
USER_AWK=$(awk_escape "$CURRENT_USER")
DATE_AWK=$(awk_escape "$CURRENT_DATE")
CONTENT_AWK=$(awk_escape "$CONTENT_HTML")
awk -v title="$TITLE_AWK" \
    -v user="$USER_AWK" \
    -v date="$DATE_AWK" \
    -v content="$CONTENT_AWK" '
{
    gsub(/<>/, title);
    gsub(/<>/,  user);
    gsub(/<>/,  date);
    gsub(/<>/, content);
    print;
}
' "$OUTFILE" > "${OUTFILE}.tmp" && mv "${OUTFILE}.tmp" "$OUTFILE"
rm -f "$TMP_MD" "$TMP_HTML"
mv "$OUTFILE" "/home/$CURRENT_USER/public_html/blog/posts/"
echo "Post utworzony i zapisany do: /home/$CURRENT_USER/public_html/blog/posts/$OUTFILE"
echo "Zobacz go tutaj: https://tylda.org/~$CURRENT_USER/blog/$OUTFILE"
exit 0