#!/bin/sh # esv: Read the Word of God from your terminal # License: Public domain SELF="$0" get_data() { sed '1,/^#EOF$/d' < "$SELF" | tar xzf - -O "$1" } if [ -z "$PAGER" ]; then if command -v less >/dev/null; then PAGER="less" else PAGER="cat" fi fi show_help() { exec >&2 echo "usage: $(basename "$0") [flags] [reference...]" echo echo " -l list books" echo " -W no line wrap" echo " -h show help" echo echo " Reference types:" echo " " echo " Individual book" echo " :" echo " Individual chapter of a book" echo " ::[,]..." echo " Individual verse(s) of a specific chapter of a book" echo " :-" echo " Range of chapters in a book" echo " ::-" echo " Range of verses in a book chapter" echo " ::-:" echo " Range of chapters and verses in a book" echo echo " /" echo " All verses that match a pattern" echo " /" echo " All verses in a book that match a pattern" echo " :/" echo " All verses in a chapter of a book that match a pattern" exit 2 } while [ $# -gt 0 ]; do isFlag=0 firstChar="${1%"${1#?}"}" if [ "$firstChar" = "-" ]; then isFlag=1 fi if [ "$1" = "--" ]; then shift break elif [ "$1" = "-l" ]; then # List all book names with their abbreviations get_data esv.tsv | awk -v cmd=list "$(get_data esv.awk)" exit elif [ "$1" = "-W" ]; then export ESV_NOLINEWRAP=1 shift elif [ "$1" = "-h" ] || [ "$isFlag" -eq 1 ]; then show_help else break fi done cols=$(tput cols 2>/dev/null) if [ $? -eq 0 ]; then export ESV_MAX_WIDTH="$cols" fi if [ $# -eq 0 ]; then if [ ! -t 0 ]; then show_help fi # Interactive mode while true; do printf "esv> " if ! read -r ref; then break fi get_data esv.tsv | awk -v cmd=ref -v ref="$ref" "$(get_data esv.awk)" | ${PAGER} done exit 0 fi get_data esv.tsv | awk -v cmd=ref -v ref="$*" "$(get_data esv.awk)" | ${PAGER}