diff options
Diffstat (limited to 'commands')
-rw-r--r-- | commands/patch/remove.go | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/commands/patch/remove.go b/commands/patch/remove.go new file mode 100644 index 00000000..6697177b --- /dev/null +++ b/commands/patch/remove.go @@ -0,0 +1,43 @@ +package patch + +import ( + "fmt" + "time" + + "git.sr.ht/~rjarry/aerc/app" + "git.sr.ht/~rjarry/aerc/commands" + "git.sr.ht/~rjarry/aerc/lib/pama" + "git.sr.ht/~rjarry/aerc/log" +) + +type Remove struct { + Tag string `opt:"tag" complete:"CompleteTag"` +} + +func init() { + register(Remove{}) +} + +func (Remove) Aliases() []string { + return []string{"remove"} +} + +func (*Remove) CompleteTag(arg string) []string { + patches, err := pama.New().CurrentPatches() + if err != nil { + log.Errorf("failed to get current patches: %v", err) + return nil + } + return commands.FilterList(patches, arg, nil) +} + +func (r Remove) Execute(args []string) error { + patch := r.Tag + err := pama.New().RemovePatch(patch) + if err != nil { + return err + } + app.PushStatus(fmt.Sprintf("Patch %s has been removed", patch), + 10*time.Second) + return nil +} |