privacyguides.org/run.sh

147 lines
3.6 KiB
Bash
Raw Normal View History

#!/bin/bash
# Add --help output
if [ "$1" == "--help" ]; then
echo "Usage: ./run.sh [options]"
echo "Options:"
echo " --lang=<language code> (default: en) Language code for the site"
echo " --insiders Enable insiders mode"
echo ' --cmd="<base command>" Base command to run mkdocs'
echo ' (default: "pipenv run mkdocs")'
echo ' --cmd_flags="<flags>" Flags to pass to the base command'
echo " --build Build the site instead of serving it"
echo " --offline Build the site in offline mode"
echo " --production Build the site in production mode"
echo ""
echo "Examples:"
echo " $ bash run.sh"
echo " $ bash run.sh --lang=ru --insiders"
echo ' $ bash run.sh --cmd="mkdocs" --cmd_flags="--dev-addr=0.0.0.0:8000"'
echo " $ bash run.sh --build"
exit
fi
# Defaults
build=false
language="en"
base_cmd="pipenv run mkdocs"
offline=false
cmd_flags=()
insiders=false
export PRODUCTION=false
# Parse command-line arguments
for arg in "$@"
do
case $arg in
--lang=*)
language="${arg#*=}"
shift
;;
--insiders)
insiders=true
shift
;;
--cmd=*)
base_cmd="${arg#*=}"
shift
;;
--build)
build=true
shift
;;
--offline)
offline=true
shift
;;
--production)
export PRODUCTION=true
shift
;;
--cmd_flags=*)
cmd_flags+=("${arg#*=}")
shift
;;
*)
shift
;;
esac
done
# Set variables for offline mode
if $offline ; then
export BUILD_EDIT_URI_TEMPLATE=''
export BUILD_OFFLINE=true
export BUILD_REPO_URL=''
export CARDS=false
export HOMEPAGE_BUTTON_GET_STARTED_LINK="basics/why-privacy-matters.html"
export HOMEPAGE_BUTTON_TOOLS_LINK="tools.html"
fi
# Set environment variables if language is not en
if [ "$language" != "en" ]; then
export BUILD_ABBREVIATIONS="includes/abbreviations.$language.txt"
export BUILD_DOCS_DIR="i18n/$language"
export BUILD_EDIT_URI_TEMPLATE="https://github.com/privacyguides/i18n/blob/main/i18n/$language/{path}?plain=1"
export BUILD_SITE_DIR="site/$language"
export BUILD_SITE_URL="https://www.privacyguides.org/$language"
export BUILD_THEME_LANGUAGE="$language"
fi
# Source per-language strings
set -a
# shellcheck disable=SC1090
source "$PWD/includes/strings.$language.env"
set +a
# Set font if hebrew
if [ "$language" == "he" ]; then
export BUILD_THEME_FONT_CODE="Cousine"
export BUILD_THEME_FONT_TEXT="Open Sans"
fi
# Set font if chinese
if [ "$language" == "zh-Hant" ]; then
export BUILD_THEME_FONT_CODE="Noto Sans TC"
export BUILD_THEME_FONT_TEXT="Noto Sans TC"
fi
# Set stylesheet if hebrew or russian or chinese
if [[ "he ru zh-Hant" =~ $language ]]; then
export TRANSLATION_STYLESHEET="assets/stylesheets/lang-$language.css?v=20240410"
fi
# Set theme if insiders
if $insiders ; then
random_num=$RANDOM
export BUILD_INSIDERS=true
cmd_flags+=("--config-file=$PWD/.mkdocs-insiders-$random_num.yml")
touch "$PWD/.mkdocs-insiders-$random_num.yml"
cat <<EOT >> "$PWD/.mkdocs-insiders-$random_num.yml"
INHERIT: mkdocs.yml
watch:
- theme
- includes
- mkdocs.yml
markdown_extensions:
material.extensions.preview:
sources:
exclude:
- index.md
- tools.md
targets:
exclude:
- about/contributors.md
EOT
trap 'rm $PWD/.mkdocs-insiders-$random_num.yml' EXIT
fi
# Run the command with the specified language
if $build ; then
$base_cmd build "${cmd_flags[@]}"
else
$base_cmd serve "${cmd_flags[@]}"
fi