Skip to content

Commit 07e7bd4

Browse files
committed
feat(filepicker): optional file permissions and file size
1 parent 034ee85 commit 07e7bd4

File tree

1 file changed

+28
-9
lines changed

1 file changed

+28
-9
lines changed

filepicker/filepicker.go

Lines changed: 28 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"os"
66
"path/filepath"
77
"sort"
8+
"strconv"
89
"strings"
910
"sync"
1011

@@ -35,6 +36,8 @@ func New() Model {
3536
Cursor: ">",
3637
AllowedTypes: []string{},
3738
selected: 0,
39+
ShowPermissions: true,
40+
ShowSize: true,
3841
ShowHidden: false,
3942
DirAllowed: false,
4043
FileAllowed: true,
@@ -145,11 +148,13 @@ type Model struct {
145148
// If empty the user may select any file.
146149
AllowedTypes []string
147150

148-
KeyMap KeyMap
149-
files []os.DirEntry
150-
ShowHidden bool
151-
DirAllowed bool
152-
FileAllowed bool
151+
KeyMap KeyMap
152+
files []os.DirEntry
153+
ShowPermissions bool
154+
ShowSize bool
155+
ShowHidden bool
156+
DirAllowed bool
157+
FileAllowed bool
153158

154159
FileSelected string
155160
selected int
@@ -382,9 +387,16 @@ func (m Model) View() string {
382387
disabled := !m.canSelect(name) && !f.IsDir()
383388

384389
if m.selected == i {
385-
selected := fmt.Sprintf(" %s %"+fmt.Sprint(m.Styles.FileSize.GetWidth())+"s %s", info.Mode().String(), size, name)
390+
selected := ""
391+
if m.ShowPermissions {
392+
selected += " " + info.Mode().String()
393+
}
394+
if m.ShowSize {
395+
selected += " " + fmt.Sprintf("%"+strconv.Itoa(m.Styles.FileSize.GetWidth())+"s", size)
396+
}
397+
selected += " " + name
386398
if isSymlink {
387-
selected = fmt.Sprintf("%s%s", selected, symlinkPath)
399+
selected += "" + symlinkPath
388400
}
389401
if disabled {
390402
s.WriteString(m.Styles.DisabledSelected.Render(m.Cursor) + m.Styles.DisabledSelected.Render(selected))
@@ -405,10 +417,17 @@ func (m Model) View() string {
405417
}
406418

407419
fileName := style.Render(name)
420+
s.WriteString(m.Styles.Cursor.Render(" "))
408421
if isSymlink {
409-
fileName = fmt.Sprintf("%s → %s", fileName, symlinkPath)
422+
fileName += " → " + symlinkPath
423+
}
424+
if m.ShowPermissions {
425+
s.WriteString(" " + m.Styles.Permission.Render(info.Mode().String()))
426+
}
427+
if m.ShowSize {
428+
s.WriteString(" " + m.Styles.FileSize.Render(size))
410429
}
411-
s.WriteString(fmt.Sprintf(" %s %s %s", m.Styles.Permission.Render(info.Mode().String()), m.Styles.FileSize.Render(size), fileName))
430+
s.WriteString(" " + fileName)
412431
s.WriteRune('\n')
413432
}
414433

0 commit comments

Comments
 (0)