mirror of
https://git.sr.ht/~rjarry/aerc
synced 2025-07-02 05:00:21 +02:00

Add `desc:""` struct field tags in all command arguments where it makes sense. The description values will be returned along with completion choices. Implements: https://todo.sr.ht/~rjarry/aerc/271 Signed-off-by: Robin Jarry <robin@jarry.cc> Tested-by: Bojan Gabric <bojan@bojangabric.com> Tested-by: Jason Cox <me@jasoncarloscox.com> Acked-by: Tim Culverhouse <tim@timculverhouse.com>
40 lines
648 B
Go
40 lines
648 B
Go
package commands
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"git.sr.ht/~rjarry/aerc/commands/mode"
|
|
)
|
|
|
|
type Quit struct {
|
|
Force bool `opt:"-f" desc:"Force quit even if a task is pending."`
|
|
}
|
|
|
|
func init() {
|
|
Register(Quit{})
|
|
}
|
|
|
|
func (Quit) Description() string {
|
|
return "Exit aerc."
|
|
}
|
|
|
|
func (Quit) Context() CommandContext {
|
|
return GLOBAL
|
|
}
|
|
|
|
func (Quit) Aliases() []string {
|
|
return []string{"quit", "q", "exit"}
|
|
}
|
|
|
|
type ErrorExit int
|
|
|
|
func (err ErrorExit) Error() string {
|
|
return "exit"
|
|
}
|
|
|
|
func (q Quit) Execute(args []string) error {
|
|
if q.Force || mode.QuitAllowed() {
|
|
return ErrorExit(1)
|
|
}
|
|
return fmt.Errorf("A task is not done yet. Use -f to force an exit.")
|
|
}
|