aboutsummaryrefslogtreecommitdiff
path: root/commands/msg/move.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/msg/move.go')
-rw-r--r--commands/msg/move.go29
1 files changed, 7 insertions, 22 deletions
diff --git a/commands/msg/move.go b/commands/msg/move.go
index e8661a61..c5f58b40 100644
--- a/commands/msg/move.go
+++ b/commands/msg/move.go
@@ -1,8 +1,6 @@
package msg
import (
- "errors"
- "strings"
"time"
"git.sr.ht/~rjarry/aerc/commands"
@@ -12,10 +10,12 @@ import (
"git.sr.ht/~rjarry/aerc/models"
"git.sr.ht/~rjarry/aerc/widgets"
"git.sr.ht/~rjarry/aerc/worker/types"
- "git.sr.ht/~sircmpwn/getopt"
)
-type Move struct{}
+type Move struct {
+ CreateFolders bool `opt:"-p"`
+ Folder string `opt:"..." metavar:"FOLDER"`
+}
func init() {
register(Move{})
@@ -29,21 +29,7 @@ func (Move) Complete(aerc *widgets.Aerc, args []string) []string {
return commands.GetFolders(aerc, args)
}
-func (Move) Execute(aerc *widgets.Aerc, args []string) error {
- if len(args) == 1 {
- return errors.New("Usage: mv [-p] <folder>")
- }
- opts, optind, err := getopt.Getopts(args, "p")
- if err != nil {
- return err
- }
- var createParents bool
- for _, opt := range opts {
- if opt.Option == 'p' {
- createParents = true
- }
- }
-
+func (m Move) Execute(aerc *widgets.Aerc, args []string) error {
h := newHelper(aerc)
acct, err := h.account()
if err != nil {
@@ -64,14 +50,13 @@ func (Move) Execute(aerc *widgets.Aerc, args []string) error {
marker := store.Marker()
marker.ClearVisualMark()
next := findNextNonDeleted(uids, store)
- joinedArgs := strings.Join(args[optind:], " ")
- store.Move(uids, joinedArgs, createParents, func(
+ store.Move(uids, m.Folder, m.CreateFolders, func(
msg types.WorkerMessage,
) {
switch msg := msg.(type) {
case *types.Done:
- handleDone(aerc, acct, next, "Messages moved to "+joinedArgs, store)
+ handleDone(aerc, acct, next, "Messages moved to "+m.Folder, store)
case *types.Error:
aerc.PushError(msg.Error.Error())
marker.Remark()