Skip to content

Commit

Permalink
archive-fonts: Create tar.xz packs
Browse files Browse the repository at this point in the history
See #1233

Signed-off-by: Fini Jastrow <ulf.fini.jastrow@desy.de>
  • Loading branch information
Finii committed Jun 2, 2023
1 parent e2efed8 commit ccfcb21
Showing 1 changed file with 25 additions and 5 deletions.
30 changes: 25 additions & 5 deletions bin/scripts/archive-fonts.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
# Nerd Fonts Version: 3.0.1
# Script Version: 1.1.3
# Script Version: 1.2.0
# Iterates over all patched fonts directories
# to generate release archives of the patched font(s)
#
Expand All @@ -26,11 +26,11 @@ cd "$scripts_root_dir/../../patched-fonts/" || {
# limit archiving to given pattern (first script param) or entire root folder if no param given:
if [ $# -eq 1 ]; then
pattern=$1
search_pattern="*$1*.zip"
search_pattern=$1
echo "$LINE_PREFIX Limiting archive to pattern '$pattern'"
else
pattern=".*"
search_pattern="*.zip"
search_pattern=""
echo "$LINE_PREFIX No limiting pattern given, will search entire folder"
fi

Expand All @@ -39,8 +39,8 @@ touch "$outputdir/readme.md"
mini_readme="$outputdir/readme.md"
cat "$parent_dir/src/archive-readme.md" >> "$mini_readme"

# clear out the directory zips
find "${outputdir:?}" -name "$search_pattern" -type f -delete
# clear out the directory
find "${outputdir:?}" -maxdepth 1 -name "${search_pattern}*.zip" -or -name "${search_pattern}*.xz" -type f -delete

find . -maxdepth 1 -iregex "\./$pattern" -type d | sort |
while read -r filename; do
Expand All @@ -49,7 +49,27 @@ while read -r filename; do

[[ -d "$outputdir" ]] || mkdir -p "$outputdir"

rm -f "${outputdir}/${basename}.tar"
expected=$(find "${searchdir}" -iname "*.[ot]tf" -exec echo "+" \; | wc -l)
echo "${LINE_PREFIX} Packing ${basename}.tar.xz (${expected} fonts)"
# This finds all files, uniq on the filename (ignoring path):
while IFS= read -d $'\0' -r descriptor; do
path=$(echo ${descriptor} | sed 's/|.*//')
file=$(echo ${descriptor} | sed 's/.*|//')
if $(echo ${file} | grep -qi '.[ot]tf'); then
expected=$((expected - 1))
fi
# Need to cd to the file because we want to archive 'flat' (without subdirs):
x=$(cd "$path" && tar rf "$outputdir/$basename.tar" --no-recursion "$file")
done < <(find "${searchdir}" -type f -exec bash -c 'printf "%s\000" "{}" | sed "s!\(.*\)/!\1|!"' \; | sort -z -u '-t|' -k2,2 | sort -z)

if [ $expected -ne 0 ]; then
# Should never happen, but who knows
echo "${LINE_PREFIX} Did not pack expected number of font files! Likely same font names for different paths."
exit 1
fi
x=$(cd "${outputdir}" && tar rf "${outputdir}/${basename}.tar" "readme.md")
xz -f -9 -T0 "${outputdir}/${basename}.tar"

# ZIP stuff:
# add font files:
Expand Down

0 comments on commit ccfcb21

Please sign in to comment.