Files
concrete/.github/workflows/scripts/make_apidocs.sh
2024-12-24 14:08:08 +01:00

68 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -e
PYTHON=${PYTHON:-python}
PIP=${PIP:-${PYTHON} -m pip}
VENV_DIR=${PWD}/.venv-docs
# Remove old documentation
rm -rf docs/dev/api/*
# Create virtual env and install concrete and docs tools
${PYTHON} -m venv "${VENV_DIR}"
source "${VENV_DIR}"/bin/activate
if [ -z "${CONCRETE_WHEEL}" ]; then
echo "You must specify the CONCRETE_WHEEL environment variable"
exit 1
fi
${PIP} install ${CONCRETE_WHEEL}
${PIP} install lazydocs
# Generate the API doc
lazydocs --output-path="./docs/dev/api" --overview-file="README.md" --src-base-url="../../" --no-watermark concrete
# Update documentation paths
SED_OPT='-i'
if [ $(uname) == "Darwin" ]; then
SED_OPT='-i ""'
fi
# Fixing the path issues, to point on files in GitHub
WHICH_PYTHON_VERSION=$(${PYTHON} --version | cut -f 2 -d " " | cut -f 1-2 -d ".")
sed $SED_OPT -e "s@../../.venv-docs/lib.*/python$WHICH_PYTHON_VERSION/site-packages/@../../../compilers/concrete-compiler/compiler/lib/Bindings/Python/@g" docs/dev/api/concrete.compiler*.md docs/dev/api/concrete.lang*.md
sed $SED_OPT -e "s@../../.venv-docs/lib.*/python$WHICH_PYTHON_VERSION/site-packages/@../../frontends/concrete-python/@g" docs/dev/api/concrete.fhe*.md
# Fixing the links in README.md, which fails (missing .'s for some reason): remove the #headers
sed $SED_OPT -e "s@.md#module-.*)@.md)@g" docs/dev/api/README.md
sed $SED_OPT -e "s@.md#function-.*)@.md)@g" docs/dev/api/README.md
sed $SED_OPT -e "s@.md#class-.*)@.md)@g" docs/dev/api/README.md
# Removed the "object addresses" and "function addresses", since they are not constant
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*.md
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*/*.md
sed $SED_OPT -e "s@object at 0x[a-zA-Z0-9]*@object at ADDRESS@g" docs/*/*/*.md
sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*.md
sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*/*.md
sed $SED_OPT -e "s@function Int at 0x[a-zA-Z0-9]*@function Int at ADDRESS@g" docs/*/*/*.md
# FIXME: remove this once the PR has been merged once
sed $SED_OPT -e "s@https://github.com/zama-ai/concrete-compiler-internal/blob/main/LICENSE.txt@https://github.com/zama-ai/concrete/blob/main/LICENSE.txt@g" ./docs/dev/api/concrete.lang.dialects.md ./docs/dev/api/concrete.compiler.md ./docs/dev/api/concrete.lang.md
# Create the patch file
git add -N docs/dev/api/*
git diff docs &> docs.patch
# Was there changes?
if [ ! -s docs.patch ]; then
echo "The documentation us up to date, congrats."
exit 0
else
echo "There is a difference in the docs, please commit the changes, here the change:"
cat docs.patch
exit 1
fi