Scripts

Bash scripts that have made life easier


Phlogging

A little script so I can write my phlog locally

#!/bin/bash

set -e

LOCAL_DIR="$HOME/phlog"
REMOTE="revealing-this-is-probably-not-a-good-idea"
REMOTE_DIR="gopher/phlog"

if [ -z "$1" ]; then
    echo "Usage: phlog \"Post title\""
    exit 1
fi

TITLE="$1"
DATE=$(date +%F)

SLUG=$(printf '%s' "$TITLE" \
    | tr '[:upper:]' '[:lower:]' \
    | tr ' ' '-' \
    | tr -cd 'a-z0-9-')

FILE="${DATE}-${SLUG}.txt"
LOCAL_FILE="$LOCAL_DIR/$FILE"

mkdir -p "$LOCAL_DIR"

if [ -e "$LOCAL_FILE" ]; then
    echo "Refusing to overwrite existing file:"
    echo "$LOCAL_FILE"
    exit 1
fi

nano "$LOCAL_FILE"

if [ ! -s "$LOCAL_FILE" ]; then
    echo "Post is empty. Nothing published."
    rm -f "$LOCAL_FILE"
    exit 1
fi

echo "Uploading..."
scp "$LOCAL_FILE" "$REMOTE:$REMOTE_DIR/$FILE"

echo "Updating phlog..."
ssh "$REMOTE" "
    cd $REMOTE_DIR &&
    chmod 644 '$FILE' &&
    cp gophermap gophermap.bak &&
{
    head -n 4 gophermap.bak
    printf '0%s\t%s\n' '$DATE - $TITLE' '$FILE'
    tail -n +4 gophermap.bak
} > gophermap &&

    rm gophermap.bak
"

echo
echo "Published:"
echo "$TITLE"
echo "$LOCAL_FILE"


[Home]