diff options
Diffstat (limited to 'commands/msg/move.go')
-rw-r--r-- | commands/msg/move.go | 29 |
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() |