checkpoint: now generate the executors in the executors package
This commit is contained in:
parent
d1f5e57703
commit
a3a1adbf14
6 changed files with 91 additions and 104 deletions
|
@ -140,8 +140,6 @@ func run() error {
|
|||
executor.CommandLogin: executor.NewLoginExecutor(
|
||||
enbasPrinter,
|
||||
enbasConfig,
|
||||
executor.CommandLogin,
|
||||
executor.CommandSummaryLookup(executor.CommandLogin),
|
||||
),
|
||||
executor.CommandMute: executor.NewMuteOrUnmuteExecutor(
|
||||
enbasPrinter,
|
||||
|
@ -193,18 +191,14 @@ func run() error {
|
|||
),
|
||||
executor.CommandVersion: executor.NewVersionExecutor(
|
||||
enbasPrinter,
|
||||
executor.CommandVersion,
|
||||
executor.CommandSummaryLookup(executor.CommandVersion),
|
||||
binaryVersion,
|
||||
buildTime,
|
||||
goVersion,
|
||||
gitCommit,
|
||||
),
|
||||
executor.CommandWhoami: executor.NewWhoAmIExecutor(
|
||||
executor.CommandWhoami: executor.NewWhoamiExecutor(
|
||||
enbasPrinter,
|
||||
enbasConfig,
|
||||
executor.CommandWhoami,
|
||||
executor.CommandSummaryLookup(executor.CommandWhoami),
|
||||
),
|
||||
}
|
||||
|
||||
|
|
85
internal/executor/executors.go
Normal file
85
internal/executor/executors.go
Normal file
|
@ -0,0 +1,85 @@
|
|||
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
|
||||
}
|
||||
|
||||
// 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
|
||||
}
|
|
@ -1,40 +1,14 @@
|
|||
package executor
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"strings"
|
||||
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/client"
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/utilities"
|
||||
)
|
||||
|
||||
type LoginExecutor struct {
|
||||
*flag.FlagSet
|
||||
|
||||
printer *printer.Printer
|
||||
config *config.Config
|
||||
instance string
|
||||
}
|
||||
|
||||
func NewLoginExecutor(printer *printer.Printer, config *config.Config, name, summary string) *LoginExecutor {
|
||||
loginExe := LoginExecutor{
|
||||
FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
|
||||
|
||||
printer: printer,
|
||||
config: config,
|
||||
instance: "",
|
||||
}
|
||||
|
||||
loginExe.StringVar(&loginExe.instance, flagInstance, "", "Specify the instance that you want to login to.")
|
||||
|
||||
loginExe.Usage = commandUsageFunc(name, summary, loginExe.FlagSet)
|
||||
|
||||
return &loginExe
|
||||
}
|
||||
|
||||
func (l *LoginExecutor) Execute() error {
|
||||
var err error
|
||||
|
||||
|
|
|
@ -1,51 +1,7 @@
|
|||
package executor
|
||||
|
||||
import (
|
||||
"flag"
|
||||
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
|
||||
)
|
||||
|
||||
type VersionExecutor struct {
|
||||
*flag.FlagSet
|
||||
|
||||
printer *printer.Printer
|
||||
showFullVersion bool
|
||||
binaryVersion string
|
||||
buildTime string
|
||||
goVersion string
|
||||
gitCommit string
|
||||
}
|
||||
|
||||
func NewVersionExecutor(
|
||||
printer *printer.Printer,
|
||||
name,
|
||||
summary,
|
||||
binaryVersion,
|
||||
buildTime,
|
||||
goVersion,
|
||||
gitCommit string,
|
||||
) *VersionExecutor {
|
||||
command := VersionExecutor{
|
||||
FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
|
||||
|
||||
printer: printer,
|
||||
binaryVersion: binaryVersion,
|
||||
buildTime: buildTime,
|
||||
goVersion: goVersion,
|
||||
gitCommit: gitCommit,
|
||||
showFullVersion: false,
|
||||
}
|
||||
|
||||
command.BoolVar(&command.showFullVersion, flagFull, false, "prints the full build information")
|
||||
|
||||
command.Usage = commandUsageFunc(name, summary, command.FlagSet)
|
||||
|
||||
return &command
|
||||
}
|
||||
|
||||
func (v *VersionExecutor) Execute() error {
|
||||
v.printer.PrintVersion(v.showFullVersion, v.binaryVersion, v.buildTime, v.goVersion, v.gitCommit)
|
||||
v.printer.PrintVersion(v.full, v.binaryVersion, v.buildTime, v.goVersion, v.gitCommit)
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,40 +1,18 @@
|
|||
package executor
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/config"
|
||||
"codeflow.dananglin.me.uk/apollo/enbas/internal/printer"
|
||||
)
|
||||
|
||||
type WhoAmIExecutor struct {
|
||||
*flag.FlagSet
|
||||
|
||||
printer *printer.Printer
|
||||
config *config.Config
|
||||
}
|
||||
|
||||
func NewWhoAmIExecutor(printer *printer.Printer, config *config.Config, name, summary string) *WhoAmIExecutor {
|
||||
whoExe := WhoAmIExecutor{
|
||||
FlagSet: flag.NewFlagSet(name, flag.ExitOnError),
|
||||
|
||||
printer: printer,
|
||||
config: config,
|
||||
}
|
||||
|
||||
whoExe.Usage = commandUsageFunc(name, summary, whoExe.FlagSet)
|
||||
|
||||
return &whoExe
|
||||
}
|
||||
|
||||
func (c *WhoAmIExecutor) Execute() error {
|
||||
config, err := config.NewCredentialsConfigFromFile(c.config.CredentialsFile)
|
||||
func (e *WhoamiExecutor) Execute() error {
|
||||
config, err := config.NewCredentialsConfigFromFile(e.config.CredentialsFile)
|
||||
if err != nil {
|
||||
return fmt.Errorf("unable to load the credential config: %w", err)
|
||||
}
|
||||
|
||||
c.printer.PrintInfo("You are logged in as '" + config.CurrentAccount + "'.\n")
|
||||
e.printer.PrintInfo("You are logged in as '" + config.CurrentAccount + "'.\n")
|
||||
|
||||
return nil
|
||||
}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package internal
|
||||
|
||||
//go:generate go run ../cmd/enbas-cli-generators --path-to-enbas-cli-schema ../schema/enbas_cli_schema.json --path-to-enbas-executors ../executors-wip.go
|
||||
//go:generate go run ../cmd/enbas-cli-generators --path-to-enbas-cli-schema ../schema/enbas_cli_schema.json --path-to-enbas-executors ./executor/executors.go
|
||||
|
||||
const (
|
||||
ApplicationName = "enbas"
|
||||
|
|
Loading…
Reference in a new issue