#!/usr/bin/env bash # Generate a Markdown bibliography file --- that is, definitions for # reference-style link labels --- from a documentation directory's # config.sh file. # # Usage: # make-bibliography.sh [--mdn] CONFIG CITING-URL # # where: # - CONFIG is the name of the config.sh file to process; and # - CITING-URL is the absolute URL at which the document using these labels # will appear. The links we output use URLs relative to CITING-URL to # refer to the URLs given in CONFIG. # # If given the --mdn flag, generate links that are correct for files # as they appear in format.sh's OUTPUTDIR, not for publishing on MDN. set -eu mdn=false while true; do case "${1-}" in '--mdn') mdn=true shift ;; *) break ;; esac done lib=$(dirname $0) config=$1 citing=$2 source "$lib/common.sh" source "$lib/dummy-config.sh" label() { local label=$1; shift local fragment= case "$1" in '#'*) fragment=$1; shift ;; esac local title=${1:+ \"$1\"} citing_prefix=$(dirname "$citing")/ if $mdn; then echo "[$label]: $(relative "$citing_prefix" "$BASE_URL$RELATIVE_URL")$fragment$title" else echo "[$label]: ${INPUT_FILE/md/html}$fragment$title" fi } absolute-label() { local label=$1 local absolute_url=$2 local title=$3 echo "[$label]: $absolute_url${title:+ \"$title\"}" } resource() { local label=$1 file=$2 absolute_url=$3 if [ -n "$label" ]; then if $mdn; then echo "[$label]: $absolute_url" else echo "[$label]: $file" fi fi } source "$config"