Skip to content

Add Github workflow automation for package and upload each font separately #323

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 6 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
196 changes: 196 additions & 0 deletions .github/workflows/package-fonts.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,196 @@
name: Process and Package Monaspace Fonts by Family and Format

# This action is triggered manually or on push to the main branch
on:
workflow_dispatch:
push:
branches:
- main

jobs:
build-font-packages:
runs-on: ubuntu-latest

steps:
# Check out the current repository (where this workflow file resides)
- name: Checkout workflow repository
uses: actions/checkout@v4

# Check out the Monaspace repository into a subdirectory named 'monaspace'
- name: Checkout Monaspace repository
uses: actions/checkout@v4
with:
repository: githubnext/monaspace
path: monaspace

- name: Process and Package All Fonts
id: package_fonts
run: |
families=("Argon" "Neon" "Xenon" "Radon" "Krypton")
for family in "${families[@]}"; do
echo "--- Processing Monaspace ${family} ---"

# Package OTF
echo "Packaging OTF for ${family}..."
mkdir -p "${family}-OTF"
cp monaspace/fonts/otf/Monaspace${family}-*.otf "${family}-OTF/"
zip -r "Monaspace-${family}-OTF.zip" "${family}-OTF"
rm -rf "${family}-OTF"

# Package Variable Font
if [ -f "monaspace/fonts/variable/Monaspace${family}VarVF.ttf" ]; then
echo "Packaging Variable font for ${family}..."
mkdir -p "${family}-Variable"
cp "monaspace/fonts/variable/Monaspace${family}VarVF.ttf" "${family}-Variable/"
zip -r "Monaspace-${family}-Variable.zip" "${family}-Variable"
rm -rf "${family}-Variable"
fi

# Package Frozen Font
if [ -f "monaspace/fonts/frozen/Monaspace${family}Frozen.ttf" ]; then
echo "Packaging Frozen font for ${family}..."
mkdir -p "${family}-Frozen"
cp "monaspace/fonts/frozen/Monaspace${family}Frozen.ttf" "${family}-Frozen/"
zip -r "Monaspace-${family}-Frozen.zip" "${family}-Frozen"
rm -rf "${family}-Frozen"
fi

# Package Webfonts
if ls monaspace/fonts/webfonts/Monaspace${family}* 1> /dev/null 2>&1; then
echo "Packaging Webfonts for ${family}..."
mkdir -p "${family}-Webfonts"
cp monaspace/fonts/webfonts/Monaspace${family}* "${family}-Webfonts/"
zip -r "Monaspace-${family}-Webfonts.zip" "${family}-Webfonts"
rm -rf "${family}-Webfonts"
fi
done

# --- Upload Argon Artifacts ---
- name: Upload Argon OTF
uses: actions/upload-artifact@v4
with:
name: Monaspace-Argon-OTF
path: Monaspace-Argon-OTF.zip
if-no-files-found: warn
- name: Upload Argon Variable
uses: actions/upload-artifact@v4
with:
name: Monaspace-Argon-Variable
path: Monaspace-Argon-Variable.zip
if-no-files-found: warn
- name: Upload Argon Frozen
uses: actions/upload-artifact@v4
with:
name: Monaspace-Argon-Frozen
path: Monaspace-Argon-Frozen.zip
if-no-files-found: warn
- name: Upload Argon Webfonts
uses: actions/upload-artifact@v4
with:
name: Monaspace-Argon-Webfonts
path: Monaspace-Argon-Webfonts.zip
if-no-files-found: warn

# --- Upload Neon Artifacts ---
- name: Upload Neon OTF
uses: actions/upload-artifact@v4
with:
name: Monaspace-Neon-OTF
path: Monaspace-Neon-OTF.zip
if-no-files-found: warn
- name: Upload Neon Variable
uses: actions/upload-artifact@v4
with:
name: Monaspace-Neon-Variable
path: Monaspace-Neon-Variable.zip
if-no-files-found: warn
- name: Upload Neon Frozen
uses: actions/upload-artifact@v4
with:
name: Monaspace-Neon-Frozen
path: Monaspace-Neon-Frozen.zip
if-no-files-found: warn
- name: Upload Neon Webfonts
uses: actions/upload-artifact@v4
with:
name: Monaspace-Neon-Webfonts
path: Monaspace-Neon-Webfonts.zip
if-no-files-found: warn

# --- Upload Xenon Artifacts ---
- name: Upload Xenon OTF
uses: actions/upload-artifact@v4
with:
name: Monaspace-Xenon-OTF
path: Monaspace-Xenon-OTF.zip
if-no-files-found: warn
- name: Upload Xenon Variable
uses: actions/upload-artifact@v4
with:
name: Monaspace-Xenon-Variable
path: Monaspace-Xenon-Variable.zip
if-no-files-found: warn
- name: Upload Xenon Frozen
uses: actions/upload-artifact@v4
with:
name: Monaspace-Xenon-Frozen
path: Monaspace-Xenon-Frozen.zip
if-no-files-found: warn
- name: Upload Xenon Webfonts
uses: actions/upload-artifact@v4
with:
name: Monaspace-Xenon-Webfonts
path: Monaspace-Xenon-Webfonts.zip
if-no-files-found: warn

# --- Upload Radon Artifacts ---
- name: Upload Radon OTF
uses: actions/upload-artifact@v4
with:
name: Monaspace-Radon-OTF
path: Monaspace-Radon-OTF.zip
if-no-files-found: warn
- name: Upload Radon Variable
uses: actions/upload-artifact@v4
with:
name: Monaspace-Radon-Variable
path: Monaspace-Radon-Variable.zip
if-no-files-found: warn
- name: Upload Radon Frozen
uses: actions/upload-artifact@v4
with:
name: Monaspace-Radon-Frozen
path: Monaspace-Radon-Frozen.zip
if-no-files-found: warn
- name: Upload Radon Webfonts
uses: actions/upload-artifact@v4
with:
name: Monaspace-Radon-Webfonts
path: Monaspace-Radon-Webfonts.zip
if-no-files-found: warn

# --- Upload Krypton Artifacts ---
- name: Upload Krypton OTF
uses: actions/upload-artifact@v4
with:
name: Monaspace-Krypton-OTF
path: Monaspace-Krypton-OTF.zip
if-no-files-found: warn
- name: Upload Krypton Variable
uses: actions/upload-artifact@v4
with:
name: Monaspace-Krypton-Variable
path: Monaspace-Krypton-Variable.zip
if-no-files-found: warn
- name: Upload Krypton Frozen
uses: actions/upload-artifact@v4
with:
name: Monaspace-Krypton-Frozen
path: Monaspace-Krypton-Frozen.zip
if-no-files-found: warn
- name: Upload Krypton Webfonts
uses: actions/upload-artifact@v4
with:
name: Monaspace-Krypton-Webfonts
path: Monaspace-Krypton-Webfonts.zip
if-no-files-found: warn