blob: 699c6dd212ea8c71bd0c6cf21e756b7e661bee64 (
plain) (
tree)
|
|
#!/usr/bin/env bash
set -Eeuo pipefail
end="\033[0m"
red="\033[0;31m"
red() { echo -e "${red}${1}${end}"; }
JSON="${1:-}"
[[ -z "${JSON}" ]] && {
red 'Missing input JSON file.'
cat <<EOF
Usage:
$0 <SITE_JSON_PATH>
Arguments
SITE_JSON_PATH Path to the site.json file which contains data and metadata about pages of the site.
Examples:
$0 _site/site.json
$0 result/site.json
$0 \$(nix-build -A subtasks.docs)/site.json
EOF
exit 2
}
get-ref() {
echo "${1}" | base64 --decode | jq -r .ref
}
get-lang() {
echo "${1}" | base64 --decode | jq -r .lang
}
declare -A IDENTS
declare -A ALL_REFS
accumulate-translation-identifiers() {
SELECTOR="${1}"
for page in $(jq -r "${SELECTOR} | @base64" "${JSON}"); do
REF="$(get-ref "$page")"
LANG="$(get-lang "$page")"
if [[ -n "${REF}" ]]; then
ALL_REFS["${REF}"]=1
IDENTS["${REF}:${LANG}"]=1
fi
done
}
accumulate-translation-identifiers '.posts[]'
accumulate-translation-identifiers '.pages[]'
accumulate-translation-identifiers '.tils[]'
LANGS=(en pt fr)
for ref in "${!ALL_REFS[@]}"; do
REF="$(cut -d: -f1 <(echo "${ref}"))"
for lang in "${LANGS[@]}"; do
if [[ "${IDENTS[${ref}:${lang}]:-}" != 1 ]]; then
echo "ref '${ref}' is missing language '${lang}'."
fi
done
done
|