#!/bin/sh set -eu usage() { cat <<-'EOF' Usage: url-for [CONTENT...] url-for -h EOF } help() { cat <<-'EOF' Options: -h, --help show this message CONTENT literal strings to be transformed into URLs Build an URL without the $domain part, adding the required $base_url. If CONTENT is not given, get data from STDIN. Examples: Get the URL for "en/about.html", when $base_url is "v2": $ url-for 'about.html' /v2/en/about.html Get the URL for "static/favicon.svg", when $base_url is empty: $ echo 'img/link.svg' | url-for /img/link.svg EOF } for flag in "$@"; do case "$flag" in --) break ;; --help) usage help exit ;; *) ;; esac done while getopts 'h' flag; do case "$flag" in h) usage help exit ;; *) usage >&2 exit 2 ;; esac done shift $((OPTIND - 1)) . src/lib/base.conf url() { sed \ -e "s|^$CONTENT_PREFIX/||" \ -e 's|\.md|.html|' \ -e 's|\.page|.html|' \ -e 's|^/||' | printf '%s%s\n' "${base_url:-/}" "$(cat -)" } if [ $# = 0 ]; then url else for f in "$@"; do if [ "$f" = '/' ]; then f='' fi printf '%s\n' "$f" | url done fi