From d9ca0deb08b3f607ac914e45b9afde768e9306e0 Mon Sep 17 00:00:00 2001 From: "Quentin McGaw (desktop)" Date: Fri, 23 Jul 2021 18:52:38 +0000 Subject: [PATCH] Maint: cli package interface rework - return concrete struct type - split interface is sub-interfaces --- internal/cli/ci.go | 2 +- internal/cli/cli.go | 23 +++++++++-------------- internal/cli/clientkey.go | 6 +++++- internal/cli/healthcheck.go | 6 +++++- internal/cli/openvpnconfig.go | 6 +++++- internal/cli/update.go | 6 +++++- 6 files changed, 30 insertions(+), 19 deletions(-) diff --git a/internal/cli/ci.go b/internal/cli/ci.go index efbaac57..3ac38bee 100644 --- a/internal/cli/ci.go +++ b/internal/cli/ci.go @@ -2,6 +2,6 @@ package cli import "context" -func (c *cli) CI(context context.Context) error { +func (c *CLI) CI(context context.Context) error { return nil } diff --git a/internal/cli/cli.go b/internal/cli/cli.go index 8507dbd7..1fe7d82f 100644 --- a/internal/cli/cli.go +++ b/internal/cli/cli.go @@ -1,26 +1,21 @@ // Package cli defines an interface CLI to run command line operations. package cli -import ( - "context" +var _ CLIer = (*CLI)(nil) - "github.com/qdm12/golibs/logging" - "github.com/qdm12/golibs/params" -) - -type CLI interface { - ClientKey(args []string) error - HealthCheck(ctx context.Context, env params.Env, logger logging.Logger) error - OpenvpnConfig(logger logging.Logger) error - Update(ctx context.Context, args []string, logger logging.Logger) error +type CLIer interface { + ClientKeyFormatter + HealthChecker + OpenvpnConfigMaker + Updater } -type cli struct { +type CLI struct { repoServersPath string } -func New() CLI { - return &cli{ +func New() *CLI { + return &CLI{ repoServersPath: "./internal/constants/servers.json", } } diff --git a/internal/cli/clientkey.go b/internal/cli/clientkey.go index 68ee51f7..e897e5ca 100644 --- a/internal/cli/clientkey.go +++ b/internal/cli/clientkey.go @@ -10,7 +10,11 @@ import ( "github.com/qdm12/gluetun/internal/constants" ) -func (c *cli) ClientKey(args []string) error { +type ClientKeyFormatter interface { + ClientKey(args []string) error +} + +func (c *CLI) ClientKey(args []string) error { flagSet := flag.NewFlagSet("clientkey", flag.ExitOnError) filepath := flagSet.String("path", constants.ClientKey, "file path to the client.key file") if err := flagSet.Parse(args); err != nil { diff --git a/internal/cli/healthcheck.go b/internal/cli/healthcheck.go index 0e38e58d..51f05eba 100644 --- a/internal/cli/healthcheck.go +++ b/internal/cli/healthcheck.go @@ -12,7 +12,11 @@ import ( "github.com/qdm12/golibs/params" ) -func (c *cli) HealthCheck(ctx context.Context, env params.Env, +type HealthChecker interface { + HealthCheck(ctx context.Context, env params.Env, logger logging.Logger) error +} + +func (c *CLI) HealthCheck(ctx context.Context, env params.Env, logger logging.Logger) error { // Extract the health server port from the configuration. config := configuration.Health{} diff --git a/internal/cli/openvpnconfig.go b/internal/cli/openvpnconfig.go index 0ff7d41d..45b4adb8 100644 --- a/internal/cli/openvpnconfig.go +++ b/internal/cli/openvpnconfig.go @@ -13,7 +13,11 @@ import ( "github.com/qdm12/golibs/params" ) -func (c *cli) OpenvpnConfig(logger logging.Logger) error { +type OpenvpnConfigMaker interface { + OpenvpnConfig(logger logging.Logger) error +} + +func (c *CLI) OpenvpnConfig(logger logging.Logger) error { var allSettings configuration.Settings err := allSettings.Read(params.NewEnv(), logger) if err != nil { diff --git a/internal/cli/update.go b/internal/cli/update.go index f3aaf51e..8eaa5156 100644 --- a/internal/cli/update.go +++ b/internal/cli/update.go @@ -25,7 +25,11 @@ var ( ErrWriteToFile = errors.New("cannot write updated information to file") ) -func (c *cli) Update(ctx context.Context, args []string, logger logging.Logger) error { +type Updater interface { + Update(ctx context.Context, args []string, logger logging.Logger) error +} + +func (c *CLI) Update(ctx context.Context, args []string, logger logging.Logger) error { options := configuration.Updater{CLI: true} var endUserMode, maintainerMode, updateAll bool flagSet := flag.NewFlagSet("update", flag.ExitOnError)