{{- /* vim: set noexpandtab : */ -}} {{- /* vim: set tabstop=8 : */ -}} {{- /* vim: set shiftwidth=8 : */ -}} {{- /* vim: set softtabstop=8 : */ -}} /* This file is generated by the enbas-codegen DO NOT EDIT. */ {{ print "" }} package executor {{ print "" }} {{ print "" }} import "fmt" import "codeflow.dananglin.me.uk/apollo/enbas/internal/config" import "codeflow.dananglin.me.uk/apollo/enbas/internal/printer" {{ print "" }} {{ print "" }} 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 } {{ print "" }} {{ print "" }} func execute( command string, args []string, enbasPrinter *printer.Printer, enbasConfig *config.Config, configDir string, ) error { executorMap := map[string]Executor{ {{- range $name, $command := . -}} {{- $new_executor_function_name := capitalise $name | printf "New%sExecutor" -}} {{ print "" }} {{ printf "%q" $name }}: {{ $new_executor_function_name }}( {{- if $command.UsePrinter -}} {{ print "" }} enbasPrinter, {{- end -}} {{- if $command.UseConfig -}} {{ print "" }} enbasConfig, {{- end -}} {{- range $field := $command.AdditionalFields -}} {{ print "" }} {{ $field.Name }}, {{- end -}} {{ print "" }} ), {{- end -}} {{ print "" }} } 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 }