summaryrefslogtreecommitdiff
path: root/src/bin/pb
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2025-04-06 13:30:46 -0300
committerEuAndreh <eu@euandre.org>2025-04-07 05:36:09 -0300
commit49bfdd1132c9f8fdf74625c92d88aa7cf0898ef7 (patch)
tree48367ce4ae057ebb7f9a3fa7aa704cc0a422c6f3 /src/bin/pb
parentMakefile: Prefix unit-test targets with "check-unit" (diff)
downloadeuandre.org-49bfdd1132c9f8fdf74625c92d88aa7cf0898ef7.tar.gz
euandre.org-49bfdd1132c9f8fdf74625c92d88aa7cf0898ef7.tar.xz
src/bin/pb: Add initial version
Diffstat (limited to 'src/bin/pb')
-rwxr-xr-xsrc/bin/pb60
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\""