Signed-off-by: Wolfgang Walther <walther@technowledgy.de>
105 lines
2.8 KiB
Nix
105 lines
2.8 KiB
Nix
let
|
|
# Commit of the Nixpkgs repository that we want to use.
|
|
nixpkgsVersion = {
|
|
date = "2024-01-06";
|
|
rev = "4bbf5a2eb6046c54f7a29a0964c642ebfe912cbc";
|
|
tarballHash = "03p45qdcxqxc41mmzmmyzbkff29vv95vv643z0kd3mf1s2nnsy5b";
|
|
};
|
|
|
|
# Nix files that describe the Nixpkgs repository. We evaluate the expression
|
|
# using `import` below.
|
|
pkgs = import
|
|
(fetchTarball {
|
|
url = "https://github.com/nixos/nixpkgs/archive/${nixpkgsVersion.rev}.tar.gz";
|
|
sha256 = nixpkgsVersion.tarballHash;
|
|
})
|
|
{ };
|
|
|
|
python = pkgs.python3.withPackages (ps: [
|
|
ps.sphinx
|
|
ps.sphinx_rtd_theme
|
|
ps.livereload
|
|
ps.sphinx-tabs
|
|
ps.sphinx-copybutton
|
|
ps.sphinxext-opengraph
|
|
# TODO: Remove override once new sphinx-intl version (> 2.1.0) is released and available in nixpkgs
|
|
(ps.sphinx-intl.overrideAttrs (drv: { nativeBuildInputs = drv.nativeBuildInputs ++ [ ps.six ]; }))
|
|
]);
|
|
in
|
|
rec {
|
|
inherit pkgs;
|
|
|
|
build =
|
|
pkgs.writeShellScriptBin "postgrest-docs-build"
|
|
''
|
|
set -euo pipefail
|
|
|
|
# build.sh needs to find "sphinx-build"
|
|
PATH=${python}/bin:$PATH
|
|
|
|
./build.sh "$@"
|
|
'';
|
|
|
|
serve =
|
|
pkgs.writeShellScriptBin "postgrest-docs-serve"
|
|
''
|
|
set -euo pipefail
|
|
|
|
# livereload_docs.py needs to find "sphinx-build"
|
|
PATH=${python}/bin:$PATH
|
|
|
|
./livereload_docs.py "$@"
|
|
'';
|
|
|
|
spellcheck =
|
|
pkgs.writeShellScriptBin "postgrest-docs-spellcheck"
|
|
''
|
|
set -euo pipefail
|
|
|
|
FILES=$(find docs -type f -iname '*.rst' | tr '\n' ' ')
|
|
|
|
cat $FILES \
|
|
| grep -v '^\(\.\.\| \)' \
|
|
| sed 's/`.*`//g' \
|
|
| ${pkgs.aspell}/bin/aspell -d ${pkgs.aspellDicts.en}/lib/aspell/en_US -p ./postgrest.dict list \
|
|
| sort -f \
|
|
| tee misspellings
|
|
test ! -s misspellings
|
|
'';
|
|
|
|
# dictcheck detects obsolete entries in postgrest.dict, that are not used anymore
|
|
dictcheck =
|
|
pkgs.writeShellScriptBin "postgrest-docs-dictcheck"
|
|
''
|
|
set -euo pipefail
|
|
|
|
FILES=$(find docs -type f -iname '*.rst' | tr '\n' ' ')
|
|
|
|
cat postgrest.dict \
|
|
| tail -n+2 \
|
|
| tr '\n' '\0' \
|
|
| xargs -0 -n 1 -i \
|
|
sh -c "grep \"{}\" $FILES > /dev/null || echo \"{}\"" \
|
|
| tee unuseddict
|
|
test ! -s unuseddict
|
|
'';
|
|
|
|
linkcheck =
|
|
pkgs.writeShellScriptBin "postgrest-docs-linkcheck"
|
|
''
|
|
set -euo pipefail
|
|
|
|
${python}/bin/sphinx-build --color -b linkcheck docs _build
|
|
'';
|
|
|
|
check =
|
|
pkgs.writeShellScriptBin "postgrest-docs-check"
|
|
''
|
|
set -euo pipefail
|
|
${build}/bin/postgrest-docs-build
|
|
${dictcheck}/bin/postgrest-docs-dictcheck
|
|
${linkcheck}/bin/postgrest-docs-linkcheck
|
|
${spellcheck}/bin/postgrest-docs-spellcheck
|
|
'';
|
|
}
|