mirror of
https://github.com/ryanoasis/nerd-fonts.git
synced 2024-12-25 20:18:01 +02:00
4fba05a738
[why] Although we automatically create a new up to date i_seti.sh on all original-source.otf updates, we do not push it to the repo together with the font. [note] Also include up-to-date i_seti.sh because the workflow will not trigger until we have new icons and the font does actually change. Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
84 lines
3.5 KiB
YAML
84 lines
3.5 KiB
YAML
name: PackSVGs
|
|
|
|
on:
|
|
push:
|
|
paths:
|
|
- 'src/svgs/*'
|
|
- 'bin/scripts/generate-original-source.py'
|
|
- 'bin/scripts/optimize-original-source.sh'
|
|
workflow_dispatch:
|
|
|
|
jobs:
|
|
create-symbols-font:
|
|
runs-on: ubuntu-22.04
|
|
steps:
|
|
- uses: actions/checkout@v3
|
|
- name: Fetch dependencies
|
|
run: |
|
|
sudo apt update -y -q
|
|
# ttfdump comes with texlive-binaries
|
|
# We use ttfdump instead of showttf, because the later core dumps at the moment
|
|
sudo apt install python3-fontforge inkscape texlive-binaries dc -y -q
|
|
|
|
- name: Simplify the SVGs
|
|
id: optimize
|
|
run: |
|
|
cd bin/scripts
|
|
./optimize-original-source.sh doit | tee optlog.txt
|
|
changenum=$(tail -n 1 optlog.txt | sed -E 's/[^0-9]*([0-9]+).*/\1/')
|
|
echo "Script claims number of changed files: ${changenum}"
|
|
echo "num_of_files=${changenum}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Commit simplified SVGs back to repo
|
|
if: steps.optimize.outputs.num_of_files > 0
|
|
uses: EndBug/add-and-commit@v9
|
|
with:
|
|
fetch: false
|
|
add: 'src/svgs'
|
|
message: "[ci] Simplify original-source source glyphs"
|
|
committer_name: GitHub Actions
|
|
committer_email: 41898282+github-actions[bot]@users.noreply.github.com
|
|
|
|
- name: Dummy create Seti-and-original-symbols font and CHECK FOR CHANGES
|
|
id: compare_font
|
|
run: |
|
|
cd bin/scripts
|
|
echo "OLD_FONT_LS=$(ls -l ../../src/glyphs/original-source.otf)" >> $GITHUB_ENV
|
|
# First we create a 'test' font with the same timestamp as the old to see if
|
|
# there are any differences (apart from the timestamp)
|
|
export CURRENT_FONT_DATE=$(ttfdump -t head ../../src/glyphs/original-source.otf | \
|
|
grep -E '[^a-z]created:.*0x' | sed 's/.*x//' | tr 'a-f' 'A-F')
|
|
echo "Font creation date (1904): 0x${CURRENT_FONT_DATE}"
|
|
# The timestamp in the HEAD table is given in 1904 seconds, we convert that
|
|
# to 1970 (unix) seconds.
|
|
export SOURCE_DATE_EPOCH=$(dc -e "16i ${CURRENT_FONT_DATE} Ai 86400 24107 * - p")
|
|
echo "Font creation date (1970): ${SOURCE_DATE_EPOCH}"
|
|
echo "Create font with previous timestamp"
|
|
./generate-original-source.py
|
|
# Check if the new font file has changed
|
|
CHANGE=$(git diff --quiet ../../src/glyphs/original-source.otf && echo false || echo true)
|
|
echo "Change detected: ${CHANGE}"
|
|
echo "changed=${CHANGE}" >> $GITHUB_OUTPUT
|
|
|
|
- name: Create Seti-and-original-symbols font for real with current timestamp
|
|
if: steps.compare_font.outputs.changed == 'true'
|
|
run: |
|
|
cd bin/scripts
|
|
echo "Create font with current timestamp"
|
|
# We need to force creation and modification timestamp to be identical
|
|
# to make the compare_font step work next time
|
|
export SOURCE_DATE_EPOCH=$(date +%s)
|
|
./generate-original-source.py
|
|
echo "${OLD_FONT_LS}"
|
|
ls -l ../../src/glyphs/original-source.otf
|
|
|
|
- name: Commit created font back to repo
|
|
if: steps.compare_font.outputs.changed == 'true'
|
|
uses: EndBug/add-and-commit@v9
|
|
with:
|
|
fetch: false
|
|
add: "['src/glyphs/original-source.otf', 'bin/scripts/lib/i_seti.sh']"
|
|
message: "[ci] Rebuild original-source font"
|
|
committer_name: GitHub Actions
|
|
committer_email: 41898282+github-actions[bot]@users.noreply.github.com
|