aboutsummaryrefslogtreecommitdiff
path: root/commands/z.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/z.go')
-rw-r--r--commands/z.go23
1 files changed, 10 insertions, 13 deletions
diff --git a/commands/z.go b/commands/z.go
index ca982ba7..a0054faa 100644
--- a/commands/z.go
+++ b/commands/z.go
@@ -9,7 +9,9 @@ import (
"git.sr.ht/~rjarry/aerc/widgets"
)
-type Zoxide struct{}
+type Zoxide struct {
+ Target string `opt:"..." default:"~" metavar:"DIRECTORY|QUERY"`
+}
func ZoxideAdd(arg string) error {
zargs := []string{"add", arg}
@@ -42,15 +44,9 @@ func (Zoxide) Complete(aerc *widgets.Aerc, args []string) []string {
// Execute calls zoxide add and query and delegates actually changing the
// directory to ChangeDirectory
-func (Zoxide) Execute(aerc *widgets.Aerc, args []string) error {
- if len(args) < 1 {
- return errors.New("Usage: z [directory or zoxide query]")
- }
- target := strings.Join(args[1:], " ")
- switch target {
- case "":
- return ChangeDirectory{}.Execute(aerc, args)
- case "-":
+func (z Zoxide) Execute(aerc *widgets.Aerc, args []string) error {
+ switch z.Target {
+ case "-", "~":
if previousDir != "" {
err := ZoxideAdd(previousDir)
if err != nil {
@@ -59,7 +55,7 @@ func (Zoxide) Execute(aerc *widgets.Aerc, args []string) error {
}
return ChangeDirectory{}.Execute(aerc, args)
default:
- _, err := os.Stat(target)
+ _, err := os.Stat(z.Target)
if err != nil {
// not a file, assume zoxide query
res, err := ZoxideQuery(args)
@@ -70,11 +66,12 @@ func (Zoxide) Execute(aerc *widgets.Aerc, args []string) error {
if err != nil {
return err
}
- return ChangeDirectory{}.Execute(aerc, []string{"z", res})
+ cd := ChangeDirectory{Target: res}
+ return cd.Execute(aerc, []string{"cd", res})
}
} else {
- err := ZoxideAdd(target)
+ err := ZoxideAdd(z.Target)
if err != nil {
return err
}