name: CI
on:
  # Trigger the workflow on push or pull request,
  # but only for the main branch
  push:
    branches:
      - main
  pull_request:
    branches:
      - main

jobs:
  build:
    name: Build
    runs-on: ubuntu-22.04
    steps:
    - uses: actions/checkout@main
    - name: Update rustup
      run: rustup self update
    - name: Install Rust
      run: |
        rustup set profile minimal
        rustup toolchain install 1.62 -c rust-docs
        rustup default 1.62
    - name: Install mdbook
      run: |
        mkdir bin
        curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.21/mdbook-v0.4.21-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin
        echo "$(pwd)/bin" >> ${GITHUB_PATH}
    - name: Install mdbook-latex-pdf
      run: |
        curl -sL -o bin/mdbook-latex-pdf https://github.com/KaiserY/mdbook-latex-pdf/releases/download/0.1.1/mdbook-latex-pdf-x86_64-unknown-linux-gnu
        chmod +x bin/mdbook-latex-pdf
        echo "$(pwd)/bin" >> ${GITHUB_PATH}
        pip install --upgrade --force-reinstall Pygments
    - name: Install font
      run: |
        echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
        sudo apt-get -y install msttcorefonts
        mkdir fonts
        mkdir -p ~/.local/share/fonts
        curl -sL -o Noto_Sans.zip https://fonts.google.com/download?family=Noto%20Sans
        unzip Noto_Sans.zip -d fonts/Noto_Sans
        curl -sL -o Noto_Sans_SC.zip https://fonts.google.com/download?family=Noto%20Sans%20SC
        unzip Noto_Sans_SC.zip -d fonts/Noto_Sans_SC
        curl -sL -o Noto_Sans_Mono.zip https://fonts.google.com/download?family=Noto%20Sans%20Mono
        unzip Noto_Sans_Mono.zip -d fonts/Noto_Sans_Mono
        rm -fv fonts/Noto_Sans_Mono/NotoSansMono-VariableFont_wdth,wght.ttf
        curl -sL -o Noto_Sans_KR.zip https://fonts.google.com/download?family=Noto%20Sans%20KR
        unzip Noto_Sans_KR.zip -d fonts/Noto_Sans_KR
        curl -sL -o Noto_Sans_Thai.zip https://fonts.google.com/download?family=Noto%20Sans%20Thai
        unzip Noto_Sans_Thai.zip -d fonts/Noto_Sans_Thai
        rm -fv fonts/Noto_Sans_Thai/NotoSansThai-VariableFont_wdth,wght.ttf
        curl -sL -o Noto_Sans_Arabic.zip https://fonts.google.com/download?family=Noto%20Sans%20Arabic
        unzip Noto_Sans_Arabic.zip -d fonts/Noto_Sans_Arabic
        curl -sL -o Noto_Sans_Hebrew.zip https://fonts.google.com/download?family=Noto%20Sans%20Hebrew
        unzip Noto_Sans_Hebrew.zip -d fonts/Noto_Sans_Hebrew
        curl -sL -o Noto_Sans_Devanagari.zip https://fonts.google.com/download?family=Noto%20Sans%20Devanagari
        unzip Noto_Sans_Devanagari.zip -d fonts/Noto_Sans_Devanagari
        rm -fv fonts/Noto_Sans_Devanagari/NotoSansDevanagari-VariableFont_wdth,wght.ttf
        curl -sL -o Noto_Emoji.zip https://fonts.google.com/download?family=Noto%20Emoji
        unzip Noto_Emoji.zip -d fonts/Noto_Emoji
        curl -sL -o times_sans_serif.zip  https://dl.dafont.com/dl/?f=times_sans_serif
        unzip times_sans_serif.zip -d fonts/times_sans_serif
        mv fonts/* ~/.local/share/fonts/
        fc-cache -rv
    - name: Report versions
      run: |
        rustup --version
        rustc -Vv
        mdbook --version
    - name: Run mdBook Build
      run:  |
        mdbook build
        mv book/html/* book/
        mv "book/latex-pdf/Rust 程序设计语言 简体中文版.pdf" book/
        rm -r book/html/
        rm -rf book/latex-pdf/
    - name: Deploy gh-pages
      if: ${{ github.ref == 'refs/heads/main' }}
      uses: peaceiris/actions-gh-pages@v3
      with:
        github_token: ${{ secrets.GITHUB_TOKEN }}
        publish_dir: ./book
        force_orphan: true
        enable_jekyll: true