You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
1.3 KiB
Bash

function recht() {
# Load configuration values
local serverUrl="${ZSH_PLUGIN_RECHT_SERVER_URL:-https://www.gesetze-im-internet.de}"
local docsDir="${ZSH_PLUGIN_RECHT_DOCS_DIR:-$HOME/.zsh-recht-docs}";
local docViewer="${ZSH_PLUGIN_RECHT_DOC_VIEWER:-xdg-open}";
# Create output directory if not exists already
mkdir --parents "$docsDir";
# Load arguments
local docName="$1";
local docPartUrl="${1:l}/$1";
if <<<"$1" grep "/" >/dev/null; then
# Load argument as docPartUrl if it seems to be a path instead of a name
docName="$(<<< "$1" grep --only-matching --perl-regexp '(?<=/)[^/]*$')";
docPartUrl="$1";
fi
# Complain if name / path is not given
if [ -z "$1" ]; then
echo "Missing document name to open!" >/dev/stderr;
return 1;
fi
# Generate local path and remote url
local docPath="${docsDir}/${docName}.pdf";
local docUrl="${serverUrl}/${docPartUrl}.pdf";
# Download if local version not given
if [ ! -e "$docPath" ]; then
echo "Download document from gesetze-im-internet …";
curl --fail --silent --output "$docPath" "$docUrl";
fi
# Try to open document
if [ -e "$docPath" ]; then
$docViewer "$docPath" >/dev/null 2>&1 &!;
else
echo "Document $1 not found" >/dev/stderr;
return 1;
fi
}