/* This file is generated by the enbas-codegen DO NOT EDIT. */ package executor import ( "flag" "fmt" "os" "codeflow.dananglin.me.uk/apollo/enbas/internal/config" internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag" "codeflow.dananglin.me.uk/apollo/enbas/internal/printer" "codeflow.dananglin.me.uk/apollo/enbas/internal/usage" ) func Execute() error { var ( configDir string noColorFlag internalFlag.BoolPtrValue noColor bool enbasConfig *config.Config enbasPrinter *printer.Printer err error ) flag.StringVar(&configDir, "config-dir", "", "The path to your configuration directory") flag.Var(&noColorFlag, "no-color", "Set to true to disable ANSI colour output when displaying text on screen") flag.Usage = usage.AppUsageFunc() flag.Parse() if flag.NArg() < 1 { flag.Usage() return nil } if noColorFlag.Value != nil { noColor = *noColorFlag.Value } else if os.Getenv("NO_COLOR") != "" { noColor = true } command := flag.Arg(0) args := flag.Args()[1:] 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 }