mirror of
https://github.com/privacyguides/privacyguides.org
synced 2024-11-13 22:53:36 +01:00
148 lines
3.6 KiB
Bash
Executable File
148 lines
3.6 KiB
Bash
Executable File
#!/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
|
|
- about/handbook/*
|
|
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
|