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.74.1 -c rust-docs
        rustup default 1.74.1
    - name: Install mdbook & mdbook-typst-pdf
      run: |
        mkdir bin
        curl -sSL https://github.com/rust-lang/mdBook/releases/download/v0.4.49/mdbook-v0.4.49-x86_64-unknown-linux-gnu.tar.gz | tar -xz --directory=bin
        curl -sSL https://github.com/KaiserY/mdbook-typst-pdf/releases/download/v0.6.2/mdbook-typst-pdf-x86_64-unknown-linux-musl.tar.xz | tar -xJ --directory=bin --strip-components 1
        echo "$(pwd)/bin" >> ${GITHUB_PATH}
    - 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://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSans-v2.013/NotoSans-v2.013.zip
        unzip Noto_Sans.zip -d fonts/Noto_Sans
        curl -sL -o Noto_Sans_SC.zip https://github.com/notofonts/noto-cjk/releases/download/Sans2.004/08_NotoSansCJKsc.zip
        unzip Noto_Sans_SC.zip -d fonts/Noto_Sans_SC
        curl -sL -o Noto_Sans_Mono.zip https://github.com/notofonts/latin-greek-cyrillic/releases/download/NotoSansMono-v2.014/NotoSansMono-v2.014.zip
        unzip Noto_Sans_Mono.zip -d fonts/Noto_Sans_Mono
        curl -sL -o Noto_Sans_KR.zip https://github.com/notofonts/noto-cjk/releases/download/Sans2.004/07_NotoSansCJKkr.zip
        unzip Noto_Sans_KR.zip -d fonts/Noto_Sans_KR
        curl -sL -o Noto_Sans_Thai.zip https://github.com/notofonts/thai/releases/download/NotoSansThai-v2.002/NotoSansThai-v2.002.zip
        unzip Noto_Sans_Thai.zip -d fonts/Noto_Sans_Thai
        curl -sL -o Noto_Sans_Arabic.zip https://github.com/notofonts/arabic/releases/download/NotoNaskhArabic-v2.018/NotoNaskhArabic-v2.018.zip
        unzip Noto_Sans_Arabic.zip -d fonts/Noto_Sans_Arabic
        curl -sL -o Noto_Sans_Devanagari.zip https://github.com/notofonts/devanagari/releases/download/NotoSansDevanagari-v2.004/NotoSansDevanagari-v2.004.zip
        unzip -: Noto_Sans_Devanagari.zip -d fonts/Noto_Sans_Devanagari
        curl -sL -o NotoColorEmoji.ttf https://github.com/googlefonts/noto-emoji/raw/main/fonts/NotoColorEmoji.ttf
        mv NotoColorEmoji.ttf fonts/NotoColorEmoji.ttf
        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
        curl -sOL https://github.com/notofonts/hebrew/releases/download/NotoSansHebrew-v2.003/NotoSansHebrew-v2.003.zip
        unzip -: NotoSansHebrew-v2.003.zip
        mv -v NotoSansHebrew fonts/
        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/typst-pdf/Rust 程序设计语言 简体中文版.pdf" book/
        rm -r book/html/
        rm -rf book/typst-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
