aboutsummaryrefslogtreecommitdiffstats
path: root/src/anissue.sh
diff options
context:
space:
mode:
authorLibravatar Alexander Foremny <aforemny@posteo.de>2023-09-28 16:45:47 +0200
committerLibravatar Alexander Foremny <aforemny@posteo.de>2023-09-28 16:49:39 +0200
commit3592e5b055ad0fcd70d1ae9e4804a4b5c6a77c5d (patch)
tree18700c6bca9a3815fbc588cab18f3afd8362673d /src/anissue.sh
parent1f9282020f19a3e9826d976e639cf9f9700db331 (diff)
add list, show commands
The `list` command can be omitted and is the default. The `show` command retains past output. ```console $ anissue -h Usage: anissue anissue list anissue show ``` The implementation uses docopts, the shell variant of docopt [1]. Because of that, wrapping with `--argv0 ''` is necessary when packaging. [1] http://docopt.org/
Diffstat (limited to 'src/anissue.sh')
-rwxr-xr-xsrc/anissue.sh45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/anissue.sh b/src/anissue.sh
new file mode 100755
index 0000000..10736c6
--- /dev/null
+++ b/src/anissue.sh
@@ -0,0 +1,45 @@
+#!/usr/bin/env bash
+# Usage:
+# anissue
+# anissue list
+# anissue show
+
+set -efu
+
+eval "$(sed -rn '0,/^$/{ /#!/d; s/^# ?//p }' "$0" | docopts -h- : "$@")"
+
+GREEN='\033[0;32m'
+BOLD=$(tput bold)
+NORMAL=$(tput sgr0)
+NC='\033[0m'
+
+if test $show = true; then
+ "$(dirname "$0")"/extract.sh "$@" | while read -r item; do
+ created_at=$(echo "$item" | jq -r .created_at)
+ file=$(echo "$item" | jq -r .file)
+ heading=$(echo "$item" | jq -r .heading)
+ body=$(echo "$item" | jq -r .body)
+ start_row=$(echo "$item" | jq -r .start_row)
+ end_row=$(echo "$item" | jq -r .end_row)
+
+ echo -e "$GREEN--- $created_at --- $file$NC"
+ echo
+ echo "$BOLD$heading$NORMAL" | fold -s
+ if test -n "$body"; then
+ echo
+ echo "$body" | fold -s
+ echo
+ fi
+ echo
+ cat "$file" | nl -w 4 -s "| " -p -d '' -b a| tail -n +$(($start_row - 2)) | head -n $(($end_row - $start_row + 7))
+ echo
+ echo
+ done
+else
+ "$(dirname "$0")"/extract.sh "$@" | while read -r item; do
+ heading=$(echo "$item" | jq -r .heading)
+ echo "$heading"
+ done
+fi
+
+exit 0