#!/bin/shset -eu REPO="https://github.com/IBM/plex"ASSET_FONTS_DIR="assets/fonts"FONT_NAMES=("plex-sans" "plex-mono")FILENAMES=("IBMPlexSans" "IBMPlexMono")STYLES=("Regular" "Italic" "Bold" "BoldItalic") run_else() { $1 >/dev/null 2>&1 || { echo "$2"; exit 1; }; } run_else "gh" "gh CLI missing"run_else "which unzip" "unzip CLI missing"run_else "gh auth status" "run: gh auth login"run_else "ls ${ASSET_FONTS_DIR}" "Not in repo root. Run from repo root." pushd "${ASSET_FONTS_DIR}" for i in $(seq 0 $((${#FONT_NAMES[@]} - 1))); do font="${FONT_NAMES[$i]}" filename="${FILENAMES[$i]}" tagName=$(gh release list \ --repo "$REPO" \ --json tagName,createdAt,isDraft,isPrerelease \ --jq ' [.[] | select(.tagName | startswith("'"@ibm/$font"'@")) | select(.isDraft == false and .isPrerelease == false) | {tagName, createdAt}] | sort_by(.tagName | split("@")[2] | split(".") | map(tonumber)) | reverse | first | .tagName ') releaseDate=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.published_at[:10]') releaseUrl=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.html_url') echo "- Update [${tagName}](${releaseUrl})" zipFileName=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.assets[].name | select(endswith(".zip"))') gh release download "$tagName" \ --repo https://github.com/IBM/plex \ --clobber \ --pattern "$zipFileName" prefix="ibm-${font}/fonts/complete/ttf" out_dir="ibm-${font}" files_to_extract="$prefix/license.txt" for style in "${STYLES[@]}"; do files_to_extract+=" $prefix/${filename}-$style.ttf" done unzip -q -o -j "$zipFileName" $files_to_extract -d $out_dir rm "$zipFileName"doneechoecho "\`\`\`"shasum -a 256 */*.ttfecho "\`\`\`"
#!/bin/sh
set -eu
REPO="https://github.com/IBM/plex"
ASSET_FONTS_DIR="assets/fonts"
FONT_NAMES=("plex-sans" "plex-mono")
FILENAMES=("IBMPlexSans" "IBMPlexMono")
STYLES=("Regular" "Italic" "Bold" "BoldItalic")
run_else() { $1 >/dev/null 2>&1 || { echo "$2"; exit 1; }; }
run_else "gh" "gh CLI missing"
run_else "which unzip" "unzip CLI missing"
run_else "gh auth status" "run: gh auth login"
run_else "ls ${ASSET_FONTS_DIR}" "Not in repo root. Run from repo root."
pushd "${ASSET_FONTS_DIR}"
for i in $(seq 0 $((${#FONT_NAMES[@]} - 1))); do
font="${FONT_NAMES[$i]}"
filename="${FILENAMES[$i]}"
tagName=$(gh release list \
--repo "$REPO" \
--json tagName,createdAt,isDraft,isPrerelease \
--jq '
[.[] | select(.tagName | startswith("'"@ibm/$font"'@"))
| select(.isDraft == false and .isPrerelease == false)
| {tagName, createdAt}]
| sort_by(.tagName | split("@")[2] | split(".") | map(tonumber))
| reverse
| first
| .tagName
')
releaseDate=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.published_at[:10]')
releaseUrl=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.html_url')
echo "- Update [${tagName}](${releaseUrl})"
zipFileName=$(gh api /repos/IBM/plex/releases/tags/"$tagName" --jq '.assets[].name | select(endswith(".zip"))')
gh release download "$tagName" \
--repo https://github.com/IBM/plex \
--clobber \
--pattern "$zipFileName"
prefix="ibm-${font}/fonts/complete/ttf"
out_dir="ibm-${font}"
files_to_extract="$prefix/license.txt"
for style in "${STYLES[@]}"; do
files_to_extract+=" $prefix/${filename}-$style.ttf"
done
unzip -q -o -j "$zipFileName" $files_to_extract -d $out_dir
rm "$zipFileName"
done
echo
echo "\`\`\`"
shasum -a 256 */*.ttf
echo "\`\`\`"