fontist 2.1.3 → 2.1.4

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.
Files changed (74) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/docs.yml +70 -0
  3. data/.github/workflows/links.yml +100 -0
  4. data/.gitignore +2 -1
  5. data/docs/.vitepress/config.ts +153 -32
  6. data/docs/.vitepress/data/cli-commands.json +461 -0
  7. data/docs/.vitepress/data/exit-codes.json +21 -0
  8. data/docs/.vitepress/data/features.json +44 -0
  9. data/docs/.vitepress/theme/components/HeroCodeBlock.vue +98 -0
  10. data/docs/.vitepress/theme/components/WithinHero.vue +30 -0
  11. data/docs/.vitepress/theme/index.ts +12 -0
  12. data/docs/.vitepress/theme/style.css +152 -0
  13. data/docs/api/errors.md +211 -0
  14. data/docs/api/font.md +101 -0
  15. data/docs/api/fontconfig.md +82 -0
  16. data/docs/api/formula.md +103 -0
  17. data/docs/api/index.md +49 -0
  18. data/docs/api/manifest.md +209 -0
  19. data/docs/cli/cache.md +100 -0
  20. data/docs/cli/config.md +123 -0
  21. data/docs/cli/create-formula.md +65 -0
  22. data/docs/cli/exit-codes.md +73 -0
  23. data/docs/cli/fontconfig.md +85 -0
  24. data/docs/cli/import.md +136 -0
  25. data/docs/cli/index-cmd.md +37 -0
  26. data/docs/cli/index.md +80 -0
  27. data/docs/cli/install.md +52 -0
  28. data/docs/cli/list.md +39 -0
  29. data/docs/cli/manifest.md +110 -0
  30. data/docs/cli/repo.md +142 -0
  31. data/docs/cli/status.md +39 -0
  32. data/docs/cli/uninstall.md +34 -0
  33. data/docs/cli/update.md +31 -0
  34. data/docs/cli/version.md +38 -0
  35. data/docs/components/CliCommand.vue +77 -0
  36. data/docs/components/CliExamples.vue +17 -0
  37. data/docs/components/CliOptions.vue +26 -0
  38. data/docs/components/ExitCodes.vue +18 -0
  39. data/docs/guide/ci.md +4 -0
  40. data/docs/guide/concepts/fonts.md +158 -0
  41. data/docs/guide/concepts/formats.md +234 -0
  42. data/docs/guide/concepts/index.md +109 -0
  43. data/docs/guide/concepts/licenses.md +236 -0
  44. data/docs/guide/concepts/requirements.md +388 -0
  45. data/docs/guide/concepts/variable-fonts.md +212 -0
  46. data/docs/guide/formulas.md +192 -0
  47. data/docs/guide/how-it-works.md +428 -0
  48. data/docs/guide/index.md +26 -47
  49. data/docs/guide/installation.md +105 -0
  50. data/docs/guide/manifests.md +132 -0
  51. data/docs/guide/quick-start.md +76 -0
  52. data/docs/guide/why.md +4 -0
  53. data/docs/index.md +55 -23
  54. data/docs/lychee.toml +33 -0
  55. data/docs/package-lock.json +9 -114
  56. data/docs/package.json +3 -5
  57. data/docs/public/apple-touch-icon.png +0 -0
  58. data/docs/public/favicon-96x96.png +0 -0
  59. data/docs/public/favicon.ico +0 -0
  60. data/docs/public/favicon.svg +1 -0
  61. data/docs/public/logo-full.svg +1 -0
  62. data/docs/public/logo.svg +1 -0
  63. data/docs/public/site.webmanifest +21 -0
  64. data/docs/public/web-app-manifest-192x192.png +0 -0
  65. data/docs/public/web-app-manifest-512x512.png +0 -0
  66. data/lib/fontist/cli.rb +0 -1
  67. data/lib/fontist/version.rb +1 -1
  68. metadata +58 -8
  69. data/.github/workflows/deploy-pages.yml +0 -54
  70. data/.github/workflows/release.yml.orig +0 -36
  71. data/docs/guide/api-ruby.md +0 -189
  72. data/docs/public/hero.png +0 -0
  73. data/docs/public/logo.png +0 -0
  74. data/docs/reference/index.md +0 -143
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b50fa7f2d919278a80d47cc5c35942960903a5ed586fc37c0cf21b944a76df1e
4
- data.tar.gz: cc98d5a18b0e00e62a8ca5f41bd54645e3cf2e92f600d4a91c7ceb79c3110bf5
3
+ metadata.gz: 53b62fd1983ad3739ec4869071a9a3517ead3f581f0cbc04987bd5cc8ac6bdbf
4
+ data.tar.gz: ce3a64130bfcb4310f3adeeb79c8a62cfe3412f20c1cacb6c68482b11ad60ef6
5
5
  SHA512:
