Fix: ls handle -la flags

This commit is contained in:
Grail Finder
2026-04-08 12:15:44 +03:00
parent 9ff4a465d9
commit 77506950e4
2 changed files with 46 additions and 9 deletions

View File

@@ -88,6 +88,15 @@ func LoadConfig(fn string) (*Config, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
// Default FilePickerDir to current working directory if not set
if config.FilePickerDir == "" {
cwd, err := os.Getwd()
if err != nil {
config.FilePickerDir = "."
} else {
config.FilePickerDir = cwd
}
}
config.CurrentAPI = config.ChatAPI config.CurrentAPI = config.ChatAPI
config.APIMap = map[string]string{ config.APIMap = map[string]string{
config.ChatAPI: config.CompletionAPI, config.ChatAPI: config.CompletionAPI,

View File

@@ -93,9 +93,23 @@ func IsImageFile(path string) bool {
} }
func FsLs(args []string, stdin string) string { func FsLs(args []string, stdin string) string {
showAll := false
longFormat := false
dir := "" dir := ""
if len(args) > 0 { for _, a := range args {
dir = args[0] if strings.HasPrefix(a, "-") && !strings.HasPrefix(a, "--") {
flags := strings.TrimLeft(a, "-")
for _, c := range flags {
switch c {
case 'a':
showAll = true
case 'l':
longFormat = true
}
}
} else if a != "" && dir == "" {
dir = a
}
} }
abs, err := resolvePath(dir) abs, err := resolvePath(dir)
if err != nil { if err != nil {
@@ -106,15 +120,29 @@ func FsLs(args []string, stdin string) string {
return fmt.Sprintf("[error] ls: %v", err) return fmt.Sprintf("[error] ls: %v", err)
} }
var out strings.Builder var out strings.Builder
filter := func(name string) bool {
return showAll || !strings.HasPrefix(name, ".")
}
for _, e := range entries { for _, e := range entries {
name := e.Name()
if !filter(name) {
continue
}
info, _ := e.Info() info, _ := e.Info()
switch { if longFormat {
case e.IsDir(): if e.IsDir() {
fmt.Fprintf(&out, "d %-8s %s/\n", "-", e.Name()) fmt.Fprintf(&out, "d %-8s %s/\n", "-", name)
case info != nil: } else if info != nil {
fmt.Fprintf(&out, "f %-8s %s\n", humanSize(info.Size()), e.Name()) fmt.Fprintf(&out, "f %-8s %s\n", humanSize(info.Size()), name)
default: } else {
fmt.Fprintf(&out, "f %-8s %s\n", "?", e.Name()) fmt.Fprintf(&out, "f %-8s %s\n", "?", name)
}
} else {
if e.IsDir() {
fmt.Fprintf(&out, "%s/\n", name)
} else {
fmt.Fprintf(&out, "%s\n", name)
}
} }
} }
if out.Len() == 0 { if out.Len() == 0 {