blob: 33068ca9c47a85f1f39b7cb4ec90a18f289a30e1 [file] [log] [blame]
#!/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"