6
- metadata.gz: a641b85c69158cbc1430407d0c72c5a480f96b6e77a500834691a579591d1d448c522fa65307c28597b5082bec3a4a6d83913a09dc7066eb533732b9f7dfa8fe
7
- data.tar.gz: ac31ba8b42034ec098178b6db77f3d35325d81455b0c98d979ec98975ed2d93cf80a40dbb6e7f3f721e8ddd9925ca4ed9b2c9088b06eb88cb27585687ff06dc8
6
+ metadata.gz: 36addd8934bcbd3a128c6850921cd66739e992ecaae65464c01457509f7b68c410a83a55efbf5698f0ae88b789f9d620ffb17751effcea718b2f876b4531c99d
7
+ data.tar.gz: 27f7c34fdfbd88460a95d0b3bdb03c34fc1aa4cdbcd2cd835d520e6363b288e5fd5a8417b69227c34fd3bf45f78c86b8b0fd2cf139e13931bfcced52271941f4
@@ -0,0 +1,70 @@
1
+ name: Documentation
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'docs/**'
9
+ - '.github/workflows/docs.yml'
10
+ pull_request:
11
+ paths:
12
+ - 'docs/**'
13
+ workflow_dispatch:
14
+
15
+ # Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16
+ permissions:
17
+ contents: read
18
+ pages: write
19
+ id-token: write
20
+
21
+ # Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
22
+ # However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
23
+ concurrency:
24
+ group: ${{ github.workflow }}-${{ github.ref }}
25
+ cancel-in-progress: false
26
+
27
+ jobs:
28
+ build:
29
+ runs-on: ubuntu-latest
30
+ steps:
31
+ - name: Checkout
32
+ uses: actions/checkout@v6
33
+
34
+ - name: Setup Pages
35
+ id: pages
36
+ uses: actions/configure-pages@v5
37
+
38
+ - name: Setup Node
39
+ uses: actions/setup-node@v6
40
+ with:
41
+ node-version: 24
42
+ cache: 'npm'
43
+ cache-dependency-path: docs/package-lock.json
44
+
45
+ - name: Install dependencies
46
+ run: npm ci
47
+ working-directory: docs
48
+
49
+ - name: Build
50
+ run: npm run build
51
+ working-directory: docs
52
+
53
+ - name: Upload artifact
54
+ uses: actions/upload-pages-artifact@v4
55
+ with:
56
+ path: docs/.vitepress/dist
57
+
58
+ # Deployment job
59
+ deploy:
60
+ environment:
61
+ name: github-pages
62
+ url: ${{ steps.deployment.outputs.page_url }}
63
+ if: github.ref_name == github.event.repository.default_branch
64
+ runs-on: ubuntu-latest
65
+ needs: build
66
+ steps:
67
+ - name: Deploy to GitHub Pages
68
+ id: deployment
69
+ uses: actions/deploy-pages@v4
70
+
@@ -0,0 +1,100 @@
1
+ name: Link Checker
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ paths:
8
+ - 'docs/**'
9
+ pull_request:
10
+ paths:
11
+ - 'docs/**'
12
+ schedule:
13
+ # Run weekly on Sunday at 00:00 UTC
14
+ - cron: '0 0 * * 0'
15
+ workflow_dispatch:
16
+
17
+ permissions:
18
+ contents: read
19
+ pull-requests: write
20
+
21
+ jobs:
22
+ link_checker:
23
+ runs-on: ubuntu-latest
24
+ steps:
25
+ - uses: actions/checkout@v6
26
+
27
+ - name: Setup Node
28
+ uses: actions/setup-node@v6
29
+ with:
30
+ node-version: 24
31
+ cache: 'npm'
32
+ cache-dependency-path: docs/package-lock.json
33
+
34
+ - name: Install dependencies
35
+ run: npm ci
36
+ working-directory: docs
37
+
38
+ - name: Build
39
+ run: npm run build
40
+ working-directory: docs
41
+
42
+ - name: Restore lychee cache
43
+ uses: actions/cache@v4
44
+ with:
45
+ path: .lycheecache
46
+ key: cache-lychee-${{ github.sha }}
47
+ restore-keys: cache-lychee-
48
+
49
+ - name: Check if site was built
50
+ run: |
51
+ if [ ! -d "dist" ]; then
52
+ echo "Error: dist directory not created"
53
+ exit 1
54
+ fi
55
+ echo "Site built successfully"
56
+ ls -la dist/
57
+ working-directory: docs/.vitepress
58
+
59
+ - name: Link Checker
60
+ uses: lycheeverse/lychee-action@v2
61
+ with:
62
+ args: >-
63
+ --verbose
64
+ --no-progress
65
+ --config lychee.toml
66
+ --root-dir "$(pwd)/.vitepress/dist"
67
+ --base-url file://${{ github.workspace }}/docs/.vitepress/dist
68
+ '.vitepress/dist/**/*.html'
69
+ fail: true
70
+ output: link-check-results.md
71
+ format: markdown
72
+ workingDirectory: docs
73
+
74
+ - name: Upload link check results
75
+ if: always()
76
+ uses: actions/upload-artifact@v4
77
+ with:
78
+ name: link-check-results
79
+ path: link-check-results.md
80
+ retention-days: 30
81
+
82
+ - name: Comment PR with results
83
+ if: failure() && github.event_name == 'pull_request'
84
+ uses: actions/github-script@v7
85
+ with:
86
+ script: |
87
+ const fs = require('fs');
88
+ let comment = '## 🔗 Link Check Failed\n\n';
89
+
90
+ if (fs.existsSync('link-check-results.md')) {
91
+ const results = fs.readFileSync('link-check-results.md', 'utf8');
92
+ comment += '### Results\n\n' + results + '\n\n';
93
+ }
94
+
95
+ github.rest.issues.createComment({
96
+ issue_number: context.issue.number,
97
+ owner: context.repo.owner,
98
+ repo: context.repo.repo,
99
+ body: comment
100
+ });
data/.gitignore CHANGED
@@ -28,7 +28,8 @@ Gemfile.lock
28
28
  .kilocode
