Fix: ls handle -la flags
This commit is contained in:
@@ -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,
|
||||||
|
|||||||
46
tools/fs.go
46
tools/fs.go
@@ -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 {
|
||||||
|
|||||||
Reference in New Issue
Block a user