113 lines
2.7 KiB
Go
113 lines
2.7 KiB
Go
package executor
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
|
|
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
|
|
)
|
|
|
|
// 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", "Log 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", "Perform 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
|
|
}
|