name: Generate DarkFi Book

on:
    push:
        branches:
            - master
            - mdbook-stuff

jobs:
    compile-book:
        runs-on: ubuntu-latest
        steps:
            - uses: actions/checkout@v3
              with:
                persist-credentials: false
                fetch-depth: 0

            - name: Install Python
              uses: actions/setup-python@v1
              with:
                python-version: 3.9

            - name: Install Rust (nightly)
              uses: actions-rs/toolchain@v1
              with:
                toolchain: nightly
                components: rustfmt, clippy
                override: true

            - name: Install Rust (wasm32)
              uses: actions-rs/toolchain@v1
              with:
                toolchain: nightly
                target: wasm32-unknown-unknown
                override: true

            - uses: Swatinem/rust-cache@v2

            - name: Install ghp-import and mdbook
              run: |
                pip install ghp-import
                pip install prettytable
                sudo apt -y install make wget libasound2-dev wabt
                wget "https://github.com/badboy/mdbook-toc/releases/download/0.14.1/mdbook-toc-0.14.1-x86_64-unknown-linux-gnu.tar.gz"
                wget "https://github.com/lzanini/mdbook-katex/releases/download/v0.5.7/mdbook-katex-v0.5.7-x86_64-unknown-linux-gnu.tar.gz"
                wget "https://github.com/badboy/mdbook-mermaid/releases/download/v0.12.6/mdbook-mermaid-v0.12.6-x86_64-unknown-linux-gnu.tar.gz"
                wget "https://github.com/rust-lang/mdBook/releases/download/v0.4.34/mdbook-v0.4.34-x86_64-unknown-linux-gnu.tar.gz"
                for i in *.tar.gz; do
                    tar xf "$i"
                    rm -f "$i"
                done
                mv -v mdbook* /usr/local/bin/

            - name: Compile and publish the book and rustdoc
              run: |
                git config --local user.email "41898282+github-actions[bot]@users.noreply.github.com"
                git config --local user.name "bookworm"
                cd doc
                make github
                git checkout gh-pages

            - name: Push changes
              uses: ad-m/github-push-action@master
              with:
                github_token: ${{ secrets.GITHUB_TOKEN }}
                branch: gh-pages
                force: true
