From 2471612aae0f4848b7b550e62c6557683885f36a Mon Sep 17 00:00:00 2001 From: Jonah Aragon Date: Wed, 10 Apr 2024 15:18:32 -0500 Subject: [PATCH] Remove per-language config files (#2513) --- .cache/plugin/social/fonts | 1 + .devcontainer/devcontainer.json | 2 +- .devcontainer/team/devcontainer.json | 2 +- .github/workflows/build-container.yml | 1 - .github/workflows/build-pr.yml | 116 +++++++++ .github/workflows/build.yml | 227 ++++++++++++++---- .github/workflows/publish-pr.yml | 153 ++++++------ .github/workflows/test-build.yml | 2 +- .gitignore | 13 +- Dockerfile | 7 +- README.md | 18 +- config/.cache/plugin/social/fonts | 1 - config/mkdocs-offline.yml | 70 ------ config/mkdocs-production.yml | 29 --- config/mkdocs.es.yml | 34 --- config/mkdocs.fr.yml | 34 --- config/mkdocs.he.yml | 41 ---- config/mkdocs.it.yml | 34 --- config/mkdocs.nl.yml | 34 --- config/mkdocs.ru.yml | 38 --- config/mkdocs.zh-Hant.yml | 41 ---- config/mkdocs.en.yml => mkdocs-production.yml | 12 +- config/mkdocs-common.yml => mkdocs.yml | 63 +++-- {config => theme}/layouts/home.yml | 2 +- {config => theme}/layouts/page.yml | 4 +- {config => theme}/layouts/pride.yml | 0 theme/main.html | 6 + 27 files changed, 463 insertions(+), 522 deletions(-) create mode 120000 .cache/plugin/social/fonts create mode 100644 .github/workflows/build-pr.yml delete mode 120000 config/.cache/plugin/social/fonts delete mode 100644 config/mkdocs-offline.yml delete mode 100644 config/mkdocs-production.yml delete mode 100644 config/mkdocs.es.yml delete mode 100644 config/mkdocs.fr.yml delete mode 100644 config/mkdocs.he.yml delete mode 100644 config/mkdocs.it.yml delete mode 100644 config/mkdocs.nl.yml delete mode 100644 config/mkdocs.ru.yml delete mode 100644 config/mkdocs.zh-Hant.yml rename config/mkdocs.en.yml => mkdocs-production.yml (78%) rename config/mkdocs-common.yml => mkdocs.yml (89%) rename {config => theme}/layouts/home.yml (96%) rename {config => theme}/layouts/page.yml (97%) rename {config => theme}/layouts/pride.yml (100%) diff --git a/.cache/plugin/social/fonts b/.cache/plugin/social/fonts new file mode 120000 index 0000000000..99d2288cfd --- /dev/null +++ b/.cache/plugin/social/fonts @@ -0,0 +1 @@ +../../../theme/assets/brand/fonts \ No newline at end of file diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index 5d95312a8d..bb94855114 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -4,5 +4,5 @@ "name": "Privacy Guides", "image": "ghcr.io/squidfunk/mkdocs-material:9.5.17", "forwardPorts": [8000], - "postCreateCommand": "git submodule init; git submodule update theme/assets/brand; mkdocs serve --dev-addr=0.0.0.0:8000 --config-file config/mkdocs.en.yml" + "postCreateCommand": "git submodule init; git submodule update theme/assets/brand; mkdocs serve --dev-addr=0.0.0.0:8000" } diff --git a/.devcontainer/team/devcontainer.json b/.devcontainer/team/devcontainer.json index ab7c263705..06046a1eb2 100644 --- a/.devcontainer/team/devcontainer.json +++ b/.devcontainer/team/devcontainer.json @@ -4,5 +4,5 @@ "name": "Privacy Guides Team", "image": "ghcr.io/privacyguides/privacyguides.org:main", "forwardPorts": [8000], - "postCreateCommand": "git submodule init; git submodule update theme/assets/brand; MKDOCS_INHERIT=mkdocs-production.yml mkdocs serve --dev-addr=0.0.0.0:8000 --config-file config/mkdocs.en.yml" + "postCreateCommand": "git submodule init; git submodule update theme/assets/brand; mkdocs serve --dev-addr=0.0.0.0:8000 --config-file mkdocs-production.yml" } diff --git a/.github/workflows/build-container.yml b/.github/workflows/build-container.yml index 47064fc69b..4321f0c40f 100644 --- a/.github/workflows/build-container.yml +++ b/.github/workflows/build-container.yml @@ -1,4 +1,3 @@ -# name: ☁️ Build Container # Configures this workflow to run every time a change is pushed to the branch called `release`. diff --git a/.github/workflows/build-pr.yml b/.github/workflows/build-pr.yml new file mode 100644 index 0000000000..6838b34e1a --- /dev/null +++ b/.github/workflows/build-pr.yml @@ -0,0 +1,116 @@ +name: 🛠️ Build PR Preview + +on: + pull_request: + +concurrency: + group: ${{github.event.pull_request.head.ref}} + cancel-in-progress: true + +permissions: + contents: read + +jobs: + metadata: + runs-on: ubuntu-latest + outputs: + submodules: ${{ steps.submodules-fork.outputs.submodules || steps.submodules-main.outputs.submodules }} + privileged: ${{ steps.submodules-fork.outputs.privileged || steps.submodules-main.outputs.privileged }} + env: + ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }} + steps: + - name: Set submodules for fork + if: env.ACTIONS_SSH_KEY == '' + id: submodules-fork + run: | + echo 'submodules={"repo":["brand","i18n"]}' >> "$GITHUB_OUTPUT" + echo "privileged=false" >> "$GITHUB_OUTPUT" + + - name: Set submodules for main repo + if: env.ACTIONS_SSH_KEY != '' + id: submodules-main + run: | + echo 'submodules={"repo":["brand","i18n","mkdocs-material-insiders"]}' >> "$GITHUB_OUTPUT" + echo "privileged=true" >> "$GITHUB_OUTPUT" + + - name: Save PR metadata + run: | + mkdir -p ./metadata + echo ${{ github.event.number }} > ./metadata/NR + echo ${{ github.event.pull_request.head.sha }} > ./metadata/SHA + + - name: Upload metadata as artifact + uses: actions/upload-artifact@v4 + with: + name: metadata + path: metadata + + submodule: + needs: metadata + strategy: + matrix: ${{ fromJson(needs.metadata.outputs.submodules) }} + uses: privacyguides/.github/.github/workflows/download-repo.yml@main + with: + repo: ${{ matrix.repo }} + privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} + secrets: + ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }} + + build_english: + needs: [submodule, metadata] + strategy: + matrix: + lang: [en] + fail-fast: true + uses: ./.github/workflows/build.yml + with: + ref: ${{github.event.pull_request.head.ref}} + repo: ${{github.event.pull_request.head.repo.full_name}} + lang: en + continue-on-error: false + privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} + + build_i18n: + if: ${{ contains(github.event.pull_request.labels.*.name, 'ci:build i18n') }} + needs: [submodule, metadata] + strategy: + matrix: + lang: [es, fr, he, it, nl, ru, zh-Hant] + fail-fast: false + uses: ./.github/workflows/build.yml + with: + ref: ${{github.event.pull_request.head.ref}} + repo: ${{github.event.pull_request.head.repo.full_name}} + lang: ${{ matrix.lang }} + continue-on-error: true + privileged: ${{ fromJSON(needs.metadata.outputs.privileged) }} + + combine_build: + needs: [build_english, build_i18n] + if: | + (always() && !cancelled() && !failure()) && + needs.build_english.result == 'success' && + (needs.build_i18n.result == 'success' || needs.build_i18n.result == 'skipped') + + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + pattern: site-build-* + merge-multiple: true + + - run: | + for file in *.tar.gz; do tar -zxf "$file"; done + ls -la site/ + + - name: Upload Site + uses: actions/upload-artifact@v4 + with: + name: site-build-combined + path: site + retention-days: 5 + + cleanup: + if: ${{ always() }} + needs: [build_english, build_i18n] + uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ac4b22589a..74faa83f45 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,4 +1,4 @@ -name: Build Website +name: 🛠️ Build Website on: workflow_call: @@ -21,6 +21,9 @@ on: continue-on-error: type: boolean default: true + privileged: + type: boolean + default: true permissions: contents: read @@ -33,104 +36,242 @@ jobs: contents: read steps: - - run: | + - name: Add GitHub Token to Environment + run: | echo "GH_TOKEN=${{ secrets.GITHUB_TOKEN }}" >> "$GITHUB_ENV" - - if: inputs.config == 'build' + - name: Set Metadata + if: inputs.config == 'build' run: | { - echo "MKDOCS_INHERIT=mkdocs-production.yml" + echo "BUILD_CONTEXT=${{ inputs.context }}" + echo "BUILD_EDIT_URI_TEMPLATE=blob/main/docs/{path}?plain=1" + echo "BUILD_REPO_URL=https://github.com/privacyguides/privacyguides.org" echo "PRODUCTION=true" - echo "CONTEXT=${{ inputs.context }}" } >> "$GITHUB_ENV" - - if: inputs.config == 'offline' + - name: Set Metadata for Privileged Builds + if: inputs.privileged + run: echo "BUILD_INSIDERS=true" >> "$GITHUB_ENV" + + - name: Set Metadata for Offline Mode + if: inputs.config == 'offline' + run: | + { + echo "BUILD_EDIT_URI_TEMPLATE=''" + echo "BUILD_OFFLINE=true" + echo "BUILD_REPO_URL=''" + echo "CARDS=false" + echo "HOMEPAGE_BUTTON_GET_STARTED_LINK=basics/why-privacy-matters.html" + echo "HOMEPAGE_BUTTON_TOOLS_LINK=tools.html" + } >> "$GITHUB_ENV" + + - name: Set Metadata for Translations + if: inputs.lang != 'en' + run: | + { + echo "BUILD_ABBREVIATIONS=includes/abbreviations.${{ inputs.lang }}.txt" + echo "BUILD_DOCS_DIR=i18n/${{ inputs.lang }}" + echo "BUILD_EDIT_URI_TEMPLATE=https://github.com/privacyguides/i18n/blob/main/i18n/${{ inputs.lang }}/{path}?plain=1" + echo "BUILD_SITE_DIR=site/${{ inputs.lang }}" + echo "BUILD_SITE_URL=https://privacyguides.org/${{ inputs.lang }}" + echo "BUILD_THEME_LANGUAGE=${{ inputs.lang }}" + } >> "$GITHUB_ENV" + + - name: Set Metadata for Hebrew Translation + if: inputs.lang == 'he' + run: | + { + echo "BUILD_THEME_FONT_CODE=Cousine" + echo "BUILD_THEME_FONT_TEXT=Open Sans" + echo "TRANSLATION_STYLESHEET=assets/stylesheets/lang-${{ inputs.lang }}.css?v=20240410" + } >> "$GITHUB_ENV" + + - name: Set Metadata for Russian Translation + if: inputs.lang == 'ru' + run: | + { + echo "TRANSLATION_STYLESHEET=assets/stylesheets/lang-${{ inputs.lang }}.css?v=20240410" + } >> "$GITHUB_ENV" + + - name: Set Metadata for Chinese (Traditional) Translation + if: inputs.lang == 'zh-Hant' run: | - echo "MKDOCS_INHERIT=mkdocs-offline.yml" >> "$GITHUB_ENV" - echo "CARDS=false" >> "$GITHUB_ENV" + { + echo "BUILD_THEME_FONT_CODE=Noto Sans TC" + echo "BUILD_THEME_FONT_TEXT=Noto Sans TC" + echo "TRANSLATION_STYLESHEET=assets/stylesheets/lang-${{ inputs.lang }}.css?v=20240410" + } >> "$GITHUB_ENV" - - uses: actions/checkout@v4 + - name: Download Repository + uses: actions/checkout@v4 with: repository: ${{ inputs.repo }} ref: ${{ inputs.ref }} persist-credentials: "false" fetch-depth: 0 - - uses: actions/download-artifact@v4 + - name: Download Submodules + uses: actions/download-artifact@v4 with: pattern: repo-* path: modules - - run: | + - name: Move mkdocs-material-insiders to mkdocs-material + if: inputs.privileged + run: | rmdir modules/mkdocs-material mv modules/repo-mkdocs-material-insiders modules/mkdocs-material + + - name: Move brand submodule to theme/assets/brand + run: | rmdir theme/assets/brand mv modules/repo-brand theme/assets/brand - - if: inputs.lang != 'en' + - name: Copy Translation Files + if: inputs.lang != 'en' run: | cp -rl modules/repo-i18n/i18n . cp -rl modules/repo-i18n/includes . cp -rl modules/repo-i18n/theme . - - uses: actions/setup-python@v5 + - name: Install Python + uses: actions/setup-python@v5 with: cache: "pipenv" - - uses: actions/cache/restore@v4.0.2 - id: site_cache_restore + - name: Restore Privacy Plugin Cache + uses: actions/cache/restore@v4.0.2 + id: privacy_cache_restore with: - key: site-cache-${{ inputs.repo }}-${{ inputs.ref }}-${{ hashfiles('.cache/**') }} - path: .cache + key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }} + path: | + .cache/plugin/privacy restore-keys: | - site-cache-${{ inputs.repo }}-${{ inputs.ref }}- - site-cache-${{ inputs.repo }}- + privacy-cache-${{ inputs.repo }}- + privacy-cache-privacyguides/privacyguides.org- + privacy-cache- - - uses: actions/cache/restore@v4.0.2 - id: card_cache_restore + - name: Restore Social Plugin Cache + uses: actions/cache/restore@v4.0.2 + id: social_cache_restore with: - key: card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}-${{ hashfiles('config/.cache/plugin/social/manifest.json') }} + key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} path: | - config/.cache/plugin/social/manifest.json - config/.cache/plugin/social/assets + .cache/plugin/social/manifest.json + .cache/plugin/social/assets restore-keys: | - card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}- - card-cache-${{ inputs.repo }}-${{ inputs.lang }}- + social-cache-${{ inputs.repo }}-${{ inputs.lang }}- + social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}- - - run: | + - name: Restore Optimize Plugin Cache + uses: actions/cache/restore@v4.0.2 + id: optimize_cache_restore + with: + key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} + path: | + .cache/plugin/optimize + restore-keys: | + optimize-cache-${{ inputs.repo }}- + optimize-cache-privacyguides/privacyguides.org- + optimize-cache- + + - name: Install Python Dependencies + if: inputs.privileged + run: | pip install pipenv pipenv install sudo apt install pngquant - - uses: falti/dotenv-action@v1.1 + - name: Install Python Dependencies (Unprivileged) + if: ${{ !inputs.privileged }} + run: | + pip install mkdocs-material + sudo apt install pngquant + + - name: Set Translated String Environment Variables + uses: falti/dotenv-action@v1.1 with: path: includes/strings.${{ inputs.lang }}.env export-variables: true keys-case: bypass - - run: | - pipenv run mkdocs build --config-file config/mkdocs.${{ inputs.lang }}.yml + - name: Build Website + if: inputs.privileged + run: | + pipenv run mkdocs build --config-file mkdocs-production.yml pipenv run mkdocs --version - tar -czvf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site - - uses: actions/cache/save@v4.0.2 - if: steps.site_cache_restore.outputs.cache-hit != 'true' + - name: Build Website (Unprivileged) + if: ${{ !inputs.privileged }} + run: | + mkdocs build + mkdocs --version + + - name: Package Website + run: | + tar -czf site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz site + + - name: Find Privacy Plugin Cache + uses: actions/cache/restore@v4.0.2 + if: steps.privacy_cache_restore.outputs.cache-hit != 'true' + id: privacy_cache_test + with: + key: privacy-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/privacy/**') }} + lookup-only: true + path: | + .cache/plugin/privacy + + - name: Find Social Plugin Cache + uses: actions/cache/restore@v4.0.2 + if: steps.social_cache_restore.outputs.cache-hit != 'true' + id: social_cache_test + with: + key: social-cache-privacyguides/privacyguides.org-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} + lookup-only: true + path: | + .cache/plugin/social/manifest.json + .cache/plugin/social/assets + + - name: Find Optimize Plugin Cache + uses: actions/cache/restore@v4.0.2 + if: steps.optimize_cache_restore.outputs.cache-hit != 'true' + id: optimize_cache_test + with: + key: optimize-cache-privacyguides/privacyguides.org-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} + lookup-only: true + path: | + .cache/plugin/optimize + + - name: Save Privacy Plugin Cache + uses: actions/cache/save@v4.0.2 + if: steps.privacy_cache_test.outputs.cache-hit != 'true' with: - key: site-cache-${{ inputs.repo }}-${{ inputs.ref }}-${{ hashfiles('.cache/**') }} - path: .cache + key: privacy-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/privacy/**') }} + path: .cache/plugin/privacy - - uses: actions/cache/save@v4.0.2 - if: steps.card_cache_restore.outputs.cache-hit != 'true' + - name: Save Social Plugin Cache + uses: actions/cache/save@v4.0.2 + if: steps.social_cache_test.outputs.cache-hit != 'true' with: - key: card-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ inputs.ref }}-${{ hashfiles('config/.cache/plugin/social/manifest.json') }} + key: social-cache-${{ inputs.repo }}-${{ inputs.lang }}-${{ hashfiles('.cache/plugin/social/manifest.json') }} path: | - config/.cache/plugin/social/manifest.json - config/.cache/plugin/social/assets + .cache/plugin/social/manifest.json + .cache/plugin/social/assets - - uses: actions/upload-artifact@v4 + - name: Save Optimize Plugin Cache + uses: actions/cache/save@v4.0.2 + if: steps.optimize_cache_test.outputs.cache-hit != 'true' + with: + key: optimize-cache-${{ inputs.repo }}-${{ hashfiles('.cache/plugin/optimize/manifest.json') }} + path: .cache/plugin/optimize + + - name: Upload Site + uses: actions/upload-artifact@v4 with: name: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz path: site-${{ inputs.config }}-${{ inputs.lang }}.tar.gz + retention-days: 1 offline_package: if: inputs.config == 'offline' && inputs.lang == 'en' @@ -146,8 +287,8 @@ jobs: name: site-offline-en.tar.gz - run: | - tar -xzvf site-offline-en.tar.gz - tar -czvf offline.tar.gz site/en + tar -xzf site-offline-en.tar.gz + tar -czf offline.tar.gz site/en zip -r -q offline.zip site/en - name: Upload tar.gz file diff --git a/.github/workflows/publish-pr.yml b/.github/workflows/publish-pr.yml index f5d93e705e..8e74836771 100644 --- a/.github/workflows/publish-pr.yml +++ b/.github/workflows/publish-pr.yml @@ -1,79 +1,100 @@ -# Copyright (c) 2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - name: 📦 PR Preview on: - pull_request_target: - -concurrency: - group: ${{github.event.pull_request.head.ref}} - cancel-in-progress: true + workflow_run: + workflows: [🛠️ Build PR Preview] + types: + - completed permissions: - pull-requests: write + actions: read contents: read + pull-requests: write jobs: - submodule: - strategy: - matrix: - repo: - - name: mkdocs-material-insiders - ref: main - - name: brand - ref: main - - name: i18n - ref: main - uses: privacyguides/.github/.github/workflows/download-repo.yml@main - with: - repo: ${{ matrix.repo.name }} - secrets: - ACTIONS_SSH_KEY: ${{ secrets.ACTIONS_SSH_KEY }} + metadata: + if: > + github.event.workflow_run.event == 'pull_request' && + github.event.workflow_run.conclusion == 'success' - build: - needs: submodule - strategy: - matrix: - lang: [es, fr, he, it, nl, ru, zh-Hant] - allow-error: [true] - include: - - lang: en - allow-error: false - fail-fast: false - permissions: - contents: read - uses: ./.github/workflows/build.yml - with: - ref: ${{github.event.pull_request.head.ref}} - repo: ${{github.event.pull_request.head.repo.full_name}} - lang: ${{ matrix.lang }} - continue-on-error: ${{ matrix.allow-error }} + runs-on: ubuntu-latest + + outputs: + pr_number: ${{ steps.metadata.outputs.pr_number }} + sha: ${{ steps.metadata.outputs.sha }} + + steps: + - name: Download Website Build Artifact + uses: actions/github-script@v7.0.1 + with: + script: | + var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{github.event.workflow_run.id }}, + }); + var matchArtifact = artifacts.data.artifacts.filter((artifact) => { + return artifact.name == "site-build-combined" + })[0]; + var download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + var fs = require('fs'); + fs.writeFileSync('${{github.workspace}}/site-build-combined.zip', Buffer.from(download.data)); + + - name: Unpack Website + run: | + mkdir -p site + unzip site-build-combined.zip -d site + tar -czvf site-build-combined.tar.gz site + + - name: Upload Combined Build Artifact + uses: actions/upload-artifact@v4 + with: + name: site-build-combined.tar.gz + path: site-build-combined.tar.gz + retention-days: 5 + + - name: Download Metadata Artifact + uses: actions/github-script@v7.0.1 + with: + script: | + var artifacts = await github.rest.actions.listWorkflowRunArtifacts({ + owner: context.repo.owner, + repo: context.repo.repo, + run_id: ${{github.event.workflow_run.id }}, + }); + var matchArtifact = artifacts.data.artifacts.filter((artifact) => { + return artifact.name == "metadata" + })[0]; + var download = await github.rest.actions.downloadArtifact({ + owner: context.repo.owner, + repo: context.repo.repo, + artifact_id: matchArtifact.id, + archive_format: 'zip', + }); + var fs = require('fs'); + fs.writeFileSync('${{github.workspace}}/metadata.zip', Buffer.from(download.data)); + + - name: Set Metadata + id: metadata + run: | + mkdir -p metadata + unzip metadata.zip -d metadata + echo "pr_number=$(cat metadata/pr_number)" >> "$GITHUB_OUTPUT" + echo "sha=$(cat metadata/sha)" >> "$GITHUB_OUTPUT" deploy: - needs: build + needs: metadata permissions: contents: read + uses: privacyguides/webserver/.github/workflows/deploy-netlify-preview.yml@main with: - netlify_alias: ${{ github.event.pull_request.head.sha }} + netlify_alias: ${{ needs.metadata.outputs.pr_number }} netlify_site_id: ${{ vars.NETLIFY_SITE }} secrets: NETLIFY_TOKEN: ${{ secrets.NETLIFY_TOKEN }} @@ -81,23 +102,19 @@ jobs: comment: permissions: pull-requests: write - needs: deploy + needs: [deploy, metadata] runs-on: ubuntu-latest env: address: ${{ needs.deploy.outputs.address }} steps: - uses: thollander/actions-comment-pull-request@v2.5.0 with: + pr_number: ${{ needs.metadata.outputs.pr_number }} message: | ### Your preview is ready! | Name | Link | | :---: | ---- | - | Latest commit | ${{ github.event.pull_request.head.sha }} | + | Latest commit | ${{ needs.metadata.outputs.sha }} | | Preview | ${{ env.address }} | comment_tag: deployment - - cleanup: - if: ${{ always() }} - needs: build - uses: privacyguides/.github/.github/workflows/cleanup.yml@main diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 512163c07c..7d4e82328b 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -41,7 +41,7 @@ jobs: needs: submodule strategy: matrix: - lang: [en, es, fr, he, it, nl, ru, zh-Hant] + lang: [en, fr, he] build: [build, offline] fail-fast: false permissions: diff --git a/.gitignore b/.gitignore index ede72fe7a4..e8ae219915 100644 --- a/.gitignore +++ b/.gitignore @@ -9,13 +9,11 @@ site # see: https://github.com/squidfunk/mkdocs-material/issues/6983 # ridiculous hide-and-seek https://stackoverflow.com/a/72380673 .cache/* -!/config/.cache -/config/.cache/* -!/config/.cache/plugin -/config/.cache/plugin/* -!/config/.cache/plugin/social -/config/.cache/plugin/social/* -!/config/.cache/plugin/social/fonts +!.cache/plugin +/.cache/plugin/* +!.cache/plugin/social +/.cache/plugin/social/* +!.cache/plugin/social/fonts # Local Netlify folder .netlify @@ -23,3 +21,4 @@ node_modules # Python .venv +.env diff --git a/Dockerfile b/Dockerfile index 4d9b9cc891..6e038ede9f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -57,9 +57,8 @@ WORKDIR /site COPY docs docs COPY theme theme COPY includes includes -COPY config/*.yml config/ -COPY config/layouts config/layouts -COPY config/.cache/plugin/social/fonts config/.cache/plugin/social/fonts +COPY *.yml . +COPY .cache/plugin/social/fonts .cache/plugin/social/fonts EXPOSE 8000 @@ -68,4 +67,4 @@ ENV MKDOCS_INHERIT mkdocs-production.yml HEALTHCHECK NONE ENTRYPOINT ["mkdocs"] -CMD ["serve", "--dev-addr=0.0.0.0:8000", "--config-file=config/mkdocs.en.yml"] +CMD ["serve", "--dev-addr=0.0.0.0:8000", "--config-file=mkdocs-production.yml"] diff --git a/README.md b/README.md index f88db60829..bc63e5c694 100644 --- a/README.md +++ b/README.md @@ -113,11 +113,11 @@ Committing to this repository requires [signing your commits](https://docs.githu ### With `mkdocs-material` 1. Install required packages: `pip install mkdocs-material` -2. Run a local preview of the English site: `mkdocs serve --config-file config/mkdocs.en.yml` +2. Run a local preview of the English site: `mkdocs serve` ### With `mkdocs-material-insiders` -This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository. If you are submitting a PR, please ensure the automatic preview generated for your PR looks correct, as that site will be built with the production insiders build. +This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdocs-material/insiders) which offers additional functionality over the open-source `mkdocs-material` project. For obvious reasons we cannot distribute access to the insiders repository. **Team members** should clone the repository with `mkdocs-material-insiders` directly. This method is identical to production: @@ -126,23 +126,13 @@ This website uses [`mkdocs-material-insiders`](https://squidfunk.github.io/mkdoc 3. Install Python **3.12**. 4. Install **pipenv**: `pip install pipenv` 5. Install dependencies: `pipenv install --dev` (install [Pillow and CairoSVG](https://squidfunk.github.io/mkdocs-material/setup/setting-up-social-cards/#dependencies) as well to generate social cards) -6. Serve the site locally: `MKDOCS_INHERIT=mkdocs-production.yml pipenv run mkdocs serve --config-file config/mkdocs.en.yml` (set `CARDS=true` to generate social cards) +6. Serve the site locally: `pipenv run mkdocs serve --config-file mkdocs-production.yml` (set `CARDS=true` to generate social cards) - The site will be available at `http://localhost:8000` - - You can build the site locally with `MKDOCS_INHERIT=mkdocs-production.yml pipenv run mkdocs build --config-file config/mkdocs.en.yml` + - You can build the site locally with `pipenv run mkdocs build --config-file mkdocs-production.yml` - This version of the site should be identical to the live, production version If you commit to `main` with commits signed with your SSH key, you should add your SSH key to [`.allowed_signers`](/.allowed_signers) in this repo. -### Local Translated Site Builds - -1. Install the [Crowdin CLI Tool](https://developer.crowdin.com/cli-tool) (`brew install crowdin`) -2. Set the `CROWDIN_PERSONAL_TOKEN` environment variable to your Crowdin personal access token -3. Run `crowdin download` in the root of this repo -4. Import the language's environment variables: `set -a; source includes/strings.fr.env; set +a` (replacing fr with the appropriate language) -5. Serve the site locally: `pipenv run mkdocs serve --config-file config/mkdocs.fr.yml` (replacing fr with the appropriate language in [/config](/config)) - -Translations downloaded from Crowdin are [.gitignore](/.gitignore)'d, so any local changes to the translated site cannot be committed to this repo. Actual modifications need to be made on Crowdin. As an alternative to steps 1-3, you can copy the folders from [privacyguides/i18n](https://github.com/privacyguides/i18n) to the root of this repo to obtain the translated files. - ## Releasing It is required to create a GitHub release to publish the current site to privacyguides.org. The current `main` branch can be previewed at [https://main.staging.privacyguides.dev](https://main.staging.privacyguides.dev) prior to release. diff --git a/config/.cache/plugin/social/fonts b/config/.cache/plugin/social/fonts deleted file mode 120000 index cabf5b9b97..0000000000 --- a/config/.cache/plugin/social/fonts +++ /dev/null @@ -1 +0,0 @@ -../../../../theme/assets/brand/fonts \ No newline at end of file diff --git a/config/mkdocs-offline.yml b/config/mkdocs-offline.yml deleted file mode 100644 index 4c1fe5c66d..0000000000 --- a/config/mkdocs-offline.yml +++ /dev/null @@ -1,70 +0,0 @@ -# Copyright (c) 2023-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: mkdocs-common.yml - -# Disable any GitHub integrations -repo_url: "" -edit_uri_template: "" - -extra: - # Disable language switcher - alternate: false - offline: true - privacy_guides: - homepage: - hero: - buttons: - - name: - !ENV [ - HOMEPAGE_BUTTON_GET_STARTED_NAME, - "Start Your Privacy Journey", - ] - title: - !ENV [ - HOMEPAGE_BUTTON_GET_STARTED_TITLE, - "The first step of your privacy journey", - ] - link: basics/why-privacy-matters.html - class: md-button md-button--primary - - name: !ENV [HOMEPAGE_BUTTON_TOOLS_NAME, "Recommended Tools"] - title: - !ENV [ - HOMEPAGE_BUTTON_TOOLS_TITLE, - "Recommended privacy tools, services, and knowledge", - ] - link: tools.html - class: md-button - -theme: - features: - - navigation.tabs - - navigation.sections - - navigation.indexes - - content.tabs.link - - content.tooltips - - search.highlight - -plugins: - offline: - enabled: true - social: - enabled: false -# Edit the offline-mode navbar in mkdocs-common.yml diff --git a/config/mkdocs-production.yml b/config/mkdocs-production.yml deleted file mode 100644 index 0fd7a28565..0000000000 --- a/config/mkdocs-production.yml +++ /dev/null @@ -1,29 +0,0 @@ -INHERIT: mkdocs-common.yml - -plugins: - macros: {} - meta: {} - git-committers: - enabled: !ENV [GITCOMMITTERS, PRODUCTION, NETLIFY, false] - repository: privacyguides/privacyguides.org - branch: main - git-revision-date-localized: - enabled: !ENV [GITREVISIONDATE, PRODUCTION, NETLIFY, false] - exclude: - - index.md - fallback_to_build_date: true - optimize: - enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false] - typeset: {} - social: - cards: !ENV [CARDS, PRODUCTION, NETLIFY, true] - cards_dir: assets/img/social - cards_layout_dir: config/layouts - cards_layout: page - # cards_layout: pride - -markdown_extensions: - material.extensions.preview: - sources: - exclude: - - tools.md diff --git a/config/mkdocs.es.yml b/config/mkdocs.es.yml deleted file mode 100644 index 70b14f3428..0000000000 --- a/config/mkdocs.es.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/es" -site_url: "https://www.privacyguides.org/es/" -site_dir: "../site/es" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/es/{path}?plain=1 - -theme: - language: es - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.es.txt diff --git a/config/mkdocs.fr.yml b/config/mkdocs.fr.yml deleted file mode 100644 index 43ce56b956..0000000000 --- a/config/mkdocs.fr.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/fr" -site_url: "https://www.privacyguides.org/fr/" -site_dir: "../site/fr" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/fr/{path}?plain=1 - -theme: - language: fr - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.fr.txt diff --git a/config/mkdocs.he.yml b/config/mkdocs.he.yml deleted file mode 100644 index dc0ba0ebd0..0000000000 --- a/config/mkdocs.he.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/he" -site_url: "https://www.privacyguides.org/he/" -site_dir: "../site/he" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/he/{path}?plain=1 - -extra_css: - - assets/stylesheets/extra.css?v=3.2.0 - - assets/stylesheets/lang-he.css?v=3.4.0 - -theme: - language: he - font: - text: Open Sans - code: Cousine - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.he.txt diff --git a/config/mkdocs.it.yml b/config/mkdocs.it.yml deleted file mode 100644 index 326e89a3f0..0000000000 --- a/config/mkdocs.it.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/it" -site_url: "https://www.privacyguides.org/it/" -site_dir: "../site/it" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/it/{path}?plain=1 - -theme: - language: it - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.it.txt diff --git a/config/mkdocs.nl.yml b/config/mkdocs.nl.yml deleted file mode 100644 index 8c651e51d9..0000000000 --- a/config/mkdocs.nl.yml +++ /dev/null @@ -1,34 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/nl" -site_url: "https://www.privacyguides.org/nl/" -site_dir: "../site/nl" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/nl/{path}?plain=1 - -theme: - language: nl - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.nl.txt diff --git a/config/mkdocs.ru.yml b/config/mkdocs.ru.yml deleted file mode 100644 index f2bc604cac..0000000000 --- a/config/mkdocs.ru.yml +++ /dev/null @@ -1,38 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/ru" -site_url: "https://www.privacyguides.org/ru/" -site_dir: "../site/ru" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/ru/{path}?plain=1 - -extra_css: - - assets/stylesheets/extra.css?v=3.2.0 - - assets/stylesheets/lang-ru.css?v=3.13.0 - -theme: - language: ru - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.ru.txt diff --git a/config/mkdocs.zh-Hant.yml b/config/mkdocs.zh-Hant.yml deleted file mode 100644 index cb6c180633..0000000000 --- a/config/mkdocs.zh-Hant.yml +++ /dev/null @@ -1,41 +0,0 @@ -# Copyright (c) 2022-2024 Jonah Aragon - -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to -# deal in the Software without restriction, including without limitation the -# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or -# sell copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: - -# The above copyright notice and this permission notice shall be included in -# all copies or substantial portions of the Software. - -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING -# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS -# IN THE SOFTWARE. - -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -docs_dir: "../i18n/zh-Hant" -site_url: "https://www.privacyguides.org/zh-Hant/" -site_dir: "../site/zh-Hant" - -edit_uri_template: https://github.com/privacyguides/i18n/blob/main/i18n/zh-Hant/{path}?plain=1 - -extra_css: - - assets/stylesheets/extra.css?v=3.2.0 - - assets/stylesheets/lang-zh-Hant.css?v=3.13.0 - -theme: - language: zh-Hant - font: - text: Noto Sans TC - code: Noto Sans TC - -markdown_extensions: - pymdownx.snippets: - auto_append: - - includes/abbreviations.zh-Hant.txt diff --git a/config/mkdocs.en.yml b/mkdocs-production.yml similarity index 78% rename from config/mkdocs.en.yml rename to mkdocs-production.yml index eb55c3f0fb..39b89a3352 100644 --- a/config/mkdocs.en.yml +++ b/mkdocs-production.yml @@ -18,10 +18,10 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -INHERIT: !ENV [MKDOCS_INHERIT, mkdocs-common.yml] -site_url: "https://www.privacyguides.org/en/" -site_dir: "../site/en" +INHERIT: mkdocs.yml -theme: - # ENGLISH ONLY: this logo needs to be set separately because the relative path is different - logo: ../theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg +markdown_extensions: + material.extensions.preview: + sources: + exclude: + - tools.md diff --git a/config/mkdocs-common.yml b/mkdocs.yml similarity index 89% rename from config/mkdocs-common.yml rename to mkdocs.yml index 9e2f2a6aae..65cbdba9e6 100644 --- a/config/mkdocs-common.yml +++ b/mkdocs.yml @@ -18,9 +18,9 @@ # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS # IN THE SOFTWARE. -docs_dir: "../docs" -site_url: "https://www.privacyguides.org/" -site_dir: "../site" +docs_dir: !ENV [BUILD_DOCS_DIR, "docs"] +site_url: !ENV [BUILD_SITE_URL, "https://www.privacyguides.org/en/"] +site_dir: !ENV [BUILD_SITE_DIR, "site/en"] site_name: Privacy Guides site_description: @@ -28,11 +28,13 @@ site_description: SITE_DESCRIPTION, "Privacy Guides is your central privacy and security resource to protect yourself online.", ] -edit_uri_template: blob/main/docs/{path}?plain=1 +edit_uri_template: + !ENV [BUILD_EDIT_URI_TEMPLATE, "blob/main/docs/{path}?plain=1"] extra: generator: false - context: !ENV [CONTEXT, "production"] + context: !ENV [BUILD_CONTEXT, "production"] + offline: !ENV [BUILD_OFFLINE, false] deploy: !ENV DEPLOY_ID privacy_guides: footer: @@ -80,7 +82,11 @@ extra: HOMEPAGE_BUTTON_GET_STARTED_TITLE, "The first step of your privacy journey", ] - link: basics/why-privacy-matters/ + link: + !ENV [ + HOMEPAGE_BUTTON_GET_STARTED_LINK, + "basics/why-privacy-matters/", + ] class: md-button md-button--primary - name: !ENV [HOMEPAGE_BUTTON_TOOLS_NAME, "Recommended Tools"] title: @@ -88,7 +94,7 @@ extra: HOMEPAGE_BUTTON_TOOLS_TITLE, "Recommended privacy tools, services, and knowledge", ] - link: tools/ + link: !ENV [HOMEPAGE_BUTTON_TOOLS_LINK, "tools/"] class: md-button cta: - title: @@ -161,6 +167,7 @@ extra: notice: !ENV TRANSLATION_NOTICE cta: !ENV [TRANSLATION_NOTICE_CTA, "Visit Crowdin"] language: !ENV SITE_LANGUAGE_ENGLISH + translation_stylesheet: !ENV [TRANSLATION_STYLESHEET] social: - icon: simple/mastodon link: https://mastodon.neat.computer/@privacyguides @@ -247,17 +254,17 @@ extra: - accept - manage -repo_url: https://github.com/privacyguides/privacyguides.org +repo_url: + !ENV [BUILD_REPO_URL, "https://github.com/privacyguides/privacyguides.org"] repo_name: "" theme: name: material - language: en - custom_dir: ../theme - logo: ../../theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg + language: !ENV [BUILD_THEME_LANGUAGE, "en"] + custom_dir: theme font: - text: Public Sans - code: DM Mono + text: !ENV [BUILD_THEME_FONT_TEXT, "Public Sans"] + code: !ENV [BUILD_THEME_FONT_CODE, "DM Mono"] palette: - media: "(prefers-color-scheme)" scheme: default @@ -300,14 +307,36 @@ extra_javascript: - assets/javascripts/feedback.js?v=1 watch: - - ../theme - - ../includes - - mkdocs-common.yml + - theme + - includes plugins: tags: {} search: {} privacy: {} + group: + enabled: !ENV [BUILD_INSIDERS, false] + plugins: + macros: {} + meta: {} + git-committers: + enabled: !ENV [GITCOMMITTERS, PRODUCTION, NETLIFY, false] + repository: privacyguides/privacyguides.org + branch: main + git-revision-date-localized: + enabled: !ENV [GITREVISIONDATE, PRODUCTION, NETLIFY, false] + exclude: + - index.md + fallback_to_build_date: true + optimize: + enabled: !ENV [OPTIMIZE, PRODUCTION, NETLIFY, false] + typeset: {} + social: + cards: !ENV [CARDS, true] + cards_dir: assets/img/social + cards_layout_dir: theme/layouts + cards_layout: page + # cards_layout: pride markdown_extensions: admonition: {} @@ -328,7 +357,7 @@ markdown_extensions: pymdownx.tilde: {} pymdownx.snippets: auto_append: - - includes/abbreviations.en.txt + - !ENV [BUILD_ABBREVIATIONS, "includes/abbreviations.en.txt"] pymdownx.tasklist: custom_checkbox: true attr_list: {} diff --git a/config/layouts/home.yml b/theme/layouts/home.yml similarity index 96% rename from config/layouts/home.yml rename to theme/layouts/home.yml index 4c476c0215..d0e29bf956 100644 --- a/config/layouts/home.yml +++ b/theme/layouts/home.yml @@ -30,7 +30,7 @@ definitions: {{ page.meta.get("description", config.site_description) or "" }} - &logo >- - {{ config.docs_dir }}/{{ config.theme.logo }} + theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg # Meta tags tags: diff --git a/config/layouts/page.yml b/theme/layouts/page.yml similarity index 97% rename from config/layouts/page.yml rename to theme/layouts/page.yml index 6396a0d8ee..627bb3c51d 100644 --- a/config/layouts/page.yml +++ b/theme/layouts/page.yml @@ -63,8 +63,8 @@ definitions: - &logo >- {%- if page.meta.cover -%} theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext.svg - {%- elif config.theme.logo -%} - {{ config.docs_dir }}/{{ config.theme.logo }} + {%- else -%} + theme/assets/brand/logos/svg/logo/privacy-guides-logo-notext-colorbg.svg {%- endif -%} # Meta tags diff --git a/config/layouts/pride.yml b/theme/layouts/pride.yml similarity index 100% rename from config/layouts/pride.yml rename to theme/layouts/pride.yml diff --git a/theme/main.html b/theme/main.html index c29ae82750..dec74e111c 100644 --- a/theme/main.html +++ b/theme/main.html @@ -71,6 +71,12 @@ {% endblock %} {% block extrahead %} + + + {% if config.extra.privacy_guides.translation_stylesheet %} + + {% endif %} + {% if config.extra.context == "production" %}