29
29
  .claude
30
30
  old-docs/
31
- .md
31
+ CLAUDE.md
32
32
 
33
33
  # macOS font catalogs (downloaded via rake task)
34
34
  /spec/fixtures/macos_catalogs/com_apple_MobileAsset_Font*.xml
35
+
@@ -1,7 +1,18 @@
1
1
  import { defineConfig } from "vitepress";
2
+ import { fileURLToPath, URL } from "node:url";
2
3
 
3
4
  // https://vitepress.dev/reference/site-config
4
5
  export default defineConfig({
6
+ // Register custom components
7
+ vite: {
8
+ resolve: {
9
+ alias: {
10
+ "@components": fileURLToPath(new URL("../components", import.meta.url)),
11
+ },
12
+ },
13
+ },
14
+ lang: "en-US",
15
+
5
16
  // https://vitepress.dev/guide/routing#generating-clean-url
6
17
  cleanUrls: true,
7
18
 
@@ -9,63 +20,173 @@ export default defineConfig({
9
20
  description:
10
21
  "Fontist brings cross-platform font management to the command line for Windows, Linux, and macOS. Free and open source.",
11
22
 
12
- // https://github.com/vuejs/vitepress/issues/3508
13
- base: process.env.BASE_PATH,
23
+ lastUpdated: true,
24
+
25
+ // Base path for deployment (e.g., /fontist/ for fontist.org/fontist/)
26
+ base: process.env.BASE_PATH || "/fontist/",
27
+
28
+ head: [
29
+ [
30
+ "link",
31
+ { rel: "icon", type: "image/png", href: "/favicon-96x96.png", sizes: "96x96" },
32
+ ],
33
+ ["link", { rel: "icon", type: "image/svg+xml", href: "/favicon.svg" }],
34
+ ["link", { rel: "shortcut icon", href: "/favicon.ico" }],
35
+ [
36
+ "link",
37
+ { rel: "apple-touch-icon", sizes: "180x180", href: "/apple-touch-icon.png" },
38
+ ],
39
+ ["link", { rel: "manifest", href: "/site.webmanifest" }],
40
+ ["meta", { property: "og:type", content: "website" }],
41
+ ["meta", { property: "og:title", content: "Fontist" }],
42
+ [
43
+ "meta",
44
+ {
45
+ property: "og:description",
46
+ content:
47
+ "Fontist brings cross-platform font management to the command line for Windows, Linux, and macOS.",
48
+ },
49
+ ],
50
+ ["meta", { property: "og:image", content: "/logo-full.svg" }],
51
+ ["meta", { name: "twitter:card", content: "summary_large_image" }],
52
+ ],
14
53
 
15
54
  // https://vitepress.dev/reference/default-theme-config
16
55
  themeConfig: {
17
- logo: "/logo.png",
56
+ logo: "/logo-full.svg",
57
+ siteTitle: false,
58
+
59
+ // Local search with MiniSearch
60
+ search: {
61
+ provider: "local",
62
+ options: {
63
+ detailedView: true,
64
+ miniSearch: {
65
+ searchOptions: {
66
+ fuzzy: 0.2,
67
+ prefix: true,
68
+ boost: { title: 4, text: 2, titles: 1 },
69
+ },
70
+ },
71
+ },
72
+ },
18
73
 
19
74
  nav: [
20
- { text: "Home", link: "/" },
75
+ { text: "← Fontist.org", link: "https://www.fontist.org" },
21
76
  { text: "Guide", link: "/guide/" },
22
- { text: "Reference", link: "/reference/" },
23
- {
24
- text: "Formulas",
25
- link: "https://fontist.org/formulas/",
26
- target: "_self",
27
- },
77
+ { text: "CLI", link: "/cli/" },
78
+ { text: "API", link: "/api/" },
79
+ { text: "Formulas", link: "https://www.fontist.org/formulas/", target: "_self" },
80
+ { text: "Fontisan", link: "https://www.fontist.org/fontisan/", target: "_self" },
28
81
  ],
29
82
 
30
83
  sidebar: {
31
84
  "/guide/": [
32
85
  {
33
- text: "Guide",
86
+ text: "Getting Started",
87
+ items: [
88
+ { text: "Introduction", link: "/guide/" },
89
+ { text: "Installation", link: "/guide/installation" },
90
+ { text: "Quick Start", link: "/guide/quick-start" },
91
+ ],
92
+ },
93
+ {
94
+ text: "Concepts",
34
95
  items: [
96
+ { text: "Overview", link: "/guide/concepts/" },
97
+ { text: "Fonts & Styles", link: "/guide/concepts/fonts" },
98
+ { text: "Variable Fonts", link: "/guide/concepts/variable-fonts" },
99
+ { text: "Formats & Containers", link: "/guide/concepts/formats" },
100
+ { text: "Licenses", link: "/guide/concepts/licenses" },
101
+ { text: "Requirements", link: "/guide/concepts/requirements" },
102
+ ],
103
+ },
104
+ {
105
+ text: "Learn More",
106
+ collapsed: true,
107
+ items: [
108
+ { text: "How Fontist Works", link: "/guide/how-it-works" },
35
109
  { text: "Why Fontist?", link: "/guide/why" },
36
- { text: "Getting started", link: "/guide/" },
37
- { text: "Using Fontist in CI", link: "/guide/ci" },
38
- { text: "Fontist with Fontconfig", link: "/guide/fontconfig" },
39
- { text: "Using Fontist with a proxy", link: "/guide/proxy" },
40
- {
41
- text: "Create a new Fontist Formula",
42
- link: "https://fontist.org/formulas/guide/create-formula",
43
- target: "_self",
44
- },
110
+ { text: "Manifests", link: "/guide/manifests" },
111
+ { text: "Formulas", link: "/guide/formulas" },
45
112
  ],
46
113
  },
47
114
  {
48
- text: "API",
115
+ text: "Guides",
116
+ collapsed: true,
49
117
  items: [
50
- { text: "Fontist Ruby library", link: "/guide/api-ruby" },
118
+ { text: "CI/CD Integration", link: "/guide/ci" },
119
+ { text: "Fontconfig", link: "/guide/fontconfig" },
120
+ { text: "Proxy Setup", link: "/guide/proxy" },
51
121
  {
52
- text: "Ruby API reference",
53
- link: "https://fontist.org/fontist/reference/api-ruby/",
122
+ text: "Create a Formula",
123
+ link: "https://www.fontist.org/formulas/guide/create-formula",
54
124
  target: "_self",
55
125
  },
56
126
  ],
57
127
  },
58
128
  ],
59
- "/reference/": [
129
+ "/cli/": [
130
+ {
131
+ text: "CLI Reference",
132
+ items: [
133
+ { text: "Overview", link: "/cli/" },
134
+ ],
135
+ },
136
+ {
137
+ text: "Core Commands",
138
+ items: [
139
+ { text: "install", link: "/cli/install" },
140
+ { text: "uninstall", link: "/cli/uninstall" },
141
+ { text: "list", link: "/cli/list" },
142
+ { text: "status", link: "/cli/status" },
143
+ { text: "update", link: "/cli/update" },
144
+ { text: "version", link: "/cli/version" },
145
+ ],
146
+ },
147
+ {
148
+ text: "Subcommands",
149
+ collapsed: true,
150
+ items: [
151
+ { text: "manifest", link: "/cli/manifest" },
152
+ { text: "cache", link: "/cli/cache" },
153
+ { text: "config", link: "/cli/config" },
154
+ { text: "repo", link: "/cli/repo" },
155
+ { text: "fontconfig", link: "/cli/fontconfig" },
156
+ { text: "import", link: "/cli/import" },
157
+ { text: "index", link: "/cli/index-cmd" },
158
+ { text: "create-formula", link: "/cli/create-formula" },
159
+ ],
160
+ },
60
161
  {
61
162
  text: "Reference",
163
+ collapsed: true,
62
164
  items: [
63
- { text: "Fontist CLI reference", link: "/reference/" },
64
- {
65
- text: "Ruby API reference",
66
- link: "https://fontist.org/fontist/reference/api-ruby/",
67
- target: "_self",
68
- },
165
+ { text: "Exit Codes", link: "/cli/exit-codes" },
166
+ ],
167
+ },
168
+ ],
169
+ "/api/": [
170
+ {
171
+ text: "API Reference",
172
+ items: [
173
+ { text: "Overview", link: "/api/" },
174
+ ],
175
+ },
176
+ {
177
+ text: "Classes",
178
+ items: [
179
+ { text: "Fontist::Font", link: "/api/font" },
180
+ { text: "Fontist::Formula", link: "/api/formula" },
181
+ { text: "Fontist::Manifest", link: "/api/manifest" },
182
+ { text: "Fontist::Fontconfig", link: "/api/fontconfig" },
183
+ ],
184
+ },
185
+ {
186
+ text: "Errors",
187
+ collapsed: true,
188
+ items: [
189
+ { text: "Fontist::Errors", link: "/api/errors" },
69
190
  ],
70
191
  },
71
192
  ],
@@ -77,7 +198,7 @@ export default defineConfig({
77
198
 
78
199
  footer: {
79
200
  message: `Fontist is <a href="https://open.ribose.com/">riboseopen</a>`,
80
- copyright: `Copyright &copy; 2023 Ribose Group Inc. All rights reserved.`,
201
+ copyright: `Copyright &copy; 2026 Ribose Group Inc. All rights reserved.`,
81
202
  },
82
203
  },
83
204
  });