diff options
author | Koni Marti <koni.marti@gmail.com> | 2024-01-31 17:23:00 +0100 |
---|---|---|
committer | Robin Jarry <robin@jarry.cc> | 2024-01-31 21:57:28 +0100 |
commit | 4cc2e6be3a010ecfba314909ce9b594f04e1be0e (patch) | |
tree | e22c025e90e79dbe21843bb5e5a2ccbfaab5ae31 /commands/patch/unlink.go | |
parent | 29ee43aceb7cdd5e28c71c133c9c97ec1f98f8a6 (diff) | |
download | aerc-4cc2e6be3a010ecfba314909ce9b594f04e1be0e.tar.gz |
commands: rename patch delete to patch unlink
Rename the command :patch delete to :patch unlink. This expresses the
"link" between the project data within aerc and the underlying
repository better. :patch unlink does not delete anything in the
repository, it only removes the metadata about currently applied patch
revisions/tags.
Signed-off-by: Koni Marti <koni.marti@gmail.com>
Acked-by: Robin Jarry <robin@jarry.cc>
Diffstat (limited to 'commands/patch/unlink.go')
-rw-r--r-- | commands/patch/unlink.go | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/commands/patch/unlink.go b/commands/patch/unlink.go new file mode 100644 index 00000000..4a78281e --- /dev/null +++ b/commands/patch/unlink.go @@ -0,0 +1,58 @@ +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 Unlink struct { + Tag string `opt:"tag" required:"false" complete:"Complete"` +} + +func init() { + register(Unlink{}) +} + +func (Unlink) Context() commands.CommandContext { + return commands.GLOBAL +} + +func (Unlink) Aliases() []string { + return []string{"unlink"} +} + +func (*Unlink) Complete(arg string) []string { + names, err := pama.New().Names() + if err != nil { + log.Errorf("failed to get completion: %v", err) + return nil + } + return commands.FilterList(names, arg, nil) +} + +func (d Unlink) Execute(args []string) error { + m := pama.New() + + name := d.Tag + if name == "" { + p, err := m.CurrentProject() + if err != nil { + return err + } + name = p.Name + } + + err := m.Unlink(name) + if err != nil { + return err + } + + app.PushStatus(fmt.Sprintf("Project '%s' unlinked.", name), + 10*time.Second) + return nil +} |