mirror of
https://github.com/classilla/tenfourfox.git
synced 2024-06-27 02:29:35 +00:00
84 lines
2.2 KiB
Bash
Executable File
84 lines
2.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Format js/src/doc documentation in SOURCEDIR, place formatted files in OUTPUTDIR,
|
|
# and post all changed pages to MDN using KEYID and SECRET to identify the poster.
|
|
# See js/src/doc/README.md for general usage information.
|
|
#
|
|
# Usage:
|
|
#
|
|
# ./publish.sh SOURCEDIR OUTPUTDIR KEYID SECRET
|
|
#
|
|
# Pages are tagged with the current Mercurial parent changeset ID.
|
|
|
|
set -eu
|
|
|
|
progname=$(basename $0)
|
|
doc=$(cd $(dirname $0); pwd)
|
|
lib=$doc/lib
|
|
|
|
sourcedir=$1
|
|
outputdir=$2
|
|
keyid=$3
|
|
secret=$4
|
|
|
|
$doc/format.sh --mdn "$sourcedir" "$outputdir"
|
|
|
|
config=$sourcedir/config.sh
|
|
|
|
watermark=$lib/extract-watermark.sh
|
|
|
|
# Fetch a URL, with caching disabled.
|
|
fetch() {
|
|
curl --silent -XGET "$1" \
|
|
-H"Cache-Control: no-cache, no-store, must-revalidate" \
|
|
-H"Pragma: no-cache" \
|
|
-H"Expires: 0"
|
|
}
|
|
|
|
source $lib/dummy-config.sh
|
|
|
|
markdown() {
|
|
INPUT_FILE=$1
|
|
URL=$BASE_URL$2
|
|
|
|
local formatted_file=$outputdir/${INPUT_FILE/md/html}
|
|
|
|
# Extract the watermark from the formatted file.
|
|
local local_watermark=$("$watermark" < "$formatted_file")
|
|
|
|
# Get the existing page, and extract its watermark, if any.
|
|
local public_watermark=$(fetch "$URL?raw" | "$watermark")
|
|
|
|
if [ "$local_watermark" != "$public_watermark" ]; then
|
|
echo "$progname: Updating: $URL" >&2
|
|
local status
|
|
status=$(curl --silent -X PUT -H"Content-Type: text/html" --upload-file "$formatted_file" -u "$keyid:$secret" "$URL")
|
|
case "$status" in
|
|
CREATED | RESET)
|
|
;;
|
|
*)
|
|
echo "$progname: Error posting $URL, from $config: $status" >&2
|
|
exit 1
|
|
;;
|
|
esac
|
|
else
|
|
echo "$progname: Unchanged: $URL" >&2
|
|
fi
|
|
}
|
|
|
|
# MDN can't currently update attached resources. But we can verify that the current
|
|
# published versions match what we have.
|
|
resource() {
|
|
local label=$1
|
|
local file=$sourcedir/$2
|
|
local url=$3
|
|
|
|
if cmp "$file" <(fetch "$url") > /dev/null; then
|
|
echo "$progname: Unchanged: $url" >&2
|
|
else
|
|
echo "$progname: Warning: resource out of date: $url" >&2
|
|
fi
|
|
}
|
|
|
|
source $config
|