diff --git a/.config/zsh/completions/_readwwwlog b/.config/zsh/completions/_readwwwlog new file mode 100644 index 0000000..4439993 --- /dev/null +++ b/.config/zsh/completions/_readwwwlog @@ -0,0 +1,7 @@ +#compdef readwwwlog + +_arguments '-h[short help text]' '*:url:_urls' + +# Local Variables: +# mode: shell-script +# End: diff --git a/.config/zsh/functions/readwwwlog b/.config/zsh/functions/readwwwlog new file mode 100755 index 0000000..92412eb --- /dev/null +++ b/.config/zsh/functions/readwwwlog @@ -0,0 +1,33 @@ +#!/usr/bin/env zsh +# Open log files from paste services in a terminal. If the URL doesm't seem to +# be plain text, open in ${default_cmd} instead + +setopt LOCAL_OPTIONS ERR_RETURN NO_UNSET PIPE_FAIL + +zmodload zsh/zutil +local -a o_help=() +zparseopts -D -K -- h=o_help +if [[ ${#o_help} -ne 0 || ! -v 1 ]]; then + ret=$(( ${#o_help} ^ 1 )) + print -u $(( 1 + ${ret} )) "usage: ${0} [-h] …" + return ${ret} +fi +local -a urls=(${@}) + +local default_cmd="firefox" + +for url in ${urls}; do + if [[ ${url} =~ 'dpaste\.com' && ! ${url[-4,-1]} == ".txt" ]]; then + url+=".txt" + fi + + if curl --silent --location --head ${url} | grep -q 'text/plain'; then + sleep 1 # dpaste.com workaround + local file="$(mktemp)" + curl --silent --location --output ${file} ${url} + ${TERMINAL} -e less ${file} + rm ${file} + else + ${default_cmd} ${url} + fi +done