#!/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>>/, user); gsub(/<<DATE>>/, date); gsub(/<<CONTENT>>/, 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