initial commit
This commit is contained in:
170
.github/workflows/ci.yml
vendored
Normal file
170
.github/workflows/ci.yml
vendored
Normal file
@@ -0,0 +1,170 @@
|
||||
name: "CI"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
pull_request:
|
||||
branches:
|
||||
- main
|
||||
workflow_dispatch:
|
||||
schedule:
|
||||
# First day of a month
|
||||
- cron: '0 0 1 * *'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Get Core Sans
|
||||
uses: actions/checkout@v4
|
||||
if: "!github.event.pull_request.head.repo.fork"
|
||||
with:
|
||||
fetch-depth: 0
|
||||
repository: mainmatter/core-sans-a-fonts
|
||||
ssh-key: ${{ secrets.SSH_PRIVATE_KEY }}
|
||||
path: core-sans-a-fonts
|
||||
- name: Install Core Sans Font
|
||||
if: "!github.event.pull_request.head.repo.fork"
|
||||
run: |
|
||||
sudo cp -r core-sans-a-fonts/* /usr/local/share/fonts/
|
||||
sudo fc-cache -f -v
|
||||
fc-list | grep "Core Sans"
|
||||
- name: Use Fallback font for fork PRs
|
||||
if: "github.event.pull_request.head.repo.fork"
|
||||
run: |
|
||||
sed -i 's/"BoldFont=CoreSansA65.ttf",//g' book/book.toml
|
||||
sed -i 's/"ItalicFont=CoreSansA45It.ttf",//g' book/book.toml
|
||||
sed -i 's/"BoldItalicFont=CoreSansA65It.ttf",//g' book/book.toml
|
||||
sed -i 's/CoreSansA45.ttf/Open Sans:style=Regular/g' book/book.toml
|
||||
- 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, pdftk and related dependencies
|
||||
run: |
|
||||
cargo install mdbook-pandoc --locked --version 0.7.1
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y fonts-noto fonts-open-sans calibre pdftk
|
||||
sudo fc-cache -f -v
|
||||
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: Add cover and back to downloadable PDF
|
||||
run: |
|
||||
pdftk book/assets/cover.pdf book/book/pandoc/pdf/100-exercises-to-learn-rust.pdf book/assets/back.pdf cat output book/book/pandoc/pdf/100-exercises-to-learn-rust-with-cover.pdf
|
||||
mv book/book/pandoc/pdf/100-exercises-to-learn-rust-with-cover.pdf book/book/pandoc/pdf/100-exercises-to-learn-rust.pdf
|
||||
- name: Convert HTML to ePUB
|
||||
run: |
|
||||
cd book/book/pandoc/html
|
||||
sed -i 's|<code>\\newpage</code>{=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
|
||||
|
||||
gravity:
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build]
|
||||
steps:
|
||||
- uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: book
|
||||
pattern: online-pdf
|
||||
- uses: pnpm/action-setup@v4
|
||||
with:
|
||||
version: 9
|
||||
- run: ls -las ./book
|
||||
- name: Run Gravity
|
||||
run: pnpm dlx @gravityci/cli "./book/**/*"
|
||||
env:
|
||||
GRAVITY_TOKEN: ${{ secrets.GRAVITY_TOKEN }}
|
||||
|
||||
formatter:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: dprint/check@v2.2
|
||||
Reference in New Issue
Block a user