aboutsummaryrefslogtreecommitdiff
path: root/commands/commands.go
diff options
context:
space:
mode:
Diffstat (limited to 'commands/commands.go')
-rw-r--r--commands/commands.go28
1 files changed, 28 insertions, 0 deletions
diff --git a/commands/commands.go b/commands/commands.go
new file mode 100644
index 0000000..71dabe4
--- /dev/null
+++ b/commands/commands.go
@@ -0,0 +1,28 @@
+package commands
+
+import (
+ "errors"
+
+ "git.sr.ht/~sircmpwn/aerc2/widgets"
+)
+
+type AercCommand func(aerc *widgets.Aerc, cmd string) error
+
+var (
+ commands map[string]AercCommand
+)
+
+func init() {
+ commands = make(map[string]AercCommand)
+}
+
+func Register(name string, cmd AercCommand) {
+ commands[name] = cmd
+}
+
+func ExecuteCommand(aerc *widgets.Aerc, cmd string) error {
+ if fn, ok := commands[cmd]; ok {
+ return fn(aerc, cmd)
+ }
+ return errors.New("Unknown command " + cmd)
+}