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 successMsg int
|
||||
type successMsg []string
|
||||
|
||||
type errMsg error
|
||||
|
||||
|
@ -69,12 +69,13 @@ const (
|
|||
)
|
||||
|
||||
type main struct {
|
||||
spinner spinner.Model
|
||||
list *list.Model
|
||||
system bool
|
||||
font string
|
||||
state state
|
||||
err error
|
||||
spinner spinner.Model
|
||||
list *list.Model
|
||||
system bool
|
||||
font string
|
||||
state state
|
||||
err error
|
||||
families []string
|
||||
}
|
||||
|
||||
func (m *main) buildFontList(nerdFonts []*Asset) {
|
||||
|
@ -124,12 +125,12 @@ func installLocalFontZIP(zipFile string, user bool) {
|
|||
}
|
||||
|
||||
func installFontZIP(zipFile []byte, user bool) {
|
||||
err := InstallZIP(zipFile, user)
|
||||
families, err := InstallZIP(zipFile, user)
|
||||
if err != nil {
|
||||
program.Send(errMsg(err))
|
||||
return
|
||||
}
|
||||
program.Send(successMsg(0))
|
||||
program.Send(successMsg(families))
|
||||
}
|
||||
|
||||
func (m *main) Init() tea.Cmd {
|
||||
|
@ -216,6 +217,7 @@ func (m *main) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
|
|||
|
||||
case successMsg:
|
||||
m.state = done
|
||||
m.families = msg
|
||||
return m, tea.Quit
|
||||
|
||||
case errMsg:
|
||||
|
@ -251,7 +253,13 @@ func (m *main) View() string {
|
|||
case quit:
|
||||
return textStyle.Render("No need to install a new font? That's cool.")
|
||||
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 ""
|
||||
}
|
||||
|
|
|
@ -10,12 +10,22 @@ import (
|
|||
"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)
|
||||
|
||||
zipReader, err := zip.NewReader(bytesReader, int64(bytesReader.Len()))
|
||||
if err != nil {
|
||||
return err
|
||||
return families, err
|
||||
}
|
||||
|
||||
fonts := make(map[string]*Font)
|
||||
|
@ -23,13 +33,13 @@ func InstallZIP(data []byte, user bool) error {
|
|||
for _, zf := range zipReader.File {
|
||||
rc, err := zf.Open()
|
||||
if err != nil {
|
||||
return err
|
||||
return families, err
|
||||
}
|
||||
defer rc.Close()
|
||||
|
||||
data, err := io.ReadAll(rc)
|
||||
if err != nil {
|
||||
return err
|
||||
return families, err
|
||||
}
|
||||
|
||||
fontData, err := newFont(zf.Name, data)
|
||||
|
@ -51,9 +61,13 @@ func InstallZIP(data []byte, user bool) error {
|
|||
|
||||
for _, font := range fonts {
|
||||
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