wekan/releases/rebuild-docs.sh
Lauri Ojansivu 6592102e8f v8.02
2025-10-14 11:56:11 +03:00

65 lines
1.7 KiB
Bash
Executable file

#!/usr/bin/env bash
# Build API documentation using Node.js tooling only (Node 14.x compatible).
set -euo pipefail
# 1) Check that there is only one parameter
# of Wekan version number:
if [ $# -ne 1 ]
then
echo "Syntax with Wekan version number:"
echo " ./rebuild-docs.sh 5.10"
exit 1
fi
# 2) No Python dependencies; use npm/npx exclusively
# 2) Go to Wekan repo directory
cd ~/repos/wekan
# 3) Create api docs directory, if it does not exist
if [ ! -d public/api ]; then
mkdir -p public/api
fi
# 4) Locate or generate an OpenAPI spec (YAML or JSON)
SPEC_YML="./public/api/wekan.yml"
SPEC_JSON="./public/openapi.json"
SPEC_ALT_YML="./public/openapi.yml"
if [ -s "$SPEC_YML" ]; then
SPEC="$SPEC_YML"
elif [ -s "$SPEC_JSON" ]; then
SPEC="$SPEC_JSON"
elif [ -s "$SPEC_ALT_YML" ]; then
SPEC="$SPEC_ALT_YML"
else
echo "No existing OpenAPI spec found. Generating from models with Node..."
mkdir -p ./public/api
node ./openapi/generate_openapi.js --release v$1 ./models > "$SPEC_YML"
SPEC="$SPEC_YML"
fi
chmod 644 "$SPEC" 2>/dev/null || true
# Build static HTML docs (no global installs)
# 1) Prefer Redocly CLI
if npx --yes @redocly/cli@latest build-docs "$SPEC" -o ./public/api/wekan.html; then
:
else
# 2) Fallback to redoc-cli
if npx --yes redoc-cli@latest bundle "$SPEC" -o ./public/api/wekan.html; then
:
else
# 3) Fallback to api2html
if npx --yes api2html@0.3.0 -c ./public/logo-header.png -o ./public/api/wekan.html "$SPEC"; then
:
else
echo "All HTML generators failed. You can preview locally with:" >&2
echo " npx --yes @redocly/cli@latest preview-docs $SPEC" >&2
exit 1
fi
fi
fi
# Copy docs to bundle
#cp -pR ./public/api ~/repos/wekan/.build/bundle/programs/web.browser/app/