diff options
| author | EuAndreh <eu@euandre.org> | 2020-09-25 13:53:14 -0300 |
|---|---|---|
| committer | EuAndreh <eu@euandre.org> | 2020-09-25 13:53:14 -0300 |
| commit | ed86bf8e1926d4d22a399e84efa9ed74d6b1d86d (patch) | |
| tree | 3ac934476cfa6e4e389a82663f08b3f51a87e3f9 | |
| parent | ci-build.sh: Build site derivation directly (diff) | |
| download | dotfiles-ed86bf8e1926d4d22a399e84efa9ed74d6b1d86d.tar.gz dotfiles-ed86bf8e1926d4d22a399e84efa9ed74d6b1d86d.tar.xz | |
fake-symlinks.sh: Make all projects many-lang
| -rw-r--r-- | bash/fake-symlinks.sh | 44 | ||||
| -rwxr-xr-x | bash/templates/build-site-single-lang.sh | 51 | ||||
| -rwxr-xr-x | bash/templates/build-site.sh (renamed from bash/templates/build-site-many-langs.sh) | 0 | ||||
| -rw-r--r-- | bash/templates/conf.py (renamed from bash/templates/sphinx-base.conf.py) | 14 | ||||
| -rw-r--r-- | bash/templates/layout-many-langs.language-picker.html | 15 | ||||
| -rw-r--r-- | bash/templates/layout-many-langs.page-path.html | 1 | ||||
| -rw-r--r-- | bash/templates/layout-many-langs.version-section.html | 1 | ||||
| -rw-r--r-- | bash/templates/layout-single-lang.html | 45 | ||||
| -rw-r--r-- | bash/templates/layout-single-lang.language-picker.html | 0 | ||||
| -rw-r--r-- | bash/templates/layout-single-lang.page-path.html | 1 | ||||
| -rw-r--r-- | bash/templates/layout-single-lang.version-section.html | 1 | ||||
| -rw-r--r-- | bash/templates/layout.html (renamed from bash/templates/layout-many-langs.html) | 0 | ||||
| -rw-r--r-- | bash/templates/layout.template.html | 45 | ||||
| -rw-r--r-- | bash/templates/sphinx-many-langs.conf.py | 14 | ||||
| -rw-r--r-- | bash/templates/sphinx-single-lang.conf.py | 6 | ||||
| -rw-r--r-- | bash/templates/utils.nix | 85 |
16 files changed, 63 insertions, 260 deletions
diff --git a/bash/fake-symlinks.sh b/bash/fake-symlinks.sh index 0045fd1f..f797d679 100644 --- a/bash/fake-symlinks.sh +++ b/bash/fake-symlinks.sh @@ -19,39 +19,16 @@ cp "${DOTFILES}/org.keepassxc.keepassxc_browser.json" ~/.mozilla/native-messagin pushd "${DOTFILES}/bash/templates/" > /dev/null || exit 1 export DOLLAR='$' -# Derived from: -# https://unix.stackexchange.com/a/26289 -env \ - VERSION_SECTION="$(cat layout-single-lang.version-section.html)" \ - LANGUAGE_PICKER="$(cat layout-single-lang.language-picker.html)" \ - PAGE_PATH="$(cat layout-single-lang.page-path.html)" \ - envsubst < layout.template.html > layout-single-lang.html - -env \ - VERSION_SECTION="$(cat layout-many-langs.version-section.html)" \ - LANGUAGE_PICKER="$(cat layout-many-langs.language-picker.html)" \ - PAGE_PATH="$(cat layout-many-langs.page-path.html)" \ - envsubst < layout.template.html > layout-many-langs.html - documented-project-fake-ln() { export PROJECT_UC="${1^}" export PROJECT="$1" - I18N="$2" - if [[ "$I18N" = true ]]; then - sed "s/__PROJECT_UC__/$PROJECT_UC/" build-site-many-langs.sh > "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" - chmod +x "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" - cat <(envsubst < sphinx-base.conf.py) <(envsubst < sphinx-many-langs.conf.py) > "$HOME/dev/libre/$PROJECT/docs/conf.py" - envsubst < layout-many-langs.html > "$HOME/dev/libre/$PROJECT/docs/_templates/layout.html" - envsubst < utils-i18n.nix > "$HOME/dev/libre/$PROJECT/utils-i18n.nix" - cp assert-docs-spelling-many-langs.sh "$HOME/dev/libre/$PROJECT/scripts/assert-docs-spelling.sh" - else - sed "s/__PROJECT_UC__/$PROJECT_UC/" build-site-single-lang.sh > "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" - chmod +x "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" - cat <(envsubst < sphinx-base.conf.py) <(envsubst < sphinx-single-lang.conf.py) > "$HOME/dev/libre/$PROJECT/docs/conf.py" - envsubst < layout-single-lang.html > "$HOME/dev/libre/$PROJECT/docs/_templates/layout.html" - cp assert-docs-spelling-single-lang.sh "$HOME/dev/libre/$PROJECT/scripts/assert-docs-spelling.sh" - fi + sed "s/__PROJECT_UC__/$PROJECT_UC/" build-site.sh > "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" + chmod +x "$HOME/dev/libre/$PROJECT/scripts/build-site.sh" + envsubst < conf.py > "$HOME/dev/libre/$PROJECT/docs/conf.py" + envsubst < layout.html > "$HOME/dev/libre/$PROJECT/docs/_templates/layout.html" + envsubst < utils-i18n.nix > "$HOME/dev/libre/$PROJECT/utils-i18n.nix" + cp assert-docs-spelling-many-langs.sh "$HOME/dev/libre/$PROJECT/scripts/assert-docs-spelling.sh" envsubst < utils.nix > "$HOME/dev/libre/$PROJECT/utils.nix" envsubst < preamble.org > "$HOME/dev/libre/$PROJECT/workflow/preamble.org" @@ -70,15 +47,10 @@ documented-project-fake-ln() { envsubst < .build.yml > "$HOME/dev/libre/$PROJECT/.build.yml" } -# single language, documented project -for r in cement intermediauth; do - documented-project-fake-ln "$r" false -done - # multiple languages, documented project # shellcheck disable=2043 -for r in songbooks mediator; do - documented-project-fake-ln "$r" true +for r in songbooks mediator intermediauth; do + documented-project-fake-ln "$r" done for r in boneco website dotfiles; do diff --git a/bash/templates/build-site-single-lang.sh b/bash/templates/build-site-single-lang.sh deleted file mode 100755 index d70eec15..00000000 --- a/bash/templates/build-site-single-lang.sh +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash -set -Eeuo pipefail -cd "$(dirname "${BASH_SOURCE[0]}")" -cd ../ - -OUT="${1}" -HTMLIZE="${2}" -PROJECT_UC="__PROJECT_UC__" - -sed -e '/^\* Tasks$/,/^\* Improvements$/!d' TODOs.org | \ - head -n -1 | \ - cat workflow/preamble.org - > tasks-and-bugs.org - -emacs tasks-and-bugs.org \ - -l "${HTMLIZE}" \ - --eval '(setq org-export-allow-bind-keywords t)' \ - -f org-html-export-to-html \ - --batch \ - --kill - -# Add anchor link to bug headers -perl -pe \ - 's|^<h3 id="(.*?)">(.*)</h3>$|<h3 id="\1">\2<br /><a class="header-anchor" href="#\1">#\1</a></h3>|' \ - tasks-and-bugs.html > "${OUT}/tasks-and-bugs.html" - -pushd docs -make html -popd - -cp docs/favicon.ico "$OUT" -mv docs/_build/html/_static/ "${OUT}/_static/" - -TAGS="$(git tag | cat - <(echo master))" - -for tag in ${TAGS}; do - mkdir -p "tmp/$tag/" - git --work-tree="tmp/$tag/" checkout --recurse-submodules "$tag" -- . - git reset . - - pushd "tmp/$tag/docs/" - jq ".version = \"$tag\"" ../metadata.json | sponge ../metadata.json - make latexpdf epub html - popd - - mv "tmp/$tag/docs/_build/html/" "${OUT}/$tag/" - pushd "${OUT}/$tag/" - rm -rf _static/ - ln -s ../_static . - popd - mv "tmp/$tag/docs/_build/latex/${PROJECT_UC,}.pdf" "$OUT/$tag/${PROJECT_UC}.pdf" -done diff --git a/bash/templates/build-site-many-langs.sh b/bash/templates/build-site.sh index a58030ee..a58030ee 100755 --- a/bash/templates/build-site-many-langs.sh +++ b/bash/templates/build-site.sh diff --git a/bash/templates/sphinx-base.conf.py b/bash/templates/conf.py index f538073b..b6e8f84d 100644 --- a/bash/templates/sphinx-base.conf.py +++ b/bash/templates/conf.py @@ -38,3 +38,17 @@ extlinks = { "src": ("https://git.euandreh.xyz/$PROJECT/tree/%s", ""), "bug": ("https://$PROJECT.euandreh.xyz/tasks-and-bugs.html#%s", "bug "), } + +with open("i18n-pagenames.json", "r") as f: + i18n_pagenames = json.loads(f.read()) + +html_context = { + "all_versions": all_versions, + "langs": metadata["langs"], + "current_lang": metadata["current_lang"], + "sourcehut_url_prefix": "https://git.euandreh.xyz/songbooks/tree/master/docs", + "gitlab_url_prefix": "https://gitlab.com/EuAndreh/songbooks/-/blob/master/docs", + "i18n_pagenames": i18n_pagenames +} + +gettext_compact = False diff --git a/bash/templates/layout-many-langs.language-picker.html b/bash/templates/layout-many-langs.language-picker.html deleted file mode 100644 index 2262dd14..00000000 --- a/bash/templates/layout-many-langs.language-picker.html +++ /dev/null @@ -1,15 +0,0 @@ - - <dt>Languages</dt> - {% for l in langs %} - <dd> - <a href="/{{ l }}/{{ version }}/{{ i18n_pagenames[l][pagename] }}.html"> - {% if l == current_lang %} - <span class="rst-current-version"> - {{ l }} - </span> - {% else %} - {{ l }} - {% endif %} - </a> - </dd> - {% endfor %} diff --git a/bash/templates/layout-many-langs.page-path.html b/bash/templates/layout-many-langs.page-path.html deleted file mode 100644 index 9e623f0d..00000000 --- a/bash/templates/layout-many-langs.page-path.html +++ /dev/null @@ -1 +0,0 @@ -<a href="/{{ current_lang }}/{{ v }}/{{ i18n_pagenames[current_lang][pagename] }}.html"> diff --git a/bash/templates/layout-many-langs.version-section.html b/bash/templates/layout-many-langs.version-section.html deleted file mode 100644 index 88e9976d..00000000 --- a/bash/templates/layout-many-langs.version-section.html +++ /dev/null @@ -1 +0,0 @@ -{{version}} | {{ current_lang }} diff --git a/bash/templates/layout-single-lang.html b/bash/templates/layout-single-lang.html deleted file mode 100644 index 6c16a49c..00000000 --- a/bash/templates/layout-single-lang.html +++ /dev/null @@ -1,45 +0,0 @@ -{%- extends "!layout.html" %} - -{# -Taken from: -https://github.com/readthedocs/sphinx_rtd_theme/blob/1d856256676d2b801a12c30e4a849c5abc466da9/docs/_templates/layout.html -#} - -{% block footer %} - <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions"> - <span class="rst-current-version" data-toggle="rst-current-version"> - <span class="fa fa-book"> {{project}}</span> - {{version}} - <span class="fa fa-caret-down"></span> - </span> - <div class="rst-other-versions"> - <dl> - <dt>Versions</dt> - {% for v in all_versions %} - <dd> - <a href="/{{ v }}/{{ pagename }}.html"> - {% if v == version %} - <span class="rst-current-version"> - {{ v }} - </span> - {% else %} - {{ v }} - {% endif %} - </a> - </dd> - {% endfor %} - <dt>Downloads</dt> - <dd> - <a href="/{{ version }}/$PROJECT_UC.pdf"> - PDF - </a> - </dd> - <dd> - <a href="/{{ version }}/$PROJECT_UC.epub"> - EPUB - </a> - </dd> - </dl> - </div> - </div> -{% endblock %} diff --git a/bash/templates/layout-single-lang.language-picker.html b/bash/templates/layout-single-lang.language-picker.html deleted file mode 100644 index e69de29b..00000000 --- a/bash/templates/layout-single-lang.language-picker.html +++ /dev/null diff --git a/bash/templates/layout-single-lang.page-path.html b/bash/templates/layout-single-lang.page-path.html deleted file mode 100644 index 287e71cb..00000000 --- a/bash/templates/layout-single-lang.page-path.html +++ /dev/null @@ -1 +0,0 @@ -<a href="/{{ v }}/{{ pagename }}.html"> diff --git a/bash/templates/layout-single-lang.version-section.html b/bash/templates/layout-single-lang.version-section.html deleted file mode 100644 index cf5b0388..00000000 --- a/bash/templates/layout-single-lang.version-section.html +++ /dev/null @@ -1 +0,0 @@ -{{version}} diff --git a/bash/templates/layout-many-langs.html b/bash/templates/layout.html index 51323733..51323733 100644 --- a/bash/templates/layout-many-langs.html +++ b/bash/templates/layout.html diff --git a/bash/templates/layout.template.html b/bash/templates/layout.template.html deleted file mode 100644 index 724f10de..00000000 --- a/bash/templates/layout.template.html +++ /dev/null @@ -1,45 +0,0 @@ -{%- extends "!layout.html" %} - -{# -Taken from: -https://github.com/readthedocs/sphinx_rtd_theme/blob/1d856256676d2b801a12c30e4a849c5abc466da9/docs/_templates/layout.html -#} - -{% block footer %} - <div class="rst-versions" data-toggle="rst-versions" role="note" aria-label="versions"> - <span class="rst-current-version" data-toggle="rst-current-version"> - <span class="fa fa-book"> {{project}}</span> - $VERSION_SECTION - <span class="fa fa-caret-down"></span> - </span> - <div class="rst-other-versions"> - <dl> - <dt>Versions</dt> - {% for v in all_versions %} - <dd> - $PAGE_PATH - {% if v == version %} - <span class="rst-current-version"> - {{ v }} - </span> - {% else %} - {{ v }} - {% endif %} - </a> - </dd> - {% endfor %}$LANGUAGE_PICKER - <dt>Downloads</dt> - <dd> - <a href="/{{ version }}/${DOLLAR}PROJECT_UC.pdf"> - PDF - </a> - </dd> - <dd> - <a href="/{{ version }}/${DOLLAR}PROJECT_UC.epub"> - EPUB - </a> - </dd> - </dl> - </div> - </div> -{% endblock %} diff --git a/bash/templates/sphinx-many-langs.conf.py b/bash/templates/sphinx-many-langs.conf.py deleted file mode 100644 index 1deaecdb..00000000 --- a/bash/templates/sphinx-many-langs.conf.py +++ /dev/null @@ -1,14 +0,0 @@ - -with open("i18n-pagenames.json", "r") as f: - i18n_pagenames = json.loads(f.read()) - -html_context = { - "all_versions": all_versions, - "langs": metadata["langs"], - "current_lang": metadata["current_lang"], - "sourcehut_url_prefix": "https://git.euandreh.xyz/songbooks/tree/master/docs", - "gitlab_url_prefix": "https://gitlab.com/EuAndreh/songbooks/-/blob/master/docs", - "i18n_pagenames": i18n_pagenames -} - -gettext_compact = False diff --git a/bash/templates/sphinx-single-lang.conf.py b/bash/templates/sphinx-single-lang.conf.py deleted file mode 100644 index 71788b69..00000000 --- a/bash/templates/sphinx-single-lang.conf.py +++ /dev/null @@ -1,6 +0,0 @@ - -html_context = { - "all_versions": all_versions, - "sourcehut_url_prefix": "https://git.euandreh.xyz/$PROJECT/tree/docs", - "gitlab_url_prefix": "https://gitlab.com/EuAndreh/$PROJECT/-/blob/master/docs", -} diff --git a/bash/templates/utils.nix b/bash/templates/utils.nix index 79b2aaeb..39c633a0 100644 --- a/bash/templates/utils.nix +++ b/bash/templates/utils.nix @@ -1,48 +1,45 @@ -{ pkgs, src }: rec { - test = shellBuildInputs: - pkgs.stdenv.mkDerivation { - inherit src; - name = "$PROJECT-test"; - buildInputs = shellBuildInputs; - phases = "unpackPhase buildPhase"; - buildPhase = '' - patchShebangs . - ./tests.sh - touch ${DOLLAR}out - ''; +{ pkgs, src, projectBuildInputs }: rec { + test = pkgs.stdenv.mkDerivation { + inherit src; + name = "$PROJECT-test"; + buildInputs = projectBuildInputs; + phases = "unpackPhase buildPhase"; + buildPhase = '' + patchShebangs . + ./tests.sh + touch ${DOLLAR}out + ''; + }; + site = let + orgcss = builtins.fetchurl { + url = "https://gongzhitaao.org/orgcss/org.css"; + sha256 = "1ym7askpqaa704bp72pjzz61p18q3dfjyfgqd6h206j6klvx0zfy"; }; - site = shellBuildInputs: - let - orgcss = builtins.fetchurl { - url = "https://gongzhitaao.org/orgcss/org.css"; - sha256 = "1ym7askpqaa704bp72pjzz61p18q3dfjyfgqd6h206j6klvx0zfy"; - }; - htmlize = builtins.fetchurl { - url = - "https://raw.githubusercontent.com/hniksic/emacs-htmlize/release/1.55/htmlize.el"; - sha256 = "0p9bzvvwhpbkgx3p8m1f9yjx6abaly44jp24lkr77r1zii4nzgdd"; - }; - in pkgs.stdenv.mkDerivation { - inherit src; - name = "$PROJECT-site"; - buildInputs = shellBuildInputs; - phases = "unpackPhase buildPhase"; - buildPhase = '' - patchShebangs . - mkdir ${DOLLAR}out - cat ${DOLLAR}{orgcss} workflow/workflow.css > ${DOLLAR}out/styles.css - ./scripts/build-site.sh ${DOLLAR}out ${DOLLAR}{htmlize} - ''; + htmlize = builtins.fetchurl { + url = + "https://raw.githubusercontent.com/hniksic/emacs-htmlize/release/1.55/htmlize.el"; + sha256 = "0p9bzvvwhpbkgx3p8m1f9yjx6abaly44jp24lkr77r1zii4nzgdd"; }; - publishScript = shellBuildInputs: - pkgs.writeShellScriptBin "publish.sh" '' - set -Eeuo pipefail - - OUT_PATH=/data/static/$PROJECT/ - mkdir -p ${DOLLAR}OUT_PATH - chmod -R +w ${DOLLAR}OUT_PATH # assert the previous dir is writable - rm -rf ${DOLLAR}OUT_PATH - cp -R ${DOLLAR}{site shellBuildInputs} ${DOLLAR}OUT_PATH - chmod -R +w ${DOLLAR}OUT_PATH # make the new one writable too + in pkgs.stdenv.mkDerivation { + inherit src; + name = "$PROJECT-site"; + buildInputs = projectBuildInputs; + phases = "unpackPhase buildPhase"; + buildPhase = '' + patchShebangs . + mkdir ${DOLLAR}out + cat ${DOLLAR}{orgcss} workflow/workflow.css > ${DOLLAR}out/styles.css + ./scripts/build-site.sh ${DOLLAR}out ${DOLLAR}{htmlize} ''; + }; + publishScript = pkgs.writeShellScriptBin "publish.sh" '' + set -Eeuo pipefail + + OUT_PATH=/data/static/$PROJECT/ + mkdir -p ${DOLLAR}OUT_PATH + chmod -R +w ${DOLLAR}OUT_PATH # assert the previous dir is writable + rm -rf ${DOLLAR}OUT_PATH + cp -R ${DOLLAR}{site} ${DOLLAR}OUT_PATH + chmod -R +w ${DOLLAR}OUT_PATH # make the new one writable too + ''; } |
