Skip to content

Commit 8f89e96

Browse files
feat(font): add official Cascadia Code release
resolves #4936
1 parent 6a84d27 commit 8f89e96

File tree

2 files changed

+38
-8
lines changed

2 files changed

+38
-8
lines changed

src/font/cli.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,13 @@ func (m *main) buildFontList(nerdFonts []*Asset) {
9898
}
9999

100100
func getFontsList() {
101-
nerdFonts, err := Nerds()
101+
fonts, err := Fonts()
102102
if err != nil {
103103
program.Send(errMsg(err))
104104
return
105105
}
106-
program.Send(loadMsg(nerdFonts))
106+
107+
program.Send(loadMsg(fonts))
107108
}
108109

109110
func downloadFontZip(location string) {

src/font/nerd.go renamed to src/font/fonts.go

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ import (
44
"context"
55
"encoding/json"
66
"errors"
7+
"fmt"
78
"net/http"
9+
"sort"
810
"strings"
911
"time"
1012

@@ -23,30 +25,57 @@ type Asset struct {
2325

2426
func (a Asset) FilterValue() string { return a.Name }
2527

26-
func Nerds() ([]*Asset, error) {
28+
func Fonts() ([]*Asset, error) {
29+
assets, err := fetchFontAssets("ryanoasis/nerd-fonts")
30+
if err != nil {
31+
return nil, err
32+
}
33+
34+
cascadiaCode, err := fetchFontAssets("microsoft/cascadia-code")
35+
if err != nil {
36+
return assets, nil
37+
}
38+
39+
assets = append(assets, cascadiaCode...)
40+
sort.Slice(assets, func(i, j int) bool { return assets[i].Name < assets[j].Name })
41+
42+
return assets, nil
43+
}
44+
45+
func CascadiaCode() ([]*Asset, error) {
46+
return fetchFontAssets("microsoft/cascadia-code")
47+
}
48+
49+
func fetchFontAssets(repo string) ([]*Asset, error) {
2750
ctx, cancelF := context.WithTimeout(context.Background(), time.Second*time.Duration(20))
2851
defer cancelF()
29-
req, err := http.NewRequestWithContext(ctx, "GET", "https://api.github.com/repos/ryanoasis/nerd-fonts/releases/latest", nil)
52+
53+
repoURL := "https://api.github.com/repos/" + repo + "/releases/latest"
54+
req, err := http.NewRequestWithContext(ctx, "GET", repoURL, nil)
3055
if err != nil {
3156
return nil, err
3257
}
58+
3359
req.Header.Add("Accept", "application/vnd.github.v3+json")
3460
response, err := platform.Client.Do(req)
3561
if err != nil || response.StatusCode != http.StatusOK {
36-
return nil, errors.New("failed to get nerd fonts release")
62+
return nil, fmt.Errorf("failed to get %s release", repo)
3763
}
64+
3865
defer response.Body.Close()
3966
var release release
4067
err = json.NewDecoder(response.Body).Decode(&release)
4168
if err != nil {
4269
return nil, errors.New("failed to parse nerd fonts release")
4370
}
44-
var nerdFonts []*Asset
71+
72+
var fonts []*Asset
4573
for _, asset := range release.Assets {
4674
if asset.State == "uploaded" && strings.HasSuffix(asset.Name, ".zip") {
4775
asset.Name = strings.TrimSuffix(asset.Name, ".zip")
48-
nerdFonts = append(nerdFonts, asset)
76+
fonts = append(fonts, asset)
4977
}
5078
}
51-
return nerdFonts, nil
79+
80+
return fonts, nil
5281
}

0 commit comments

Comments
 (0)