Enhance command TOC styling and add active section tracking #164
This file contains hidden or 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: Deploy Hugo Site with Jekyll Redirects | |
| on: | |
| push: | |
| branches: | |
| - main | |
| - html | |
| workflow_dispatch: | |
| permissions: | |
| contents: read | |
| pages: write | |
| id-token: write | |
| concurrency: | |
| group: "pages" | |
| cancel-in-progress: false | |
| defaults: | |
| run: | |
| shell: bash | |
| jobs: | |
| build: | |
| runs-on: ubuntu-latest | |
| env: | |
| HUGO_VERSION: 0.128.0 | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v4 | |
| with: | |
| submodules: recursive | |
| fetch-depth: 0 | |
| - name: Setup Hugo | |
| uses: peaceiris/actions-hugo@v3 | |
| with: | |
| hugo-version: ${{ env.HUGO_VERSION }} | |
| extended: true | |
| - name: Setup Node | |
| uses: actions/setup-node@v4 | |
| with: | |
| node-version: "20" | |
| cache: "npm" | |
| - name: Install npm dependencies | |
| run: npm ci | |
| - name: Build Tailwind CSS | |
| run: npm run build:css | |
| - name: Sync version data from docs repo | |
| run: | | |
| curl -o static/data/external.json https://raw.githubusercontent.com/dataplat/dbatools-docs/main/assets/external.json || echo "Warning: Could not sync version data" | |
| - name: Transform dbatools index to commands.json | |
| shell: pwsh | |
| run: | | |
| Write-Host "Transforming dbatools-index.json to commands.json..." | |
| ./scripts/transform-dbatools-index.ps1 | |
| Write-Host "✓ Transformation complete" | |
| - name: Generate command documentation pages | |
| shell: pwsh | |
| run: | | |
| Write-Host "Generating command documentation markdown files..." | |
| ./scripts/generate-command-pages.ps1 | |
| Write-Host "✓ Command pages generated successfully" | |
| - name: Enrich commands.json with full content | |
| shell: pwsh | |
| run: | | |
| Write-Host "Enriching commands.json with markdown content..." | |
| ./scripts/enrich-commands-json.ps1 | |
| Write-Host "✓ Enrichment complete" | |
| - name: Update popular commands with rankings | |
| shell: pwsh | |
| run: | | |
| Write-Host "Updating popular commands from rankings..." | |
| ./scripts/update-popular-commands.ps1 | |
| Write-Host "✓ Popular commands updated" | |
| - name: Ensure commands URLs are correct | |
| shell: pwsh | |
| run: | | |
| Write-Host "Verifying command URLs..." | |
| ./scripts/update-commands-urls.ps1 | |
| Write-Host "✓ URLs verified" | |
| - name: Build Hugo site | |
| run: hugo --minify | |
| - name: Setup Ruby for Jekyll redirects | |
| uses: ruby/setup-ruby@v1 | |
| with: | |
| ruby-version: "3.1" | |
| bundler-cache: false | |
| - name: Install Jekyll and dependencies | |
| run: | | |
| gem install jekyll bundler | |
| gem install jekyll-redirect-from | |
| - name: Build Jekyll redirects | |
| run: | | |
| # Build Jekyll site with redirects | |
| # Jekyll will process only the redirect/ folder and create HTML redirects | |
| jekyll build --source ./redirect --destination _site/redirect | |
| # Copy only the generated redirect HTML files to Hugo's public directory | |
| # Skip copying other Jekyll-generated content | |
| if [ -d "_site/redirect" ]; then | |
| cp -r _site/redirect/* public/ 2>/dev/null || true | |
| fi | |
| # Also copy any top-level redirect files that were generated | |
| find _site -maxdepth 1 -name "*.html" -type f | while read file; do | |
| basename_file=$(basename "$file") | |
| # Skip index.html and other non-redirect files | |
| if [ "$basename_file" != "index.html" ]; then | |
| cp "$file" "public/$basename_file" 2>/dev/null || true | |
| fi | |
| done | |
| rm -rf _site | |
| - name: Setup Pages | |
| id: pages | |
| uses: actions/configure-pages@v5 | |
| - name: Upload artifact | |
| uses: actions/upload-pages-artifact@v3 | |
| with: | |
| path: ./public | |
| deploy: | |
| environment: | |
| name: github-pages | |
| url: ${{ steps.deployment.outputs.page_url }} | |
| runs-on: ubuntu-latest | |
| needs: build | |
| steps: | |
| - name: Deploy to GitHub Pages | |
| id: deployment | |
| uses: actions/deploy-pages@v4 |