2 files changed,
30 insertions(+),
8 deletions(-)
Author:
Oleksandr Smirnov
olexsmir@gmail.com
Committed at:
2026-08-25 18:10:58 +0300
Authored at:
2026-08-25 17:13:35 +0300
Change ID:
vroqtmruylwyokwwrxkpnomnywwklmtn
Parent:
f1413a3
M
internal/plumbing/shell/shell.go
··· 16 16 17 17 type Tool struct{} 18 18 19 -func (Tool) Name() string { return "shell($, $$, kill, mkdir)" } 20 -func (Tool) Match(c *viye.Context) bool { return isCmd(c) || isBGCmd(c) || isKill(c) || isMkdir(c) } 19 +func (Tool) Name() string { return "shell($, $$, ls, kill, mkdir)" } 20 +func (Tool) Match(c *viye.Context) bool { 21 + return isCmd(c) || isBGCmd(c) || isLs(c) || isKill(c) || isMkdir(c) 22 +} 23 + 21 24 func (Tool) Execute(c *viye.Context) (string, error) { 22 25 switch { 23 26 case isCmd(c): ··· 43 46 } 44 47 return fmt.Sprintf("| pid: %d", cmd.Process.Pid), nil 45 48 49 + case isLs(c): 50 + entries, err := os.ReadDir(c.Dir) 51 + if err != nil { 52 + return "", err 53 + } 54 + var res []string 55 + for _, e := range entries { 56 + name := e.Name() 57 + if e.IsDir() { 58 + name += "/" 59 + } 60 + res = append(res, name) 61 + } 62 + return viye.FormatOutputList(res), nil 63 + 46 64 case isKill(c): 47 65 pid, err := strconv.Atoi(c.Args[0]) 48 66 if err != nil { ··· 71 89 72 90 func isCmd(c *viye.Context) bool { return c.Cmd == "$" } 73 91 func isBGCmd(c *viye.Context) bool { return c.Cmd == "$$" } 92 +func isLs(c *viye.Context) bool { return c.Cmd == "ls" } 74 93 func isKill(c *viye.Context) bool { return c.Cmd == "kill" && len(c.Args) == 1 } 75 94 func isMkdir(c *viye.Context) bool { return c.Cmd == "mkdir" && len(c.Args) >= 1 }
M
internal/viye/format.go
··· 2 2 3 3 import "strings" 4 4 5 -func FormatOutput(s string) string { 6 - s = strings.TrimSuffix(s, "\n") 7 - if s == "" { 8 - return "" 9 - } 10 - lines := strings.Split(s, "\n") 5 +func FormatOutputList(lines []string) string { 11 6 for i, line := range lines { 12 7 if line == "" { 13 8 lines[i] = "|" ··· 16 11 } 17 12 } 18 13 return strings.Join(lines, "\n") + "\n" 14 +} 15 + 16 +func FormatOutput(s string) string { 17 + s = strings.TrimSuffix(s, "\n") 18 + if s == "" { 19 + return "" 20 + } 21 + return FormatOutputList(strings.Split(s, "\n")) 19 22 } 20 23 21 24 func FormatBulletListString(s string) string {