enbas/internal/executor/execute.go

161 lines
2.8 KiB
Go
Raw Normal View History

/*
This file is generated by the enbas-codegen
DO NOT EDIT.
*/
package executor
import (
"fmt"
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
)
func Execute(
command string,
args []string,
noColor bool,
configDir string,
) error {
var (
enbasConfig *config.Config
enbasPrinter *printer.Printer
err error
)
switch command {
case "init", "version":
enbasPrinter = printer.NewPrinter(noColor, "", 0)
default:
enbasConfig, err = config.NewConfigFromFile(configDir)
if err != nil {
enbasPrinter = printer.NewPrinter(noColor, "", 0)
enbasPrinter.PrintFailure("unable to load the configuration: " + err.Error() + ".")
return err
}
enbasPrinter = printer.NewPrinter(
noColor,
enbasConfig.Integrations.Pager,
enbasConfig.LineWrapMaxWidth,
)
}
if err = execute(
command,
args,
enbasPrinter,
enbasConfig,
configDir,
); err != nil {
enbasPrinter.PrintFailure("(" + command + ") " + err.Error() + ".")
return err
}
return nil
}
func execute(
command string,
args []string,
enbasPrinter *printer.Printer,
enbasConfig *config.Config,
configDir string,
) error {
executorMap := map[string]Executor{
"accept": NewAcceptExecutor(
enbasPrinter,
enbasConfig,
),
"add": NewAddExecutor(
enbasPrinter,
enbasConfig,
),
"block": NewBlockExecutor(
enbasPrinter,
enbasConfig,
),
"create": NewCreateExecutor(
enbasPrinter,
enbasConfig,
),
"delete": NewDeleteExecutor(
enbasPrinter,
enbasConfig,
),
"edit": NewEditExecutor(
enbasPrinter,
enbasConfig,
),
"follow": NewFollowExecutor(
enbasPrinter,
enbasConfig,
),
"init": NewInitExecutor(
enbasPrinter,
configDir,
),
"login": NewLoginExecutor(
enbasPrinter,
enbasConfig,
),
"mute": NewMuteExecutor(
enbasPrinter,
enbasConfig,
),
"reject": NewRejectExecutor(
enbasPrinter,
enbasConfig,
),
"remove": NewRemoveExecutor(
enbasPrinter,
enbasConfig,
),
"show": NewShowExecutor(
enbasPrinter,
enbasConfig,
),
"switch": NewSwitchExecutor(
enbasPrinter,
enbasConfig,
),
"unblock": NewUnblockExecutor(
enbasPrinter,
enbasConfig,
),
"unfollow": NewUnfollowExecutor(
enbasPrinter,
enbasConfig,
),
"unmute": NewUnmuteExecutor(
enbasPrinter,
enbasConfig,
),
"version": NewVersionExecutor(
enbasPrinter,
),
"whoami": NewWhoamiExecutor(
enbasPrinter,
enbasConfig,
),
}
exe, ok := executorMap[command]
if !ok {
return UnknownCommandError{Command: command}
}
if err := exe.Parse(args); err != nil {
return fmt.Errorf("flag parsing error: %w", err)
}
if err := exe.Execute(); err != nil {
return fmt.Errorf("execution error: %w", err)
}
return nil
}