package executor import ( "flag" "codeflow.dananglin.me.uk/apollo/enbas/internal/config" "codeflow.dananglin.me.uk/apollo/enbas/internal/printer" ) // InitExecutor is the executor for the init command. type InitExecutor struct { *flag.FlagSet printer *printer.Printer configDir string } func NewInitExecutor( printer *printer.Printer, configDir string, ) *InitExecutor { exe := InitExecutor{ FlagSet: flag.NewFlagSet("init", flag.ExitOnError), printer: printer, configDir: configDir, } exe.Usage = commandUsageFunc("init", "Creates a new configuration file in the specified configuration directory", exe.FlagSet) return &exe } // LoginExecutor is the executor for the login command. type LoginExecutor struct { *flag.FlagSet printer *printer.Printer config *config.Config instance string } func NewLoginExecutor( printer *printer.Printer, config *config.Config, ) *LoginExecutor { exe := LoginExecutor{ FlagSet: flag.NewFlagSet("login", flag.ExitOnError), printer: printer, config: config, } exe.Usage = commandUsageFunc("login", "Logs into an account on GoToSocial", exe.FlagSet) exe.StringVar(&exe.instance, "instance", "", "The instance that you want to log into") return &exe } // SwitchExecutor is the executor for the switch command. type SwitchExecutor struct { *flag.FlagSet printer *printer.Printer config *config.Config accountName string to string } func NewSwitchExecutor( printer *printer.Printer, config *config.Config, ) *SwitchExecutor { exe := SwitchExecutor{ FlagSet: flag.NewFlagSet("switch", flag.ExitOnError), printer: printer, config: config, } exe.Usage = commandUsageFunc("switch", "Performs a switch operation (e.g. switching between logged in accounts)", exe.FlagSet) exe.StringVar(&exe.accountName, "account-name", "", "The name of the account") exe.StringVar(&exe.to, "to", "", "TBC") return &exe } // VersionExecutor is the executor for the version command. type VersionExecutor struct { *flag.FlagSet printer *printer.Printer full bool binaryVersion string buildTime string goVersion string gitCommit string } func NewVersionExecutor( printer *printer.Printer, binaryVersion string, buildTime string, goVersion string, gitCommit string, ) *VersionExecutor { exe := VersionExecutor{ FlagSet: flag.NewFlagSet("version", flag.ExitOnError), printer: printer, binaryVersion: binaryVersion, buildTime: buildTime, goVersion: goVersion, gitCommit: gitCommit, } exe.Usage = commandUsageFunc("version", "Prints the application's version and build information", exe.FlagSet) exe.BoolVar(&exe.full, "full", false, "Set to true to print the build information in full") return &exe } // WhoamiExecutor is the executor for the whoami command. type WhoamiExecutor struct { *flag.FlagSet printer *printer.Printer config *config.Config } func NewWhoamiExecutor( printer *printer.Printer, config *config.Config, ) *WhoamiExecutor { exe := WhoamiExecutor{ FlagSet: flag.NewFlagSet("whoami", flag.ExitOnError), printer: printer, config: config, } exe.Usage = commandUsageFunc("whoami", "Prints the account that you are currently logged into", exe.FlagSet) return &exe }