diff options
-rwxr-xr-x | src/bin/pb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/bin/pb b/src/bin/pb new file mode 100755 index 0000000..ed88c62 --- /dev/null +++ b/src/bin/pb @@ -0,0 +1,60 @@ +#!/bin/sh +set -eu + +usage() { + cat <<-'EOF' + Usage: pb FILENAME.adoc [CONTENT] + EOF +} + + +TITLE=FIXME +while getopts 't:' flag; do + case "$flag" in + (t) + TITLE="$OPTARG" + ;; + (*) + usage >&2 + exit 2 + ;; + esac +done +shift $((OPTIND - 1)) + + +FILENAME="${1:-}" +SOURCE="${2:-}" +eval "$(assert-arg -- "$FILENAME" 'FILENAME')" +FILENAME="${FILENAME%.adoc}.adoc" + +cd "$(dirname "$(readlink -f -- "$0")")"/../../ + +DIR=src/content/pastebins/"$(timestamp | sed 's|-|/|g')" +OUT="$DIR"/"$FILENAME" + +if [ -e "$OUT" ]; then + printf '"%s" already exists.\n' "$OUT" >&2 + exit 2 +fi + +if [ -n "$SOURCE" ]; then + CONTENT="$(cat "$SOURCE")" +else + if [ -t 0 ]; then + CONTENT='FIXME' + else + printf 'Reading from STDIN...\n' >&2 + CONTENT="$(cat)" + exec 0</dev/tty + fi +fi + +mkdir -p "$DIR" +printf '= %s\n\n[source,sh]\n----\n%s\n----\n' "$TITLE" "$CONTENT" > "$OUT" +${VISUAL:-${EDITOR:-vi}} "$OUT" + +sh mkdeps.sh > deps.mk +git reset . +git add "$OUT" deps.mk +git commit -m "pb(1): Auto-add \"$OUT\"" |