Update README.md #308
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: "docs" | |
on: | |
push: | |
branches: | |
- 'master' | |
pull_request: | |
branches: | |
- '*' # To ensure it runs on all PRs | |
env: | |
GIT_USER_NAME: BattINFO Developers | |
GIT_USER_EMAIL: "[email protected]" | |
jobs: | |
updatepages: | |
runs-on: ubuntu-latest | |
permissions: | |
contents: write | |
steps: | |
- name: Checkout repository (force clean) | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 | |
clean: true | |
- name: Set up Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install dependencies | |
run: | | |
python -m pip install --upgrade pip | |
pip install Markdown==3.4.3 rdflib==6.3.2 pandoc | |
- name: Render documentation from TTL files | |
run: python docs/scripts/ttl_to_rst.py | |
- name: Build HTML | |
uses: ammaraskar/sphinx-action@master | |
with: | |
docs-folder: "docs/" | |
pre-build-command: "apt-get update -y; apt-get install -y pandoc" | |
- name: Create context file from TTL | |
run: python docs/scripts/ttl_to_context.py | |
- name: Ensure HTML directories exist | |
run: | | |
sudo mkdir -p docs/_build/html/context/ | |
sudo mkdir -p docs/_build/html/assets/ | |
sudo mkdir -p docs/_build/html/versions/ | |
- name: Copy assets and context to HTML directory | |
run: | | |
sudo cp -r docs/assets/* docs/_build/html/assets/ | |
sudo cp context/context.json docs/_build/html/context/ | |
- name: Commit generated changes (context.json & rst files) | |
run: | | |
git config --local user.email "${{ env.GIT_USER_EMAIL }}" | |
git config --local user.name "${{ env.GIT_USER_NAME }}" | |
git add context/context.json docs/electrochemistry.rst | |
git diff --staged --quiet || git commit -m "Update generated docs files" | |
- name: Debug before pull | |
run: | | |
echo "Checking Git status before pull..." | |
git status | |
echo "Listing unstaged changes..." | |
git diff --name-only | |
echo "Listing untracked files..." | |
git ls-files --others --exclude-standard | |
- name: Stash changes before pull | |
if: github.event_name == 'push' | |
run: | | |
git stash --include-untracked | |
git pull origin master --rebase | |
git stash pop || echo "No stash to apply" | |
- name: Push changes | |
if: github.event_name == 'push' && github.ref == 'refs/heads/master' # Only push during push events on master | |
run: git push origin HEAD:master | |
- name: Fetch all tags and process TTL files | |
run: | | |
git fetch --tags | |
git tag | while read TAG; do | |
sudo mkdir -p "docs/_build/html/versions/$TAG" | |
TTL_FILES=( | |
"reference/electrochemistry-quantities.ttl" | |
"reference/electrochemistry-reference.ttl" | |
"modules/electrochemistry-manufacturing.ttl" | |
"modules/electrochemistry-testing.ttl" | |
"electrochemistry.ttl" | |
) | |
for FILE in "${TTL_FILES[@]}"; do | |
if [ -f "$FILE" ]; then | |
OUTPUT_FILE="${FILE/.ttl/-foops.ttl}" | |
python docs/scripts/apply_foops_recommendations.py "$FILE" "$OUTPUT_FILE" | |
sudo cp "$OUTPUT_FILE" "docs/_build/html/versions/$TAG/$(basename "$FILE")" | |
else | |
echo "Warning: $FILE not found!" | |
fi | |
done | |
if [ -d "context" ]; then | |
sudo mkdir -p "docs/_build/html/versions/$TAG/context" | |
sudo cp "context/context.json" "docs/_build/html/versions/$TAG/context" | |
fi | |
done | |
- name: Copy TTL files to HTML directory | |
run: | | |
TTL_FILES=( | |
"reference/electrochemistry-quantities.ttl" | |
"reference/electrochemistry-reference.ttl" | |
"modules/electrochemistry-manufacturing.ttl" | |
"modules/electrochemistry-testing.ttl" | |
"electrochemistry.ttl" | |
) | |
for FILE in "${TTL_FILES[@]}"; do | |
if [ -f "$FILE" ]; then | |
OUTPUT_FILE="${FILE/.ttl/-foops.ttl}" | |
python docs/scripts/apply_foops_recommendations.py "$FILE" "$OUTPUT_FILE" | |
sudo cp "$OUTPUT_FILE" "docs/_build/html/$(basename "$FILE")" | |
else | |
echo "Warning: $FILE not found!" | |
fi | |
done | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: documentationHTML | |
path: docs/_build/html/ | |
- name: Deploy | |
if: github.ref == 'refs/heads/master' && github.event_name == 'push' # Only deploy during push events on master | |
uses: peaceiris/actions-gh-pages@v3 | |
with: | |
github_token: ${{ secrets.GITHUB_TOKEN }} | |
publish_dir: docs/_build/html |