feat(filepicker): optional file permissions and file size

This commit is contained in:
Maas Lalani
2024-01-29 17:13:36 -05:00
parent 034ee8551e
commit 07e7bd4ee4
+28 -9
View File
@@ -5,6 +5,7 @@ import (
"os" "os"
"path/filepath" "path/filepath"
"sort" "sort"
"strconv"
"strings" "strings"
"sync" "sync"
@@ -35,6 +36,8 @@ func New() Model {
Cursor: ">", Cursor: ">",
AllowedTypes: []string{}, AllowedTypes: []string{},
selected: 0, selected: 0,
ShowPermissions: true,
ShowSize: true,
ShowHidden: false, ShowHidden: false,
DirAllowed: false, DirAllowed: false,
FileAllowed: true, FileAllowed: true,
@@ -145,11 +148,13 @@ type Model struct {
// If empty the user may select any file. // If empty the user may select any file.
AllowedTypes []string AllowedTypes []string
KeyMap KeyMap KeyMap KeyMap
files []os.DirEntry files []os.DirEntry
ShowHidden bool ShowPermissions bool
DirAllowed bool ShowSize bool
FileAllowed bool ShowHidden bool
DirAllowed bool
FileAllowed bool
FileSelected string FileSelected string
selected int selected int
@@ -382,9 +387,16 @@ func (m Model) View() string {
disabled := !m.canSelect(name) && !f.IsDir() disabled := !m.canSelect(name) && !f.IsDir()
if m.selected == i { if m.selected == i {
selected := fmt.Sprintf(" %s %"+fmt.Sprint(m.Styles.FileSize.GetWidth())+"s %s", info.Mode().String(), size, name) selected := ""
if m.ShowPermissions {
selected += " " + info.Mode().String()
}
if m.ShowSize {
selected += " " + fmt.Sprintf("%"+strconv.Itoa(m.Styles.FileSize.GetWidth())+"s", size)
}
selected += " " + name
if isSymlink { if isSymlink {
selected = fmt.Sprintf("%s → %s", selected, symlinkPath) selected += " → " + symlinkPath
} }
if disabled { if disabled {
s.WriteString(m.Styles.DisabledSelected.Render(m.Cursor) + m.Styles.DisabledSelected.Render(selected)) s.WriteString(m.Styles.DisabledSelected.Render(m.Cursor) + m.Styles.DisabledSelected.Render(selected))
@@ -405,10 +417,17 @@ func (m Model) View() string {
} }
fileName := style.Render(name) fileName := style.Render(name)
s.WriteString(m.Styles.Cursor.Render(" "))
if isSymlink { if isSymlink {
fileName = fmt.Sprintf("%s → %s", fileName, symlinkPath) fileName += " → " + symlinkPath
} }
s.WriteString(fmt.Sprintf(" %s %s %s", m.Styles.Permission.Render(info.Mode().String()), m.Styles.FileSize.Render(size), fileName)) if m.ShowPermissions {
s.WriteString(" " + m.Styles.Permission.Render(info.Mode().String()))
}
if m.ShowSize {
s.WriteString(" " + m.Styles.FileSize.Render(size))
}
s.WriteString(" " + fileName)
s.WriteRune('\n') s.WriteRune('\n')
} }