From bc261d9e833022380ea8d45c296f0a445ec73a7d Mon Sep 17 00:00:00 2001 From: Alexander Bezobchuk Date: Tue, 7 Jul 2020 13:20:09 -0400 Subject: [PATCH] version: Remove Viper (#6628) * version: remove viper * Remove home flag gets * fix: tests --- server/util.go | 2 +- simapp/simd/cmd/genaccounts.go | 4 +- version/command.go | 65 ++++++++++++++++--------------- version/version_test.go | 23 ++++++----- x/genutil/client/cli/collect.go | 3 +- x/genutil/client/cli/init.go | 3 +- x/genutil/client/cli/init_test.go | 8 ++-- 7 files changed, 55 insertions(+), 53 deletions(-) diff --git a/server/util.go b/server/util.go index 862c93345..6727c26d6 100644 --- a/server/util.go +++ b/server/util.go @@ -183,7 +183,7 @@ func AddCommands(rootCmd *cobra.Command, appCreator AppCreator, appExport AppExp tendermintCmd, ExportCmd(appExport), flags.LineBreak, - version.Cmd, + version.NewVersionCommand(), ) } diff --git a/simapp/simd/cmd/genaccounts.go b/simapp/simd/cmd/genaccounts.go index 26802fbbd..7b579ab3a 100644 --- a/simapp/simd/cmd/genaccounts.go +++ b/simapp/simd/cmd/genaccounts.go @@ -6,7 +6,6 @@ import ( "fmt" "github.com/spf13/cobra" - "github.com/tendermint/tendermint/libs/cli" "github.com/cosmos/cosmos-sdk/client" "github.com/cosmos/cosmos-sdk/client/flags" @@ -47,8 +46,7 @@ contain valid denominations. Accounts may optionally be supplied with vesting pa serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config - homeDir, _ := cmd.Flags().GetString(cli.HomeFlag) - config.SetRoot(homeDir) + config.SetRoot(clientCtx.HomeDir) keyringBackend, _ := cmd.Flags().GetString(flags.FlagKeyringBackend) clientHome, _ := cmd.Flags().GetString(flagClientHome) diff --git a/version/command.go b/version/command.go index 80163db2d..c4c9cf787 100644 --- a/version/command.go +++ b/version/command.go @@ -2,49 +2,50 @@ package version import ( "encoding/json" + "strings" "github.com/spf13/cobra" - "github.com/spf13/viper" - yaml "gopkg.in/yaml.v2" - "github.com/tendermint/tendermint/libs/cli" + yaml "gopkg.in/yaml.v2" ) const flagLong = "long" -func init() { - Cmd.Flags().Bool(flagLong, false, "Print long version information") -} +func NewVersionCommand() *cobra.Command { + cmd := &cobra.Command{ + Use: "version", + Short: "Print the application binary version information", + RunE: func(cmd *cobra.Command, _ []string) error { + verInfo := NewInfo() -// Cmd prints out the application's version information passed via build flags. -var Cmd = &cobra.Command{ - Use: "version", - Short: "Print the app version", - RunE: runVersionCmd, -} + if long, _ := cmd.Flags().GetBool(flagLong); !long { + cmd.Println(verInfo.Version) + return nil + } -func runVersionCmd(cmd *cobra.Command, args []string) error { - verInfo := NewInfo() + var bz []byte + var err error - if !viper.GetBool(flagLong) { - cmd.Println(verInfo.Version) - return nil + output, _ := cmd.Flags().GetString(cli.OutputFlag) + switch strings.ToLower(output) { + case "json": + bz, err = json.Marshal(verInfo) + + default: + bz, err = yaml.Marshal(&verInfo) + } + + if err != nil { + return err + } + + cmd.Println(string(bz)) + return nil + }, } - var bz []byte - var err error + cmd.Flags().Bool(flagLong, false, "Print long version information") + cmd.Flags().StringP(cli.OutputFlag, "o", "text", "Output format (text|json)") - switch viper.GetString(cli.OutputFlag) { - case "json": - bz, err = json.Marshal(verInfo) - default: - bz, err = yaml.Marshal(&verInfo) - } - - if err != nil { - return err - } - - cmd.Println(string(bz)) - return nil + return cmd } diff --git a/version/version_test.go b/version/version_test.go index 7fad6572a..12e9deb0b 100644 --- a/version/version_test.go +++ b/version/version_test.go @@ -6,7 +6,6 @@ import ( "runtime" "testing" - "github.com/spf13/viper" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" "github.com/tendermint/tendermint/libs/cli" @@ -40,20 +39,26 @@ go version go1.14 linux/amd64` } func Test_runVersionCmd(t *testing.T) { - require.NotNil(t, Cmd) - _, mockOut, _ := tests.ApplyMockIO(Cmd) + cmd := NewVersionCommand() + _, mockOut, _ := tests.ApplyMockIO(cmd) - viper.Set(cli.OutputFlag, "") - viper.Set(flagLong, false) - require.NoError(t, runVersionCmd(Cmd, nil)) + cmd.SetArgs([]string{ + fmt.Sprintf("--%s=''", cli.OutputFlag), + fmt.Sprintf("--%s=false", flagLong), + }) + + require.NoError(t, cmd.Execute()) assert.Equal(t, "\n", mockOut.String()) mockOut.Reset() - viper.Set(cli.OutputFlag, "json") - viper.Set(flagLong, true) + cmd.SetArgs([]string{ + fmt.Sprintf("--%s=json", cli.OutputFlag), + fmt.Sprintf("--%s=true", flagLong), + }) + info := NewInfo() stringInfo, err := json.Marshal(info) require.NoError(t, err) - require.NoError(t, runVersionCmd(Cmd, nil)) + require.NoError(t, cmd.Execute()) assert.Equal(t, string(stringInfo)+"\n", mockOut.String()) } diff --git a/x/genutil/client/cli/collect.go b/x/genutil/client/cli/collect.go index 601303eb1..6ac56d26b 100644 --- a/x/genutil/client/cli/collect.go +++ b/x/genutil/client/cli/collect.go @@ -29,8 +29,7 @@ func CollectGenTxsCmd(genBalIterator types.GenesisBalancesIterator, defaultNodeH clientCtx := client.GetClientContextFromCmd(cmd) cdc := clientCtx.JSONMarshaler - home, _ := cmd.Flags().GetString(cli.HomeFlag) - config.SetRoot(home) + config.SetRoot(clientCtx.HomeDir) nodeID, valPubKey, err := genutil.InitializeNodeValidatorFiles(config) if err != nil { diff --git a/x/genutil/client/cli/init.go b/x/genutil/client/cli/init.go index a0b7249ea..bdc6e091e 100644 --- a/x/genutil/client/cli/init.go +++ b/x/genutil/client/cli/init.go @@ -72,8 +72,7 @@ func InitCmd(mbm module.BasicManager, defaultNodeHome string) *cobra.Command { serverCtx := server.GetServerContextFromCmd(cmd) config := serverCtx.Config - home, _ := cmd.Flags().GetString(cli.HomeFlag) - config.SetRoot(home) + config.SetRoot(clientCtx.HomeDir) chainID, _ := cmd.Flags().GetString(flags.FlagChainID) if chainID == "" { diff --git a/x/genutil/client/cli/init_test.go b/x/genutil/client/cli/init_test.go index 400030453..a23476e8e 100644 --- a/x/genutil/client/cli/init_test.go +++ b/x/genutil/client/cli/init_test.go @@ -52,7 +52,7 @@ func TestInitCmd(t *testing.T) { require.NoError(t, err) serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()) + clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()).WithHomeDir(home) ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) @@ -81,7 +81,7 @@ func TestEmptyState(t *testing.T) { require.NoError(t, err) serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()) + clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()).WithHomeDir(home) ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) @@ -128,14 +128,14 @@ func TestStartStandAlone(t *testing.T) { require.NoError(t, err) serverCtx := server.NewContext(viper.New(), cfg, logger) - clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()) + clientCtx := client.Context{}.WithJSONMarshaler(makeCodec()).WithHomeDir(home) ctx := context.Background() ctx = context.WithValue(ctx, client.ClientContextKey, &clientCtx) ctx = context.WithValue(ctx, server.ServerContextKey, serverCtx) cmd := InitCmd(testMbm, home) - cmd.SetArgs([]string{"appnode-test", fmt.Sprintf("--%s=%s", cli.HomeFlag, home)}) + cmd.SetArgs([]string{"appnode-test"}) require.NoError(t, cmd.ExecuteContext(ctx))