fontist 2.1.1 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/deploy-pages.yml +6 -0
- data/.github/workflows/formulas-auto-update-test.yml +287 -0
- data/.github/workflows/post-rake.yml +5 -1
- data/.github/workflows/rake-metanorma.yaml +24 -3
- data/.github/workflows/rake.yml +4 -1
- data/.github/workflows/release.yml +6 -0
- data/.github/workflows/release.yml.orig +36 -0
- data/.github/workflows/tebako-pack.yml +4 -0
- data/.gitignore +7 -6
- data/README.adoc +100 -0
- data/docs/package-lock.json +1610 -736
- data/docs/package.json +6 -6
- data/fontist.gemspec +2 -0
- data/lib/fontist/cache/store.rb +31 -2
- data/lib/fontist/font_file.rb +65 -14
- data/lib/fontist/indexes/index_mixin.rb +109 -20
- data/lib/fontist/manifest.rb +4 -4
- data/lib/fontist/system_index.rb +30 -1
- data/lib/fontist/utils/cache.rb +1 -0
- data/lib/fontist/utils/downloader.rb +38 -4
- data/lib/fontist/utils/github_client.rb +43 -0
- data/lib/fontist/utils/github_url.rb +51 -0
- data/lib/fontist/version.rb +1 -1
- data/lib/fontist.rb +6 -3
- metadata +35 -3
- /data/{docs/google-fonts-multi-format-usage.md → google-fonts-multi-format-usage.md} +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: b50fa7f2d919278a80d47cc5c35942960903a5ed586fc37c0cf21b944a76df1e
|
|
4
|
+
data.tar.gz: cc98d5a18b0e00e62a8ca5f41bd54645e3cf2e92f600d4a91c7ceb79c3110bf5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a641b85c69158cbc1430407d0c72c5a480f96b6e77a500834691a579591d1d448c522fa65307c28597b5082bec3a4a6d83913a09dc7066eb533732b9f7dfa8fe
|
|
7
|
+
data.tar.gz: ac31ba8b42034ec098178b6db77f3d35325d81455b0c98d979ec98975ed2d93cf80a40dbb6e7f3f721e8ddd9925ca4ed9b2c9088b06eb88cb27585687ff06dc8
|
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
name: deploy-pages
|
|
2
|
+
|
|
3
|
+
permissions:
|
|
4
|
+
contents: read
|
|
5
|
+
|
|
2
6
|
on:
|
|
3
7
|
push:
|
|
4
8
|
branches: "main"
|
|
@@ -10,9 +14,11 @@ on:
|
|
|
10
14
|
- .github/**
|
|
11
15
|
- "!.github/workflows/deploy-pages.yml"
|
|
12
16
|
workflow_dispatch:
|
|
17
|
+
|
|
13
18
|
concurrency:
|
|
14
19
|
group: ${{ github.workflow }}
|
|
15
20
|
cancel-in-progress: true
|
|
21
|
+
|
|
16
22
|
jobs:
|
|
17
23
|
deploy-pages:
|
|
18
24
|
environment:
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
name: formulas-auto-update-test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ main ]
|
|
6
|
+
pull_request:
|
|
7
|
+
workflow_dispatch:
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
# Cancel in-progress runs for the same workflow and branch
|
|
13
|
+
concurrency:
|
|
14
|
+
group: '${{ github.workflow }}-${{ github.head_ref || github.ref_name }}'
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
env:
|
|
18
|
+
BUNDLER_VER: latest
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
# This job tests that fonts can be installed WITHOUT explicit `fontist update`.
|
|
22
|
+
# This verifies the lazy initialization feature works correctly on all platforms.
|
|
23
|
+
#
|
|
24
|
+
# Lazy initialization ensures formulas are auto-downloaded on first access,
|
|
25
|
+
# fixing the issue where CI workflows failed because formulas weren't available.
|
|
26
|
+
test-formulas-auto-update:
|
|
27
|
+
name: Formulas Auto-Update Test (${{ matrix.os }})
|
|
28
|
+
runs-on: ${{ matrix.os }}
|
|
29
|
+
|
|
30
|
+
strategy:
|
|
31
|
+
fail-fast: false
|
|
32
|
+
matrix:
|
|
33
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
34
|
+
# Test on all platforms to ensure lazy initialization works everywhere
|
|
35
|
+
# macOS: STIX Two Math is pre-installed, but we still test the mechanism
|
|
36
|
+
# Linux/Windows: No pre-installed fonts, tests full lazy initialization
|
|
37
|
+
|
|
38
|
+
steps:
|
|
39
|
+
- name: Checkout
|
|
40
|
+
uses: actions/checkout@v4
|
|
41
|
+
|
|
42
|
+
- name: Setup Ruby
|
|
43
|
+
uses: ruby/setup-ruby@v1
|
|
44
|
+
with:
|
|
45
|
+
ruby-version: '3.3'
|
|
46
|
+
rubygems: latest
|
|
47
|
+
bundler: ${{ env.BUNDLER_VER }}
|
|
48
|
+
bundler-cache: true
|
|
49
|
+
|
|
50
|
+
- name: Verify fontist installation
|
|
51
|
+
shell: bash
|
|
52
|
+
run: |
|
|
53
|
+
echo "=== Fontist Version ==="
|
|
54
|
+
bundle exec fontist --version
|
|
55
|
+
echo ""
|
|
56
|
+
echo "=== Fontist Home Path ==="
|
|
57
|
+
echo "Fontist home: $HOME/.fontist"
|
|
58
|
+
echo "Formulas path: $HOME/.fontist/versions/v4/formulas"
|
|
59
|
+
|
|
60
|
+
# CRITICAL: Remove any existing formulas directory to simulate fresh CI environment
|
|
61
|
+
# This ensures we're testing lazy initialization from a clean state
|
|
62
|
+
- name: Remove existing formulas directory (simulate fresh CI)
|
|
63
|
+
shell: bash
|
|
64
|
+
run: |
|
|
65
|
+
echo "=== Simulating Fresh CI Environment ==="
|
|
66
|
+
echo "Removing any existing formulas directory..."
|
|
67
|
+
if [ -d "$HOME/.fontist/versions/v4/formulas" ]; then
|
|
68
|
+
echo " ✓ Found existing formulas directory, removing..."
|
|
69
|
+
rm -rf "$HOME/.fontist/versions/v4/formulas"
|
|
70
|
+
echo " ✓ Formulas directory removed"
|
|
71
|
+
else
|
|
72
|
+
echo " ✓ No existing formulas directory (clean state)"
|
|
73
|
+
fi
|
|
74
|
+
echo ""
|
|
75
|
+
echo "Verifying formulas directory does not exist:"
|
|
76
|
+
if [ -d "$HOME/.fontist/versions/v4/formulas" ]; then
|
|
77
|
+
echo " ✗ ERROR: Formulas directory still exists!"
|
|
78
|
+
exit 1
|
|
79
|
+
else
|
|
80
|
+
echo " ✓ Confirmed: Formulas directory does not exist"
|
|
81
|
+
fi
|
|
82
|
+
|
|
83
|
+
- name: Verify formulas directory doesn't exist before test
|
|
84
|
+
shell: bash
|
|
85
|
+
run: |
|
|
86
|
+
echo "=== Pre-test State Verification ==="
|
|
87
|
+
echo "Checking formulas directory status:"
|
|
88
|
+
FORMULAS_DIR="$HOME/.fontist/versions/v4/formulas/Formulas"
|
|
89
|
+
if [ -d "$FORMULAS_DIR" ]; then
|
|
90
|
+
echo " ✗ ERROR: Formulas directory exists at $FORMULAS_DIR"
|
|
91
|
+
echo " This will invalidate the test!"
|
|
92
|
+
exit 1
|
|
93
|
+
else
|
|
94
|
+
echo " ✓ Formulas directory does not exist (as expected)"
|
|
95
|
+
fi
|
|
96
|
+
echo ""
|
|
97
|
+
echo "Listing .fontist directory contents (if any):"
|
|
98
|
+
ls -la "$HOME/.fontist/" 2>/dev/null || echo " (No .fontist directory yet)"
|
|
99
|
+
echo ""
|
|
100
|
+
echo "Listing versions directory (if any):"
|
|
101
|
+
ls -la "$HOME/.fontist/versions/" 2>/dev/null || echo " (No versions directory yet)"
|
|
102
|
+
|
|
103
|
+
# CRITICAL: Remove formulas directory again right before install test
|
|
104
|
+
# This is necessary because bundler-cache may restore .fontist directory
|
|
105
|
+
- name: Force remove formulas directory before test
|
|
106
|
+
shell: bash
|
|
107
|
+
run: |
|
|
108
|
+
echo "=== Force removing formulas directory before test ==="
|
|
109
|
+
rm -rf "$HOME/.fontist/versions/v4/formulas"
|
|
110
|
+
echo "✓ Formulas directory removed"
|
|
111
|
+
echo ""
|
|
112
|
+
echo "Verifying removal:"
|
|
113
|
+
if [ -d "$HOME/.fontist/versions/v4/formulas" ]; then
|
|
114
|
+
echo " ✗ ERROR: Formulas directory still exists!"
|
|
115
|
+
exit 1
|
|
116
|
+
else
|
|
117
|
+
echo " ✓ Formulas directory successfully removed"
|
|
118
|
+
fi
|
|
119
|
+
|
|
120
|
+
# CRITICAL TEST: Install Andale Mono WITHOUT running `fontist update` first
|
|
121
|
+
# Andale Mono is NOT pre-installed on any platform (macOS/Linux/Windows),
|
|
122
|
+
# so this properly tests lazy initialization on ALL platforms.
|
|
123
|
+
# Unlike STIX Two Math which is pre-installed on macOS.
|
|
124
|
+
- name: Install Andale Mono (WITHOUT fontist update)
|
|
125
|
+
shell: bash
|
|
126
|
+
run: |
|
|
127
|
+
echo "========================================================================="
|
|
128
|
+
echo " CRITICAL TEST: Lazy Initialization"
|
|
129
|
+
echo "========================================================================="
|
|
130
|
+
echo ""
|
|
131
|
+
echo "This test installs Andale Mono WITHOUT running 'fontist update' first."
|
|
132
|
+
echo "Andale Mono is NOT pre-installed on any platform, ensuring we test"
|
|
133
|
+
echo "lazy initialization on ALL platforms (macOS/Linux/Windows)."
|
|
134
|
+
echo ""
|
|
135
|
+
echo "Platform: ${{ matrix.os }}"
|
|
136
|
+
echo "Ruby: $(ruby --version)"
|
|
137
|
+
echo ""
|
|
138
|
+
echo "--- Step 1: Verify formulas don't exist yet ---"
|
|
139
|
+
FORMULAS_DIR="$HOME/.fontist/versions/v4/formulas/Formulas"
|
|
140
|
+
if [ -d "$FORMULAS_DIR" ]; then
|
|
141
|
+
echo " ✗ ERROR: Formulas directory already exists!"
|
|
142
|
+
echo " This invalidates the test - lazy initialization won't be tested."
|
|
143
|
+
exit 1
|
|
144
|
+
else
|
|
145
|
+
echo " ✓ Formulas directory does not exist (as expected)"
|
|
146
|
+
fi
|
|
147
|
+
echo ""
|
|
148
|
+
|
|
149
|
+
echo "--- Step 2: Install Andale Mono (should trigger lazy update) ---"
|
|
150
|
+
echo "Running: bundle exec fontist install 'Andale Mono' --accept-all-licenses --force"
|
|
151
|
+
echo ""
|
|
152
|
+
if bundle exec fontist install "Andale Mono" --accept-all-licenses --force 2>&1; then
|
|
153
|
+
echo ""
|
|
154
|
+
echo "✓ SUCCESS: Andale Mono installation completed"
|
|
155
|
+
INSTALL_SUCCESS=true
|
|
156
|
+
else
|
|
157
|
+
EXIT_CODE=$?
|
|
158
|
+
echo ""
|
|
159
|
+
echo "✗ FAILED: Andale Mono installation failed with exit code: $EXIT_CODE"
|
|
160
|
+
INSTALL_SUCCESS=false
|
|
161
|
+
fi
|
|
162
|
+
echo ""
|
|
163
|
+
|
|
164
|
+
echo "--- Step 3: Verify formulas were auto-downloaded ---"
|
|
165
|
+
if [ -d "$FORMULAS_DIR" ]; then
|
|
166
|
+
echo " ✓ Formulas directory was created (lazy initialization worked!)"
|
|
167
|
+
echo ""
|
|
168
|
+
echo " Formulas directory contents (first 20 entries):"
|
|
169
|
+
ls -1 "$FORMULAS_DIR" | head -20
|
|
170
|
+
else
|
|
171
|
+
echo " ✗ ERROR: Formulas directory was NOT created!"
|
|
172
|
+
echo " This indicates lazy initialization FAILED."
|
|
173
|
+
INSTALL_SUCCESS=false
|
|
174
|
+
fi
|
|
175
|
+
echo ""
|
|
176
|
+
|
|
177
|
+
echo "--- Step 4: Verify Andale Mono formula exists ---"
|
|
178
|
+
ANDALE_FORMULA="$FORMULAS_DIR/andale.yml"
|
|
179
|
+
if [ -f "$ANDALE_FORMULA" ]; then
|
|
180
|
+
echo " ✓ Andale Mono formula exists at andale.yml"
|
|
181
|
+
else
|
|
182
|
+
echo " ✗ ERROR: Andale Mono formula NOT found!"
|
|
183
|
+
echo " Expected: $ANDALE_FORMULA"
|
|
184
|
+
INSTALL_SUCCESS=false
|
|
185
|
+
fi
|
|
186
|
+
echo ""
|
|
187
|
+
|
|
188
|
+
echo "--- Step 5: Verify Andale Mono font was installed ---"
|
|
189
|
+
# Check if font file exists
|
|
190
|
+
FONT_PATH=$(find "$HOME/.fontist/fonts" -name "*Andale*" -type f 2>/dev/null | head -1)
|
|
191
|
+
if [ -n "$FONT_PATH" ]; then
|
|
192
|
+
echo " ✓ Andale Mono font file found:"
|
|
193
|
+
echo " $FONT_PATH"
|
|
194
|
+
else
|
|
195
|
+
echo " ⚠ WARNING: Andale Mono font file not found in .fontist/fonts"
|
|
196
|
+
echo " Checking with 'fontist list'..."
|
|
197
|
+
if bundle exec fontist list "Andale Mono" 2>&1 | grep -q "Andale"; then
|
|
198
|
+
echo " ✓ Font is discoverable via fontist list"
|
|
199
|
+
else
|
|
200
|
+
echo " ✗ ERROR: Font is NOT discoverable"
|
|
201
|
+
INSTALL_SUCCESS=false
|
|
202
|
+
fi
|
|
203
|
+
fi
|
|
204
|
+
echo ""
|
|
205
|
+
|
|
206
|
+
echo "--- Step 6: Final Result ---"
|
|
207
|
+
if [ "$INSTALL_SUCCESS" = true ]; then
|
|
208
|
+
echo "========================================================================="
|
|
209
|
+
echo " ✓✓✓ TEST PASSED: Lazy initialization works correctly ✓✓✓"
|
|
210
|
+
echo "========================================================================="
|
|
211
|
+
echo ""
|
|
212
|
+
echo "Andale Mono was successfully installed WITHOUT running 'fontist update'"
|
|
213
|
+
echo "This confirms that formulas are auto-downloaded on first access."
|
|
214
|
+
else
|
|
215
|
+
echo "========================================================================="
|
|
216
|
+
echo " ✗✗✗ TEST FAILED: Lazy initialization not working ✗✗✗"
|
|
217
|
+
echo "========================================================================="
|
|
218
|
+
echo ""
|
|
219
|
+
echo "Andale Mono installation failed or formulas were not auto-downloaded."
|
|
220
|
+
echo "This indicates a regression in the lazy initialization feature."
|
|
221
|
+
exit 1
|
|
222
|
+
fi
|
|
223
|
+
|
|
224
|
+
- name: Debug output on failure
|
|
225
|
+
if: failure()
|
|
226
|
+
shell: bash
|
|
227
|
+
run: |
|
|
228
|
+
echo "=== Debug Information ==="
|
|
229
|
+
echo ""
|
|
230
|
+
echo "Fontist version:"
|
|
231
|
+
bundle exec fontist --version || true
|
|
232
|
+
echo ""
|
|
233
|
+
echo ".fontist directory structure:"
|
|
234
|
+
find "$HOME/.fontist" -type d 2>/dev/null || true
|
|
235
|
+
echo ""
|
|
236
|
+
echo "Formulas directory:"
|
|
237
|
+
ls -la "$HOME/.fontist/versions/v4/formulas/" 2>/dev/null || echo " (Does not exist)"
|
|
238
|
+
echo ""
|
|
239
|
+
echo "Formulas/Formulas directory:"
|
|
240
|
+
ls -la "$HOME/.fontist/versions/v4/formulas/Formulas/" 2>/dev/null || echo " (Does not exist)"
|
|
241
|
+
echo ""
|
|
242
|
+
echo "Fonts directory:"
|
|
243
|
+
ls -la "$HOME/.fontist/fonts/" 2>/dev/null || echo " (Does not exist)"
|
|
244
|
+
echo ""
|
|
245
|
+
echo "Andale Mono formula file:"
|
|
246
|
+
cat "$HOME/.fontist/versions/v4/formulas/Formulas/andale.yml" 2>/dev/null || echo " (Does not exist)"
|
|
247
|
+
|
|
248
|
+
# Additional test: Verify that explicit 'fontist update' still works
|
|
249
|
+
test-explicit-update-still-works:
|
|
250
|
+
name: Explicit fontist update still works
|
|
251
|
+
runs-on: ubuntu-latest
|
|
252
|
+
|
|
253
|
+
steps:
|
|
254
|
+
- name: Checkout
|
|
255
|
+
uses: actions/checkout@v4
|
|
256
|
+
|
|
257
|
+
- name: Setup Ruby
|
|
258
|
+
uses: ruby/setup-ruby@v1
|
|
259
|
+
with:
|
|
260
|
+
ruby-version: '3.3'
|
|
261
|
+
rubygems: latest
|
|
262
|
+
bundler: ${{ env.BUNDLER_VER }}
|
|
263
|
+
bundler-cache: true
|
|
264
|
+
|
|
265
|
+
- name: Remove existing formulas directory
|
|
266
|
+
shell: bash
|
|
267
|
+
run: rm -rf "$HOME/.fontist/versions/v4/formulas"
|
|
268
|
+
|
|
269
|
+
- name: Run explicit fontist update
|
|
270
|
+
shell: bash
|
|
271
|
+
run: |
|
|
272
|
+
echo "=== Testing explicit 'fontist update' ==="
|
|
273
|
+
echo ""
|
|
274
|
+
echo "Running: bundle exec fontist update"
|
|
275
|
+
bundle exec fontist update
|
|
276
|
+
echo ""
|
|
277
|
+
echo "✓ Explicit update completed"
|
|
278
|
+
echo ""
|
|
279
|
+
echo "Verifying formulas directory exists:"
|
|
280
|
+
FORMULAS_DIR="$HOME/.fontist/versions/v4/formulas/Formulas"
|
|
281
|
+
if [ -d "$FORMULAS_DIR" ]; then
|
|
282
|
+
echo " ✓ Formulas directory exists"
|
|
283
|
+
echo " Formula count: $(ls -1 "$FORMULAS_DIR" | wc -l)"
|
|
284
|
+
else
|
|
285
|
+
echo " ✗ ERROR: Formulas directory does not exist"
|
|
286
|
+
exit 1
|
|
287
|
+
fi
|
|
@@ -3,12 +3,16 @@ name: post-rake
|
|
|
3
3
|
on:
|
|
4
4
|
workflow_dispatch:
|
|
5
5
|
workflow_run:
|
|
6
|
-
workflows:
|
|
6
|
+
workflows:
|
|
7
7
|
- rake
|
|
8
8
|
- rake-metanorma
|
|
9
9
|
types:
|
|
10
10
|
- completed
|
|
11
11
|
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write
|
|
14
|
+
packages: write
|
|
15
|
+
|
|
12
16
|
jobs:
|
|
13
17
|
post-rake:
|
|
14
18
|
if: ${{ github.event.workflow_run.conclusion == 'success' && contains(github.ref, 'refs/tags/v') }}
|
|
@@ -6,6 +6,9 @@ on:
|
|
|
6
6
|
tags: [ 'v*' ]
|
|
7
7
|
pull_request:
|
|
8
8
|
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
9
12
|
concurrency:
|
|
10
13
|
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
|
11
14
|
cancel-in-progress: true
|
|
@@ -15,6 +18,7 @@ env:
|
|
|
15
18
|
|
|
16
19
|
jobs:
|
|
17
20
|
prepare:
|
|
21
|
+
# commented for https://github.com/fontist/fontist/issues/428#issuecomment-3992198584
|
|
18
22
|
uses: metanorma/ci/.github/workflows/prepare-rake.yml@main
|
|
19
23
|
|
|
20
24
|
metanorma:
|
|
@@ -31,11 +35,11 @@ jobs:
|
|
|
31
35
|
matrix: ${{ fromJson(needs.prepare.outputs.matrix) }}
|
|
32
36
|
|
|
33
37
|
steps:
|
|
34
|
-
- uses: actions/checkout@
|
|
38
|
+
- uses: actions/checkout@v6
|
|
35
39
|
with:
|
|
36
40
|
repository: metanorma/metanorma
|
|
37
41
|
|
|
38
|
-
- uses: actions/checkout@
|
|
42
|
+
- uses: actions/checkout@v6
|
|
39
43
|
with:
|
|
40
44
|
path: "fontist"
|
|
41
45
|
|
|
@@ -48,6 +52,23 @@ jobs:
|
|
|
48
52
|
bundler: ${{ env.BUNDLER_VER }}
|
|
49
53
|
bundler-cache: true
|
|
50
54
|
|
|
51
|
-
- uses: metanorma/
|
|
55
|
+
- uses: metanorma/ci/inkscape-setup-action@main
|
|
56
|
+
|
|
57
|
+
- name: Configure Git credentials
|
|
58
|
+
env:
|
|
59
|
+
GIT_TOKEN: ${{ secrets.FONTIST_CI_PAT_TOKEN }}
|
|
60
|
+
run: |
|
|
61
|
+
git config --global user.name 'Fontist CI'
|
|
62
|
+
git config --global user.email 'fontist@ribose.com'
|
|
63
|
+
git config --global credential.helper store
|
|
64
|
+
echo "https://fontist-ci:${GIT_TOKEN}@github.com" > ~/.git-credentials
|
|
65
|
+
shell: bash
|
|
66
|
+
|
|
67
|
+
- run: |
|
|
68
|
+
bundle exec fontist update
|
|
69
|
+
bundle exec fontist repo setup metanorma https://github.com/metanorma/fontist-formulas-private.git
|
|
70
|
+
bundle exec fontist repo update metanorma
|
|
71
|
+
shell: bash
|
|
52
72
|
|
|
53
73
|
- run: bundle exec rake
|
|
74
|
+
shell: bash
|
data/.github/workflows/rake.yml
CHANGED
|
@@ -10,6 +10,9 @@ on:
|
|
|
10
10
|
paths-ignore:
|
|
11
11
|
- '**.adoc'
|
|
12
12
|
|
|
13
|
+
permissions:
|
|
14
|
+
contents: read
|
|
15
|
+
|
|
13
16
|
concurrency:
|
|
14
17
|
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
|
15
18
|
cancel-in-progress: true
|
|
@@ -45,7 +48,7 @@ jobs:
|
|
|
45
48
|
run: |
|
|
46
49
|
git clone --branch v4 --depth 1 https://github.com/fontist/formulas.git C:\temp\fontist\versions\v4\formulas
|
|
47
50
|
shell: powershell
|
|
48
|
-
|
|
51
|
+
|
|
49
52
|
- uses: actions/checkout@v4
|
|
50
53
|
|
|
51
54
|
- uses: ruby/setup-ruby@v1
|
|
@@ -12,10 +12,16 @@ on:
|
|
|
12
12
|
repository_dispatch:
|
|
13
13
|
types: [ do-release ]
|
|
14
14
|
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
packages: write
|
|
18
|
+
id-token: write
|
|
19
|
+
|
|
15
20
|
jobs:
|
|
16
21
|
release:
|
|
17
22
|
permissions:
|
|
18
23
|
contents: write
|
|
24
|
+
packages: write
|
|
19
25
|
id-token: write
|
|
20
26
|
uses: fontist/support/.github/workflows/release.yml@main
|
|
21
27
|
with:
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
workflow_dispatch:
|
|
5
|
+
inputs:
|
|
6
|
+
next_version:
|
|
7
|
+
description: |
|
|
8
|
+
Next release version. Possible values: x.y.z, major, minor, patch (or pre|rc|etc).
|
|
9
|
+
Also, you can pass 'skip' to skip 'git tag' and do 'gem push' for the current version
|
|
10
|
+
required: true
|
|
11
|
+
default: 'skip'
|
|
12
|
+
repository_dispatch:
|
|
13
|
+
types: [ do-release ]
|
|
14
|
+
|
|
15
|
+
permissions:
|
|
16
|
+
contents: read
|
|
17
|
+
<<<<<<< HEAD
|
|
18
|
+
=======
|
|
19
|
+
packages: write
|
|
20
|
+
<<<<<<< Updated upstream
|
|
21
|
+
=======
|
|
22
|
+
id-token: write
|
|
23
|
+
>>>>>>> Stashed changes
|
|
24
|
+
>>>>>>> 35f3c7d (fix: release gha)
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
release:
|
|
28
|
+
permissions:
|
|
29
|
+
contents: write
|
|
30
|
+
packages: write
|
|
31
|
+
id-token: write
|
|
32
|
+
uses: fontist/support/.github/workflows/release.yml@main
|
|
33
|
+
with:
|
|
34
|
+
next_version: ${{ github.event.inputs.next_version }}
|
|
35
|
+
secrets:
|
|
36
|
+
rubygems-api-key: ${{ secrets.FONTIST_CI_RUBYGEMS_API_KEY }}
|
data/.gitignore
CHANGED
|
@@ -9,12 +9,13 @@
|
|
|
9
9
|
Gemfile.lock
|
|
10
10
|
|
|
11
11
|
# fonts
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
/spec/fixtures/fonts/*
|
|
13
|
+
/spec/fixtures/fonts/DejaVuSerif.ttf
|
|
14
|
+
/spec/fixtures/fonts/Rupali.ttf
|
|
15
|
+
/spec/fixtures/formulas/
|
|
16
|
+
/spec/fixtures/*
|
|
17
|
+
!/spec/fixtures/system.yml
|
|
18
|
+
!/spec/fixtures/fonts/corrupt/*
|
|
18
19
|
|
|
19
20
|
# rspec failure tracking
|
|
20
21
|
.rspec_status
|
data/README.adoc
CHANGED
|
@@ -69,6 +69,106 @@ legacy `ttfunk` and `extract_ttc` gems), and `marcel` for MIME type detection
|
|
|
69
69
|
(replacing `mime-types`). These changes improve cross-platform compatibility
|
|
70
70
|
and eliminate external binary dependencies.
|
|
71
71
|
|
|
72
|
+
=== Prerequisites
|
|
73
|
+
|
|
74
|
+
Some of Fontist's dependencies require native compilation during installation.
|
|
75
|
+
The following build tools are required depending on your platform.
|
|
76
|
+
|
|
77
|
+
==== Ubuntu/Debian
|
|
78
|
+
|
|
79
|
+
[source,sh]
|
|
80
|
+
----
|
|
81
|
+
sudo apt-get install build-essential ruby-dev git
|
|
82
|
+
----
|
|
83
|
+
|
|
84
|
+
* `build-essential` provides `gcc` and `g++` compilers needed for native gem extensions
|
|
85
|
+
* `ruby-dev` provides Ruby headers required for gem compilation
|
|
86
|
+
* `git` is required for `fontist update` and `fontist repo` commands
|
|
87
|
+
|
|
88
|
+
==== Fedora/RHEL/CentOS
|
|
89
|
+
|
|
90
|
+
[source,sh]
|
|
91
|
+
----
|
|
92
|
+
sudo dnf install gcc gcc-c++ make ruby-devel git
|
|
93
|
+
----
|
|
94
|
+
|
|
95
|
+
For RHEL/CentOS 7 or earlier, use `yum` instead of `dnf`.
|
|
96
|
+
|
|
97
|
+
==== macOS
|
|
98
|
+
|
|
99
|
+
[source,sh]
|
|
100
|
+
----
|
|
101
|
+
xcode-select --install
|
|
102
|
+
----
|
|
103
|
+
|
|
104
|
+
This installs the Xcode Command Line Tools which include:
|
|
105
|
+
|
|
106
|
+
* `clang` compiler (compatible with gcc/g++)
|
|
107
|
+
* `git` command-line tool
|
|
108
|
+
* Required headers and libraries for native gem compilation
|
|
109
|
+
|
|
110
|
+
==== Windows
|
|
111
|
+
|
|
112
|
+
1. Install Ruby using https://rubyinstaller.org/downloads/[RubyInstaller] *with DevKit*
|
|
113
|
+
(select the "Ruby+Devkit" version)
|
|
114
|
+
|
|
115
|
+
2. After installation, run the following in a command prompt to set up MSYS2:
|
|
116
|
+
+
|
|
117
|
+
[source,cmd]
|
|
118
|
+
----
|
|
119
|
+
ridk install
|
|
120
|
+
----
|
|
121
|
+
+
|
|
122
|
+
Select option 3 (MSYS2 and MINGW development toolchain) when prompted.
|
|
123
|
+
|
|
124
|
+
3. Install https://git-scm.com/download/win[Git for Windows]
|
|
125
|
+
|
|
126
|
+
==== Optional: Fontconfig (Linux)
|
|
127
|
+
|
|
128
|
+
On Linux systems, if you want to use `fontist fontconfig update` to make Fontist
|
|
129
|
+
fonts available to other applications, install fontconfig:
|
|
130
|
+
|
|
131
|
+
[source,sh]
|
|
132
|
+
----
|
|
133
|
+
# Ubuntu/Debian
|
|
134
|
+
sudo apt-get install fontconfig
|
|
135
|
+
|
|
136
|
+
# Fedora/RHEL/CentOS
|
|
137
|
+
sudo dnf install fontconfig
|
|
138
|
+
----
|
|
139
|
+
|
|
140
|
+
==== Why are build tools needed?
|
|
141
|
+
|
|
142
|
+
Fontist depends on several gems that include native C/C++ extensions:
|
|
143
|
+
|
|
144
|
+
[cols="1,1,2"]
|
|
145
|
+
|===
|
|
146
|
+
|Gem |Compiler |Purpose
|
|
147
|
+
|
|
148
|
+
|`json`
|
|
149
|
+
|gcc
|
|
150
|
+
|JSON processing
|
|
151
|
+
|
|
152
|
+
|`brotli` (via fontisan)
|
|
153
|
+
|gcc
|
|
154
|
+
|WOFF2 font decompression
|
|
155
|
+
|
|
156
|
+
|`seven-zip` (via excavate)
|
|
157
|
+
|g++
|
|
158
|
+
|7z archive extraction
|
|
159
|
+
|
|
160
|
+
|`libmspack` (via excavate)
|
|
161
|
+
|gcc
|
|
162
|
+
|CAB/CHM archive extraction
|
|
163
|
+
|
|
164
|
+
|`ffi-libarchive-binary` (via excavate)
|
|
165
|
+
|gcc
|
|
166
|
+
|Archive extraction (zip, tar, etc.)
|
|
167
|
+
|===
|
|
168
|
+
|
|
169
|
+
NOTE: Some gems like `nokogiri` and `ffi` provide prebuilt binaries for common
|
|
170
|
+
platforms, so they typically don't require compilation.
|
|
171
|
+
|
|
72
172
|
|
|
73
173
|
== Using the command-line interface (CLI)
|
|
74
174
|
|