name: Generate Documentation on: push: branches: - main # only match branches that look like Minecraft versions - "*.*" workflow_dispatch: permissions: contents: write jobs: deploy: runs-on: ubuntu-latest steps: - name: Checkout Repository uses: actions/checkout@v3 - name: Install Rust Toolchain uses: rs-workspace/rust-toolchain@v0.1.0 with: toolchain: nightly - name: Generate Documentation run: RUSTDOCFLAGS="--enable-index-page -Zunstable-options" cargo doc --workspace --no-deps - name: Prepare Documentation run: | BRANCH_NAME=$(echo "${GITHUB_REF##*/}" | tr '/' '_') # Get branch name safely mkdir -p versioned_docs/$BRANCH_NAME cp -r target/doc/* versioned_docs/$BRANCH_NAME - name: Checkout to Docs Branch run: | git config --global user.name "github-actions[bot]" git config --global user.email "github-actions[bot]@users.noreply.github.com" git fetch origin docs || git checkout --orphan docs git checkout docs cp -r versioned_docs/* ./ # Copy docs to branch root rm -rf versioned_docs # Clean up rm -rf target # Clean up - name: Generate branches.html run: | VERSIONS=$(ls -d */ | sed 's#/##' | sort -r) # Get all version directories and sort them (latest first) echo "" > branches.html echo "" >> branches.html echo "" >> branches.html echo " " >> branches.html echo " " >> branches.html echo " Azalea Docs" >> branches.html echo "" >> branches.html echo "" >> branches.html echo "

Azalea Docs

" >> branches.html echo "

Welcome to the documentation for Azalea.

" >> branches.html echo "

Available Versions

" >> branches.html echo " " >> branches.html echo "" >> branches.html echo "" >> branches.html echo "branches.html generated successfully." - name: Create Index Page run: | if [ ! -f index.html ]; then echo "" > index.html fi - name: Deploy Documentation to Docs Branch run: | git add . git commit -m "Update documentation for $GITHUB_REF_NAME" || echo "No changes to commit" git push origin docs