From cef9bed85a9371ee4f53118bd77832545a1aa7f8 Mon Sep 17 00:00:00 2001 From: Louis Garman <75728+leg100@users.noreply.github.com> Date: Sun, 31 Oct 2021 20:05:54 +0000 Subject: [PATCH] Docker Image (#38) --- cmd/otf/login.go | 7 +------ cmd/otf/login_test.go | 17 +---------------- cmd/otf/main.go | 16 +++++++++++++--- cmd/otf/main_test.go | 8 ++++++++ cmd/otf/organization.go | 13 ++----------- cmd/otf/workspace.go | 21 ++++++--------------- 6 files changed, 31 insertions(+), 51 deletions(-) diff --git a/cmd/otf/login.go b/cmd/otf/login.go index 416096367..c6f4933bb 100644 --- a/cmd/otf/login.go +++ b/cmd/otf/login.go @@ -3,7 +3,6 @@ package main import ( "fmt" - "github.com/leg100/otf/http" "github.com/spf13/cobra" ) @@ -11,9 +10,7 @@ const ( DummyToken = "dummy" ) -func LoginCommand(store KVStore) *cobra.Command { - var address string - +func LoginCommand(store KVStore, address string) *cobra.Command { cmd := &cobra.Command{ Use: "login", Short: "Login to OTF", @@ -28,7 +25,5 @@ func LoginCommand(store KVStore) *cobra.Command { }, } - cmd.Flags().StringVar(&address, "address", http.DefaultAddress, "Address of OTF instance") - return cmd } diff --git a/cmd/otf/login_test.go b/cmd/otf/login_test.go index 37531834f..7013668ed 100644 --- a/cmd/otf/login_test.go +++ b/cmd/otf/login_test.go @@ -1,7 +1,6 @@ package main import ( - "os" "testing" "github.com/stretchr/testify/assert" @@ -11,23 +10,9 @@ import ( func TestLoginCommand(t *testing.T) { var store KVStore = KVMap(make(map[string]string)) - cmd := LoginCommand(store) + cmd := LoginCommand(store, "localhost:8080") require.NoError(t, cmd.Execute()) token, _ := store.Load("localhost:8080") assert.Equal(t, "dummy", token) } - -func TestLoginCommandWithExplicitAddress(t *testing.T) { - // Ensure env var doesn't interfere with test - os.Unsetenv("OTF_ADDRESS") - - var store KVStore = KVMap(make(map[string]string)) - - cmd := LoginCommand(store) - cmd.SetArgs([]string{"--address", "otf.dev:8080"}) - require.NoError(t, cmd.Execute()) - - token, _ := store.Load("otf.dev:8080") - assert.Equal(t, "dummy", token) -} diff --git a/cmd/otf/main.go b/cmd/otf/main.go index 76bbe3569..a0d7f14d4 100644 --- a/cmd/otf/main.go +++ b/cmd/otf/main.go @@ -6,6 +6,7 @@ import ( "os" cmdutil "github.com/leg100/otf/cmd" + "github.com/leg100/otf/http" "github.com/spf13/cobra" ) @@ -21,11 +22,20 @@ func main() { } func Run(ctx context.Context, args []string) error { + cfg, err := http.NewConfig(LoadCredentials) + if err != nil { + return err + } + cmd := &cobra.Command{ Use: "otf", SilenceUsage: true, SilenceErrors: true, + Run: func(cmd *cobra.Command, args []string) {}, } + + cmd.PersistentFlags().StringVar(&cfg.Address, "address", http.DefaultAddress, "Address of OTF server") + cmd.SetArgs(args) store, err := NewCredentialsStore() @@ -33,9 +43,9 @@ func Run(ctx context.Context, args []string) error { return err } - cmd.AddCommand(LoginCommand(store)) - cmd.AddCommand(OrganizationCommand()) - cmd.AddCommand(WorkspaceCommand()) + cmd.AddCommand(LoginCommand(store, cfg.Address)) + cmd.AddCommand(OrganizationCommand(cfg)) + cmd.AddCommand(WorkspaceCommand(cfg)) cmdutil.SetFlagsFromEnvVariables(cmd.Flags()) diff --git a/cmd/otf/main_test.go b/cmd/otf/main_test.go index ec82cf7f8..9ee9d5ba3 100644 --- a/cmd/otf/main_test.go +++ b/cmd/otf/main_test.go @@ -26,6 +26,14 @@ func TestMain(t *testing.T) { name: "login", args: []string{"login", "-h"}, }, + { + name: "login and address", + args: []string{"login", "-h", "--address", "test.abc:1234"}, + }, + { + name: "address", + args: []string{"--address", "test.abc:1234"}, + }, { name: "organization new", args: []string{"organizations", "new", "-h"}, diff --git a/cmd/otf/organization.go b/cmd/otf/organization.go index badcb7725..b50184f7d 100644 --- a/cmd/otf/organization.go +++ b/cmd/otf/organization.go @@ -1,26 +1,17 @@ package main import ( - "os" - "github.com/leg100/otf/http" "github.com/spf13/cobra" ) -func OrganizationCommand() *cobra.Command { - cfg, err := http.NewConfig(LoadCredentials) - if err != nil { - panic(err.Error()) - } - +func OrganizationCommand(factory http.ClientFactory) *cobra.Command { cmd := &cobra.Command{ Use: "organizations", Short: "Organization management", } - cmd.Flags().StringVar(&cfg.Address, "address", http.DefaultAddress, "Address of OTF server") - cmd.Flags().StringVar(&cfg.Token, "token", os.Getenv("OTF_TOKEN"), "Authentication token") - cmd.AddCommand(OrganizationNewCommand(cfg)) + cmd.AddCommand(OrganizationNewCommand(factory)) return cmd } diff --git a/cmd/otf/workspace.go b/cmd/otf/workspace.go index bc6ebd04c..fda3e7c7b 100644 --- a/cmd/otf/workspace.go +++ b/cmd/otf/workspace.go @@ -1,30 +1,21 @@ package main import ( - "os" - "github.com/leg100/otf/http" "github.com/spf13/cobra" ) -func WorkspaceCommand() *cobra.Command { - cfg, err := http.NewConfig(LoadCredentials) - if err != nil { - panic(err.Error()) - } - +func WorkspaceCommand(factory http.ClientFactory) *cobra.Command { cmd := &cobra.Command{ Use: "workspaces", Short: "Workspace management", } - cmd.Flags().StringVar(&cfg.Address, "address", http.DefaultAddress, "Address of OTF server") - cmd.Flags().StringVar(&cfg.Token, "token", os.Getenv("OTF_TOKEN"), "Authentication token") - cmd.AddCommand(WorkspaceListCommand(cfg)) - cmd.AddCommand(WorkspaceShowCommand(cfg)) - cmd.AddCommand(WorkspaceEditCommand(cfg)) - cmd.AddCommand(WorkspaceLockCommand(cfg)) - cmd.AddCommand(WorkspaceUnlockCommand(cfg)) + cmd.AddCommand(WorkspaceListCommand(factory)) + cmd.AddCommand(WorkspaceShowCommand(factory)) + cmd.AddCommand(WorkspaceEditCommand(factory)) + cmd.AddCommand(WorkspaceLockCommand(factory)) + cmd.AddCommand(WorkspaceUnlockCommand(factory)) return cmd }