name: "CI" on: push: branches: - main pull_request: branches: - main jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 with: fetch-depth: 0 - uses: actions-rust-lang/setup-rust-toolchain@v1 - name: Install exercise plugin run: cargo install --path helpers/mdbook-exercise-linker - name: Install link shortener plugin run: cargo install --path helpers/mdbook-link-shortener - name: Install mdbook-pandoc, calibre and related dependencies run: | cargo install mdbook-pandoc --locked --version 0.7.1 sudo apt-get update sudo apt-get install -y fonts-noto calibre export PANDOC_VERSION=3.3 curl -LsSf https://github.com/jgm/pandoc/releases/download/${PANDOC_VERSION}/pandoc-${PANDOC_VERSION}-linux-amd64.tar.gz | tar zxf - echo "$PWD/pandoc-${PANDOC_VERSION}/bin" >> $GITHUB_PATH shell: bash - name: Setup TeX Live uses: teatimeguest/setup-texlive-action@v3 with: packages: scheme-basic luatex lualatex-math luacolor luatexbase luaotfload framed unicode-math xcolor geometry longtable booktabs array lua-ul etoolbox fancyvrb footnote selnolig natbib csquotes bookmark xurl amsmath setspace iftex - name: Check `tlmgr` version run: tlmgr --version - uses: taiki-e/install-action@v2 with: tool: mdbook - name: Build book env: LINK_SHORTENER_VERIFY: "true" run: | cd book mdbook build - name: Convert HTML to ePUB run: | cd book/book/pandoc/html sed -i 's|\\newpage{=latex}||g' 100-exercises-to-learn-rust.html ebook-convert 100-exercises-to-learn-rust.html 100-exercises-to-learn-rust.epub \ --embed-all-fonts \ --subset-embedded-fonts - name: Link Checker uses: lycheeverse/lychee-action@v1 with: fail: true args: | --exclude-loopback --require-https --no-progress book/book/html/ # Upload the HTML book as an artifact - uses: actions/upload-artifact@v4 with: name: book # When you support multiple formats, the output directory changes # to include the format in its path. path: book/book/html - uses: actions/upload-artifact@v4 with: name: online-pdf path: book/book/pandoc/pdf/100-exercises-to-learn-rust.pdf - uses: actions/upload-artifact@v4 with: name: paperback path: book/book/pandoc/paperback/100-exercises-to-learn-rust.pdf - uses: actions/upload-artifact@v4 with: name: ePUB path: book/book/pandoc/html/100-exercises-to-learn-rust.epub is_fresh: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - run: sudo apt-get update && sudo apt-get install -y jq - run: | ./helpers/json2redirects.sh book/link2alias.json > site/_redirects # Verify nothing has changed, meaning that the redirect file is up-to-date - run: | git diff --exit-code site/_redirects formatter: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - uses: dprint/check@v2.2