mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2025-02-02 05:41:10 -08:00
parent
b2f3a43d19
commit
cac268bcca
|
@ -29,7 +29,7 @@ type loadMsg []*Asset
|
||||||
|
|
||||||
type zipMsg []byte
|
type zipMsg []byte
|
||||||
|
|
||||||
type successMsg int
|
type successMsg []string
|
||||||
|
|
||||||
type errMsg error
|
type errMsg error
|
||||||
|
|
||||||
|
@ -69,12 +69,13 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
type main struct {
|
type main struct {
|
||||||
spinner spinner.Model
|
spinner spinner.Model
|
||||||
list *list.Model
|
list *list.Model
|
||||||
system bool
|
system bool
|
||||||
font string
|
font string
|
||||||
state state
|
state state
|
||||||
err error
|
err error
|
||||||
|
families []string
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *main) buildFontList(nerdFonts []*Asset) {
|
func (m *main) buildFontList(nerdFonts []*Asset) {
|
||||||
|
@ -124,12 +125,12 @@ func installLocalFontZIP(zipFile string, user bool) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func installFontZIP(zipFile []byte, user bool) {
|
func installFontZIP(zipFile []byte, user bool) {
|
||||||
err := InstallZIP(zipFile, user)
|
families, err := InstallZIP(zipFile, user)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
program.Send(errMsg(err))
|
program.Send(errMsg(err))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
program.Send(successMsg(0))
|
program.Send(successMsg(families))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (m *main) Init() tea.Cmd {
|
func (m *main) Init() tea.Cmd {
|
||||||
|
@ -216,6 +217,7 @@ func (m *main) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
||||||
|
|
||||||
case successMsg:
|
case successMsg:
|
||||||
m.state = done
|
m.state = done
|
||||||
|
m.families = msg
|
||||||
return m, tea.Quit
|
return m, tea.Quit
|
||||||
|
|
||||||
case errMsg:
|
case errMsg:
|
||||||
|
@ -251,7 +253,13 @@ func (m *main) View() string {
|
||||||
case quit:
|
case quit:
|
||||||
return textStyle.Render("No need to install a new font? That's cool.")
|
return textStyle.Render("No need to install a new font? That's cool.")
|
||||||
case done:
|
case done:
|
||||||
return textStyle.Render(fmt.Sprintf("Successfully installed %s 🚀", m.font))
|
var builder strings.Builder
|
||||||
|
builder.WriteString(fmt.Sprintf("Successfully installed %s 🚀\n\n", m.font))
|
||||||
|
builder.WriteString("The following font families are now available for configuration:\n")
|
||||||
|
for _, family := range m.families {
|
||||||
|
builder.WriteString(fmt.Sprintf(" • %s\n", family))
|
||||||
|
}
|
||||||
|
return textStyle.Render(builder.String())
|
||||||
}
|
}
|
||||||
return ""
|
return ""
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,12 +10,22 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
func InstallZIP(data []byte, user bool) error {
|
func contains[S ~[]E, E comparable](s S, e E) bool {
|
||||||
|
for _, a := range s {
|
||||||
|
if a == e {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func InstallZIP(data []byte, user bool) ([]string, error) {
|
||||||
|
var families []string
|
||||||
bytesReader := bytes.NewReader(data)
|
bytesReader := bytes.NewReader(data)
|
||||||
|
|
||||||
zipReader, err := zip.NewReader(bytesReader, int64(bytesReader.Len()))
|
zipReader, err := zip.NewReader(bytesReader, int64(bytesReader.Len()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return families, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fonts := make(map[string]*Font)
|
fonts := make(map[string]*Font)
|
||||||
|
@ -23,13 +33,13 @@ func InstallZIP(data []byte, user bool) error {
|
||||||
for _, zf := range zipReader.File {
|
for _, zf := range zipReader.File {
|
||||||
rc, err := zf.Open()
|
rc, err := zf.Open()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return families, err
|
||||||
}
|
}
|
||||||
defer rc.Close()
|
defer rc.Close()
|
||||||
|
|
||||||
data, err := io.ReadAll(rc)
|
data, err := io.ReadAll(rc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return families, err
|
||||||
}
|
}
|
||||||
|
|
||||||
fontData, err := newFont(zf.Name, data)
|
fontData, err := newFont(zf.Name, data)
|
||||||
|
@ -51,9 +61,13 @@ func InstallZIP(data []byte, user bool) error {
|
||||||
|
|
||||||
for _, font := range fonts {
|
for _, font := range fonts {
|
||||||
if err = install(font, user); err != nil {
|
if err = install(font, user); err != nil {
|
||||||
return err
|
return families, err
|
||||||
|
}
|
||||||
|
|
||||||
|
if !contains(families, font.Family) {
|
||||||
|
families = append(families, font.Family)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return families, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue