#!/bin/sh set -eu usage() { cat <. Usage: pastebin.sh [-|FILE] Reads contents from [FILE], from stdin if '-' is given, and opens the editor on the content. Arguments: FULL_TITLE Full title of the pastebin Examples: pastebin.sh 'My example pastebin title' pastebin.sh 'My example pastebin title' - < file cat file | pastebin.sh 'My example pastebin title' - EOF } FULL_TITLE="${1:-}" [ -z "$FULL_TITLE" ] && { usage 'FULL_TITLE' exit 2 } # Derived from: # https://stackoverflow.com/questions/4009281/how-can-i-generate-url-slugs-in-perl/4009519#4009519 slugify() { echo "$1" | \ tr '[:upper:]' '[:lower:]' | \ perl -ne 'tr/\000-\177//cd; s/[^\w\s-]//g; s/^\s+|\s+$//g; s/[-\s]+/-/g; print;' } SLUG_TITLE="$(slugify "$FULL_TITLE")" PASTE_DATE="$(date -I)" OUT="_pastebins/$PASTE_DATE-$SLUG_TITLE.md" if [ -n "${2:-}" ]; then shift CONTENT=$(cat "$@") else CONTENT='FIXME' fi cd ~/dev/libre/website > /dev/null [ -f "$OUT" ] && { echo "Pastebin named $OUT already exists." exit 1 } cat < "$OUT" --- title: ${FULL_TITLE} date: ${PASTE_DATE} layout: post lang: en ref: $SLUG_TITLE --- \`\`\`FIXME $CONTENT \`\`\` EOF git reset . git add "$OUT" git commit -m "$0: Auto-add $OUT" make publish open "https://euandre.org/pastebin/$(echo "$PASTE_DATE" | tr '-' '/')/$SLUG_TITLE.html" cd - > /dev/null