nerd-fonts/.github/workflows/packsvgs.yml
Fini Jastrow 3fd15de2a3 CI: Try to commit changes only if we optimized some svgs
[why]
When so svg files could be optimized we still try to commit the
'changes'. There are no changes - so nothing is committed (empty commits
are avoided).

But the workflow run still shows the 'commit back to repo' step,
although we know beforehand that it will not commit anything.

[how]
Technically that is no problem and the behavior is unchanged, but we can
just skip the commit step if we know there can not be anything to
commit...

It just looks nicer :-}

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
2022-09-21 13:47:41 +02:00

83 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 "::set-output name=num_of_files::${changenum}"
- 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 "::set-output name=changed::${CHANGE}"
- 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'
message: "[ci] Rebuild original-source font"
committer_name: GitHub Actions
committer_email: 41898282+github-actions[bot]@users.noreply.github.com