all repos — mx @ 12fc7b4d3cf1c04ee2075775a683b7bc6227ee1f

work in progress MUA

commands/commands.go (view raw)

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
package commands

import (
	"fmt"
)

type Command interface {
	Aliases() []string
	Execute(cmd string) error
}

var Commands = make(map[string]Command)

func Register(cmd Command) {
	for _, alias := range cmd.Aliases() {
		Commands[alias] = cmd
	}
}

func ProcessCommands(cmd string) {
	for k, v := range Commands {
		if cmd == k {
			err := v.Execute(cmd)
			if err != nil {
				fmt.Errorf("error: executing %s failed: %+v\n", cmd, err)
			}
		}
	}
}